#pragma once #include "../pch/pch.h" #include "../zhipuzi/CWaimaiOrder.h" #include "../zhipuzi/CDiandanOrder.h" #include "../zhipuzi/CJiaobanOrder.h" #include "../zhipuzi/CHuiyuanchognzhiOrder.h" class ChufangPrinterContent { public: std::string ip; std::string data; }; //这个类,负责把订单数据转化成打印格式,用于后续打印(这个类本身不处理打印,只处理数据格式) class CPosPrinterData { public: CPosPrinterData(); ~CPosPrinterData(); std::string PrintWaimaiOrderShouyin(CWaimaiOrder& order); std::string PrintWaimaiOrderBiaoqian(CWaimaiOrder& order); std::vector PrintWaimaiOrderChufang(CWaimaiOrder& order); std::string PrintDiandanOrderShouyin(CDiandanOrder& order); std::string PrintDiandanOrderBiaoqian(CDiandanOrder& order); std::vector PrintDiandanOrderChufang(CDiandanOrder& order); std::string PrintJiaobanOrder(CJiaobaoOrder& order); std::string PrintHuiyuanchongzhiOrder(CHuiyuanchongzhiOrder& order); std::string GetQianxiangCommand(); private: //把要打印的内容,写到string里面 void WriteData(string msg); void WriteBuf(const unsigned char* buf, int len); //小票打印机和厨房打印的处理方法 int POS_Reset(void); int POS_FeedLine(void); int POS_Feed(void); int POS_SetMotionUnit(int x, int y); int POS_SET_MOVE_X(); int POS_MOVE_X(); int POS_SET_ABS_X(int x, int y); int POS_SET_PRINT_AREA(int x, int y); int POS_TextOut(string abc, bool is_double_width = false, bool is_double_height = false, int align_type = 0); int POS_CutPaper(); void POS_OutQRCode(std::string dataString); void POS_OutBmp(std::wstring ImagePath); void POS_QIANXIANG(); //标签打印机的处理方法 void BIAOQIAN_Reset(int nWidth, int nHeight, int nDirection); void BIAOQIAN_FORMFEED(); void BIAOQIAN_TEXTOUT(std::string content, int x, int y, int x_multiplication, int y_multiplication); std::string BIAOQIAN_TEXTGet(std::string content, int x, int y, int x_multiplication, int y_multiplication); void BIAOQIAN_PRINT(); void BIAOQIAN_CLS(); //字符空格计算的辅助函数 void CalWord(string s, int& nHanzi, int& nZimu); //对小票打印和厨房打印的名字进行换行处理 std::vector HandleFoodname(std::string oldname, int guige = 1); std::string HandleFoodItemPrice(std::string oldprice, int guige = 1); std::string HandleFoodQuantity(std::string oldquantity, int guige = 1); std::string HandleFoodTotalPrice(std::string oldprice, int guige = 1); //对标签打印的名字进行换行处理 std::vector HandleBiaoqianFoodname(std::string oldname, int nBiaoqianWdith); private: //把所有打印命令汇总到一起,然后一次性发送给打印机,这个变量用来存储一个订单的所有命令 std::string m_print_content; };