소스 검색

标签打印机增加网口的

zhangyang 2 년 전
부모
커밋
63c1d56cd8

+ 15 - 0
bin/Win32/Debug/zhipuzi_pos_windows/skin/setting_biaoqian_print.xml

@@ -1,11 +1,26 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Window>
+	<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"/>
 		<Combo name="setting_biaoqian_printer_usb" padding="0,9,0,0" width="800" height="26" tooltip="请点击这里选择您的标签打印机usb端口" 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" >
 		</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_border_white.png' corner='5,5,5,5'" hotimage="file='btn_border_white_Hover.png' corner='5,5,5,5'" pushedimage="file='btn_border_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
zhipuzi_pos_windows/page/CSettingPageUI.cpp


+ 69 - 14
zhipuzi_pos_windows/print/CPosPrinterQueue.cpp

@@ -284,28 +284,78 @@ void CPosPrinterQueue::SendDataToShouyinPirnter(std::string data)
 
 void CPosPrinterQueue::SendDataToBiaoqianPirnter(std::string data)
 {
-	std::string printer_usb = CSetting::GetInstance()->GetParam("setting_biaoqian_printer_usb");
-	std::wstring ws_printer_usb = CLewaimaiString::UTF8ToUnicode(printer_usb);
+	//默认是句柄模式
+	int nType = 1;
+
+	//用于厨房打印机和网口类型的收银小票打印
+	boost::asio::io_service m_io;
+	boost::asio::ip::tcp::socket m_socket(m_io);
 
-	//连接usb端口
-	bool ret = InitOneUsb(ws_printer_usb, 2);
-	if (ret == false)
+	std::string printer_leixing = CSetting::GetInstance()->GetParam("setting_biaoqian_printer_leixing");
+
+	if (printer_leixing == "usb")
 	{
-		return;
+		std::string printer_usb = CSetting::GetInstance()->GetParam("setting_biaoqian_printer_usb");
+		std::wstring ws_printer_usb = CLewaimaiString::UTF8ToUnicode(printer_usb);
+
+		//连接usb端口
+		bool ret = InitOneUsb(ws_printer_usb, 2);
+		if (ret == false)
+		{
+			return;
+		}
 	}
+	else if (printer_leixing == "wangkou")
+	{
+		//改为网口模式
+		nType = 2;
 
-	//USB、串口、并口,走这里
-	for (std::vector<HANDLE>::iterator it = m_hBiaoqianPorts.begin(); it != m_hBiaoqianPorts.end(); it++)
+		std::string wangkou_ip = CSetting::GetInstance()->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;
+		}
+	}
+
+	//开始发送数据
+	if (nType == 1)
 	{
-		HANDLE hPort = *it;
+		//USB、串口、并口,走这里
+		for (std::vector<HANDLE>::iterator it = m_hBiaoqianPorts.begin(); it != m_hBiaoqianPorts.end(); it++)
+		{
+			HANDLE hPort = *it;
 
-		//同步写数据
-		DWORD dwWrite;
+			//同步写数据
+			DWORD dwWrite;
 
-		BOOL ret = WriteFile(hPort, data.c_str(), data.length(), &dwWrite, NULL);
-		if (!ret)
+			BOOL ret = WriteFile(hPort, data.c_str(), data.length(), &dwWrite, NULL);
+			if (!ret)
+			{
+				LOG_INFO("WriteFile Failed!, hPort:" << hPort);
+			}
+		}
+	}
+	else
+	{
+		//网口走这里
+		try
 		{
-			LOG_INFO("WriteFile Failed!, hPort:" << hPort);
+			m_socket.write_some(boost::asio::buffer(data.c_str(), data.length()));
+		}
+		catch (const std::exception& e)
+		{
+			LOG_INFO("网口打印机发送消息失败,错误信息:" << e.what());
 		}
 	}
 
@@ -316,6 +366,11 @@ void CPosPrinterQueue::SendDataToBiaoqianPirnter(std::string data)
 	}
 
 	m_hBiaoqianPorts.clear();
+
+	if (nType == 2)
+	{
+		m_socket.close();
+	}
 }
 
 void CPosPrinterQueue::SendDataToChufangPirnter(ChufangPrinterContent chufang_data)

+ 12 - 0
zhipuzi_pos_windows/tool/CSetting.cpp

@@ -223,12 +223,24 @@ void CSetting::Init()
 	}
 
 	//±êÇ©´òÓ¡²ÎÊýÉèÖÃ
+	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())
 	{