Selaa lähdekoodia

标签打印机增加网口的

张洋 3 vuotta sitten
vanhempi
commit
f1ec771e92

+ 15 - 0
bin/Win32/Debug/lewaimai_pos_windows/skin/setting.xml

@@ -128,6 +128,14 @@
 						<Label text="新订单自动打印标签纸" width="260" />
 						<CheckBox name="setting_is_new_waimai_biaoqian_printer" width="72" height="45" normalimage="file='switchbutton.png' source='0,0,143,91'" selectedimage="file='switchbutton.png' source='0,182,143,273'"/>
 					</HorizontalLayout>
+					
+					<HorizontalLayout height="44">
+						<Label text="标签打印机接口类型" width="260"/>
+						<Combo name="setting_biaoqian_printer_leixing" padding="0,9,0,0" width="140" height="26" tooltip="请点击这里选择您的标签打印机接口类型" normalimage="file='Setting_Combox_Normal.png' corner='2,2,24,2'" hotimage="file='Setting_Combox_Hover.png' corner='2,2,24,2'" pushedimage="Setting_Combox_Click.png' corner='2,2,24,2'" textpadding="10,1,1,1" >
+							<ListLabelElement text="usb" selected="true"/>
+							<ListLabelElement text="网口" />
+						</Combo>
+					</HorizontalLayout>
 
 					<HorizontalLayout height="44" name="setting_biaoqian_printer_usb_layout">
 						<Label text="标签打印机usb端口选择" width="260"/>
@@ -135,6 +143,13 @@
 						</Combo>
 					</HorizontalLayout>
 					
+					<HorizontalLayout height="56" name="setting_biaoqian_printer_wangkou_layout">
+						<Label text="网口IP地址" width="260"/>
+						<Edit name="setting_biaoqian_printer_wangkou_ip" width="200" height="32" padding="0,12,0,12" normalimage="file='Chat_InputBox_BG.png' corner='4,4,4,4'" hotimage="file='Chat_InputBox_BG_Hover.png' corner='4,4,4,4'" />
+
+						<Button name="setting_biaoqian_printer_wangkouk_save_btn" align="center" width="100" height="38" padding="20,8,0,3" text="保存" normalimage="file='Btn_White.png' corner='5,5,5,5'" hotimage="file='Btn_White_Hover.png' corner='5,5,5,5'" pushedimage="file='Btn_White_Click.png' corner='5,5,5,5'" />
+					</HorizontalLayout>
+					
 					<HorizontalLayout height="44">
 						<Label text="标签纸尺寸规格" width="260"/>
 						<Combo name="setting_biaoqian_printer_guige" padding="0,9,0,0" width="140" height="26" tooltip="请点击这里选择您的标签纸尺寸规格" normalimage="file='Setting_Combox_Normal.png' corner='2,2,24,2'" hotimage="file='Setting_Combox_Hover.png' corner='2,2,24,2'" pushedimage="Setting_Combox_Click.png' corner='2,2,24,2'" textpadding="10,1,1,1" >

BIN
bin/Win32/Release/lewaimai_pos_windows/skin/skin.lwm


BIN
bin/Win32/Release/setup/lewaimai_pos_windows_setup_1.0.3.7.exe


+ 1 - 1
bin/Win32/Release/setup/乐外卖接单软件安装脚本.nsi

@@ -2,7 +2,7 @@
 
 ; HM NIS Edit Wizard helper defines
 !define PRODUCT_NAME "乐外卖接单软件"
-!define PRODUCT_VERSION "1.0.3.7"
+!define PRODUCT_VERSION "1.0.3.8"
 !define PRODUCT_PUBLISHER "深圳市迅享科技有限公司"
 !define PRODUCT_WEB_SITE "https://www.lewaimai.com"
 !define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\${PRODUCT_NAME}.exe"

BIN
lewaimai_pos_windows/resource/lewaimai_pos_windows.aps


BIN
lewaimai_pos_windows/resource/lewaimai_pos_windows.rc


+ 37 - 6
lewaimai_pos_windows/tool/CPosPrinter.cpp

@@ -955,10 +955,44 @@ void CPosPrinter::PrintWaimaiOrderShouyin(CWaimaiOrder& order)
 
 void CPosPrinter::PrintWaimaiOrderBiaoqian(CWaimaiOrder& order)
 {
-    m_type = 1;
+	//设置模式,后面输出数据不会错
+	m_type = 1;
+
+	std::string printer_leixing = CSetting::GetParam("setting_biaoqian_printer_leixing");
+
+	if (printer_leixing == "usb")
+	{
+		std::string printer_usb = CSetting::GetParam("setting_biaoqian_printer_usb");
+		std::wstring ws_printer_usb = CLewaimaiString::UTF8ToUnicode(printer_usb);
+
+		bool ret = InitOneUsb(ws_printer_usb);
+		if (ret == false)
+		{
+			return;
+		}
+	}
+	else if (printer_leixing == "wangkou")
+	{
+		m_type = 2;
 
-    std::string printer_usb = CSetting::GetParam("setting_biaoqian_printer_usb");
-    std::wstring ws_printer_usb = CLewaimaiString::UTF8ToUnicode(printer_usb);
+		std::string wangkou_ip = CSetting::GetParam("setting_biaoqian_printer_wangkou_ip");
+
+		//初始化连接
+		try
+		{
+			boost::asio::ip::tcp::endpoint ep(boost::asio::ip::address::from_string(wangkou_ip.c_str()), 9100);
+			m_socket.connect(ep);
+		}
+		catch (std::exception& e)
+		{
+			std::string err = e.what();
+			LOG_INFO("网口打印机连接失败,IP地址:" << wangkou_ip.c_str() << ",错误信息:" << err.c_str());
+
+			MessageBoxW(NULL, (L"厨房网口打印机连接失败,IP地址:" + CLewaimaiString::UTF8ToUnicode(wangkou_ip)).c_str(), L"打印机连接失败", MB_OK);
+
+			return;
+		}
+	}
 
 	//读取标签纸的规格和方向
 	int biaoqian_width, biaoqian_height;
@@ -1000,9 +1034,6 @@ void CPosPrinter::PrintWaimaiOrderBiaoqian(CWaimaiOrder& order)
 		nDIRECTION = 0;
 	}
 
-    //连接usb端口
-    InitOneUsb(ws_printer_usb);
-
 	//初始化标签打印机
 	BIAOQIAN_Reset(biaoqian_width, biaoqian_height, nDIRECTION);
 

+ 12 - 0
lewaimai_pos_windows/tool/CSetting.cpp

@@ -257,12 +257,24 @@ void CSetting::Init()
 	{
 		m_paramsMap[setting_is_new_waimai_biaoqian_printer] = "0";
 	}
+	
+	std::string setting_biaoqian_printer_leixing = "setting_biaoqian_printer_leixing";
+	if (m_paramsMap.find(setting_biaoqian_printer_leixing) == m_paramsMap.end())
+	{
+		m_paramsMap[setting_biaoqian_printer_leixing] = "usb";
+	}
 
 	std::string setting_biaoqian_printer_usb = "setting_biaoqian_printer_usb";
 	if (m_paramsMap.find(setting_biaoqian_printer_usb) == m_paramsMap.end())
 	{
 		m_paramsMap[setting_biaoqian_printer_usb] = "";
 	}
+	
+	std::string setting_biaoqian_printer_wangkou_ip = "setting_biaoqian_printer_wangkou_ip";
+	if (m_paramsMap.find(setting_biaoqian_printer_wangkou_ip) == m_paramsMap.end())
+	{
+		m_paramsMap[setting_biaoqian_printer_wangkou_ip] = "";
+	}
 
 	std::string setting_biaoqian_printer_guige = "setting_biaoqian_printer_guige";
 	if (m_paramsMap.find(setting_biaoqian_printer_guige) == m_paramsMap.end())

+ 132 - 0
lewaimai_pos_windows/wnd/CMainWnd.cpp

@@ -607,6 +607,13 @@ void CMainWnd::HandleClickMsg(TNotifyUI& msg)
             CSetting::SetParam("setting_is_new_waimai_biaoqian_printer", "1");
         }
     }
+	else if(name == _T("setting_biaoqian_printer_wangkouk_save_btn"))
+    {
+        CEditUI* wangkou_ip = static_cast<CEditUI*>(m_pm.FindControl(_T("setting_biaoqian_printer_wangkou_ip")));
+        wstring ip = wangkou_ip->GetText();
+
+        CSetting::SetParam("setting_biaoqian_printer_wangkou_ip", CLewaimaiString::UnicodeToUTF8(ip));
+    }
     else if(name == _T("setting_is_new_waimai_chufang_printer"))
     {
         CCheckBoxUI* box = static_cast<CCheckBoxUI*>(m_pm.FindControl(_T("setting_is_new_waimai_chufang_printer")));
@@ -1080,6 +1087,67 @@ void CMainWnd::HandleItemSelectMsg(TNotifyUI& msg)
 
         CSetting::SetParam("setting_printer_usb", CLewaimaiString::UnicodeToUTF8(usb_device));
     }
+	else if(name == _T("setting_biaoqian_printer_leixing"))
+    {
+        CComboUI* com = static_cast<CComboUI*>(m_pm.FindControl(_T("setting_biaoqian_printer_leixing")));
+
+        CHorizontalLayoutUI* usb_layout = static_cast<CHorizontalLayoutUI*>(m_pm.FindControl(_T("setting_biaoqian_printer_usb_layout")));
+        CHorizontalLayoutUI* wangkou_layout = static_cast<CHorizontalLayoutUI*>(m_pm.FindControl(_T("setting_biaoqian_printer_wangkou_layout")));
+
+        if(com->GetCurSel() == 0)
+        {
+            CSetting::SetParam("setting_biaoqian_printer_leixing", "usb");
+
+            //显示usb布局
+            usb_layout->SetVisible(true);
+            wangkou_layout->SetVisible(false);
+
+            //usb下拉框默认选中
+            CComboUI* com_usb = static_cast<CComboUI*>(m_pm.FindControl(_T("setting_biaoqian_printer_usb")));
+            com_usb->RemoveAll();
+
+            //数据库中保存的之前的设置
+            std::string setting_printer_usb = CSetting::GetParam("setting_biaoqian_printer_usb");
+            std::wstring ws_setting_printer_usb = CLewaimaiString::UTF8ToUnicode(setting_printer_usb);
+
+            CPosPrinter printer;
+            printer.InitUsb();
+            std::vector<std::wstring> usb_devices = printer.getUsbDevices();
+
+            int i = 0;
+            int nSelect = -1;
+
+            for(std::vector<std::wstring>::iterator it = usb_devices.begin(); it != usb_devices.end(); it++)
+            {
+                CListLabelElementUI* elem = new CListLabelElementUI();
+                elem->SetText((*it).c_str());
+                com_usb->Add(elem);
+
+                if(*it == ws_setting_printer_usb)
+                {
+                    nSelect = i;
+                }
+
+                i++;
+            }
+
+            com_usb->SetInternVisible(true);
+            com_usb->SelectItem(nSelect, false, false);
+            com_usb->SetText(CLewaimaiString::UTF8ToUnicode(setting_printer_usb).c_str());
+        }
+        else if(com->GetCurSel() == 1)
+        {
+            CSetting::SetParam("setting_biaoqian_printer_leixing", "wangkou");
+
+            usb_layout->SetVisible(false);
+            wangkou_layout->SetVisible(true);
+
+            std::string setting_biaoqian_printer_wangkou_ip = CSetting::GetParam("setting_biaoqian_printer_wangkou_ip");
+
+            CEditUI* ip_edit = static_cast<CEditUI*>(m_pm.FindControl(_T("setting_biaoqian_printer_wangkou_ip")));
+            ip_edit->SetText(CLewaimaiString::UTF8ToUnicode(setting_biaoqian_printer_wangkou_ip).c_str());
+        }
+    }
     else if(name == _T("setting_biaoqian_printer_usb"))
     {
         CComboUI* com = static_cast<CComboUI*>(m_pm.FindControl(_T("setting_biaoqian_printer_usb")));
@@ -1855,6 +1923,70 @@ void CMainWnd::InitSettingStatus()
     {
         box->Selected(false, false);
     }
+	
+	com = static_cast<CComboUI*>(m_pm.FindControl(_T("setting_biaoqian_printer_leixing")));
+    setting_printer_leixing = CSetting::GetParam("setting_biaoqian_printer_leixing");
+
+    usb_layout = static_cast<CHorizontalLayoutUI*>(m_pm.FindControl(_T("setting_biaoqian_printer_usb_layout")));
+    wangkou_layout = static_cast<CHorizontalLayoutUI*>(m_pm.FindControl(_T("setting_biaoqian_printer_wangkou_layout")));
+
+    if(setting_printer_leixing == "usb")
+    {
+        com->SetInternVisible(true);
+        com->SelectItem(0, false, false);
+        com->SetText(L"usb");
+
+        //显示usb布局
+        usb_layout->SetVisible(true);
+        wangkou_layout->SetVisible(false);
+
+        //usb下拉框默认选中
+        CComboUI* com_usb = static_cast<CComboUI*>(m_pm.FindControl(_T("setting_biaoqian_printer_usb")));
+        com_usb->RemoveAll();
+
+        //数据库中保存的之前的设置
+        std::string setting_printer_usb = CSetting::GetParam("setting_biaoqian_printer_usb");
+        std::wstring ws_setting_printer_usb = CLewaimaiString::UTF8ToUnicode(setting_printer_usb);
+
+        CPosPrinter printer;
+        printer.InitUsb();
+        std::vector<std::wstring> usb_devices = printer.getUsbDevices();
+
+        int i = 0;
+        int nSelect = -1;
+
+        for(std::vector<std::wstring>::iterator it = usb_devices.begin(); it != usb_devices.end(); it++)
+        {
+            CListLabelElementUI* elem = new CListLabelElementUI();
+            elem->SetText((*it).c_str());
+            com_usb->Add(elem);
+
+            if(*it == ws_setting_printer_usb)
+            {
+                nSelect = i;
+            }
+
+            i++;
+        }
+
+        com_usb->SetInternVisible(true);
+        com_usb->SelectItem(nSelect, false, false);
+        com_usb->SetText(CLewaimaiString::UTF8ToUnicode(setting_printer_usb).c_str());
+    }
+    else if(setting_printer_leixing == "wangkou")
+    {
+        com->SetInternVisible(true);
+        com->SelectItem(1, false, false);
+        com->SetText(L"网口");
+
+        usb_layout->SetVisible(false);
+        wangkou_layout->SetVisible(true);
+
+        std::string setting_biaoqian_printer_wangkou_ip = CSetting::GetParam("setting_biaoqian_printer_wangkou_ip");
+
+        CEditUI* ip_edit = static_cast<CEditUI*>(m_pm.FindControl(_T("setting_biaoqian_printer_wangkou_ip")));
+        ip_edit->SetText(CLewaimaiString::UTF8ToUnicode(setting_biaoqian_printer_wangkou_ip).c_str());
+    }
 
     //usb下拉框默认选中
     CComboUI* com_usb = static_cast<CComboUI*>(m_pm.FindControl(_T("setting_biaoqian_printer_usb")));