zhangyang 6 vuotta sitten
vanhempi
commit
e312a16d8e
1 muutettua tiedostoa jossa 47 lisäystä ja 10 poistoa
  1. 47 10
      lewaimai_pos_windows/tool/CPosPrinter.cpp

+ 47 - 10
lewaimai_pos_windows/tool/CPosPrinter.cpp

@@ -164,12 +164,11 @@ bool CPosPrinter::InitShouyin()
             if(!SetCommState(hPort, &dcb))
             {
                 LOG_INFO("set baudRate failed!");
+
+				CloseHandle(hPort);
                 continue;
             }
 
-            //设置端口缓冲
-            SetupComm(hPort, 1024, 1024);
-
             //设定通讯端口超时参数
             COMMTIMEOUTS tmouts;
             tmouts.ReadIntervalTimeout = 100;
@@ -179,6 +178,9 @@ bool CPosPrinter::InitShouyin()
             tmouts.WriteTotalTimeoutMultiplier = 100;
             SetCommTimeouts(hPort, &tmouts);
 
+			//设置端口缓冲
+			SetupComm(hPort, 1024, 1024);
+
             //清除通讯端口缓存
             PurgeComm(hPort, PURGE_TXCLEAR | PURGE_RXCLEAR | PURGE_TXABORT | PURGE_RXABORT);
 
@@ -345,8 +347,10 @@ void CPosPrinter::PrintWaimaiOrderShouyin(CWaimaiOrder& order)
     for(int i = 0; i < n_lianshu; i++)
     {
         POS_Reset();
+
         string shop_name = "#" + order.m_restaurant_number + "  " + CLewaimaiString::UTF8ToANSI(order.m_shop_name);
         POS_TextOut(shop_name, true, true, 1);
+
         POS_FeedLine();
         POS_FeedLine();
         bool setting_printer_quhuo_big = false;
@@ -670,14 +674,22 @@ void CPosPrinter::PrintWaimaiOrderShouyin(CWaimaiOrder& order)
         }
 
         POS_TextOut("支付方式:" + CLewaimaiString::UTF8ToANSI(order.m_pay_type), false, setting_printer_pay_big, 2);
-        POS_FeedLine();
 
         POS_FeedLine();
-        POS_FeedLine();
+
+		//走纸几行再切
+		POS_FeedLine();
+		POS_FeedLine();
+		POS_FeedLine();
+		POS_FeedLine();
+		POS_FeedLine();
 
         POS_CutPaper();
     }
 
+	//还原打印机初始设置,有些傻逼收银设备居然不是自动调用,比如哗啦啦
+	POS_Reset();
+
     //关闭设备
     for(std::vector<PrinterHandle>::iterator it = m_hPorts.begin(); it != m_hPorts.end(); it++)
     {
@@ -689,6 +701,7 @@ void CPosPrinter::PrintWaimaiOrderChufang(CWaimaiOrder& order)
 {
     //设置模式,后面输出数据不会错
     m_type = 2;
+
     //读取厨房打印机信息
     std::vector<ChufangPrinter> total_printers = CSetting::getChufangPrints();
 
@@ -707,6 +720,7 @@ void CPosPrinter::PrintWaimaiOrderChufang(CWaimaiOrder& order)
         {
             std::string err = e.what();
             LOG_INFO("连接厨房打印机失败,IP地址:" << ip.c_str() << ",错误信息:" << err.c_str());
+
             //连接失败了,处理下一个厨房打印机
             continue;
         }
@@ -720,6 +734,7 @@ void CPosPrinter::PrintWaimaiOrderChufang(CWaimaiOrder& order)
             POS_Reset();
             POS_TextOut("派工单", true, true, 1);
             POS_FeedLine();
+
             POS_FeedLine();
 
             //预设选项
@@ -820,8 +835,17 @@ void CPosPrinter::PrintWaimaiOrderChufang(CWaimaiOrder& order)
             //结束商品详情打印
             POS_TextOut(lines);
             POS_FeedLine();
+
             POS_FeedLine();
+			POS_FeedLine();
+			POS_FeedLine();
+			POS_FeedLine();
+			POS_FeedLine();
+
             POS_CutPaper();
+
+			//还原打印机初始设置,有些傻逼收银设备居然不是自动调用,比如哗啦啦
+			POS_Reset();
         }
         else
         {
@@ -832,6 +856,7 @@ void CPosPrinter::PrintWaimaiOrderChufang(CWaimaiOrder& order)
             {
                 POS_TextOut("派工单", true, true, 1);
                 POS_FeedLine();
+
                 POS_FeedLine();
 
                 //预设选项
@@ -914,11 +939,20 @@ void CPosPrinter::PrintWaimaiOrderChufang(CWaimaiOrder& order)
                 }
 
                 //结束商品详情打印
-                POS_TextOut(lines);
-                POS_FeedLine();
-                POS_FeedLine();
+                POS_TextOut(lines);                
+				POS_FeedLine();
+
+				POS_FeedLine();
+				POS_FeedLine();
+				POS_FeedLine();
+				POS_FeedLine();
+				POS_FeedLine();
+
                 POS_CutPaper();
             }
+
+			//还原打印机初始设置,有些傻逼收银设备居然不是自动调用,比如哗啦啦
+			POS_Reset();
         }
 
         m_socket.close();
@@ -1155,10 +1189,13 @@ int CPosPrinter::POS_TextOut(string abc, bool is_double_width, bool is_double_he
     return 0;
 }
 
+/*
+ *打印机切纸,直接切不走纸
+ **/
 int CPosPrinter::POS_CutPaper()
 {
-    char s[4] = { 0x1D, 0x56, 0x41, 0x00 };
-    WriteBuf(s, 4);
+    char s[4] = { 0x1D, 0x56, 0x01};
+    WriteBuf(s, 3);
     return 0;
 }