|
|
@@ -87,17 +87,12 @@ void CPosPrinterWorker::HandleShouyinPrinter()
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
- if (SendDataToShouyinPirnter(data))
|
|
|
- {
|
|
|
- std::lock_guard<std::mutex> lock(m_shouyin_printer_mutex);
|
|
|
- if (!m_shouyin_printer_queue.empty() && m_shouyin_printer_queue.front() == data)
|
|
|
- {
|
|
|
- m_shouyin_printer_queue.pop();
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
+ SendDataToShouyinPirnter(data);
|
|
|
+
|
|
|
+ std::lock_guard<std::mutex> lock(m_shouyin_printer_mutex);
|
|
|
+ if (!m_shouyin_printer_queue.empty() && m_shouyin_printer_queue.front() == data)
|
|
|
{
|
|
|
- Sleep(1000);
|
|
|
+ m_shouyin_printer_queue.pop();
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -127,17 +122,12 @@ void CPosPrinterWorker::HandleBiaoqianPrinter()
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
- if (SendDataToBiaoqianPirnter(data))
|
|
|
- {
|
|
|
- std::lock_guard<std::mutex> lock(m_biaoqian_printer_mutex);
|
|
|
- if (!m_biaoqian_printer_queue.empty() && m_biaoqian_printer_queue.front() == data)
|
|
|
- {
|
|
|
- m_biaoqian_printer_queue.pop();
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
+ SendDataToBiaoqianPirnter(data);
|
|
|
+
|
|
|
+ std::lock_guard<std::mutex> lock(m_biaoqian_printer_mutex);
|
|
|
+ if (!m_biaoqian_printer_queue.empty() && m_biaoqian_printer_queue.front() == data)
|
|
|
{
|
|
|
- Sleep(1000);
|
|
|
+ m_biaoqian_printer_queue.pop();
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -165,25 +155,18 @@ void CPosPrinterWorker::HandleChufangPrinter()
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
- if (SendDataToChufangPirnter(chufang_data))
|
|
|
- {
|
|
|
- std::lock_guard<std::mutex> lock(m_chufang_printer_mutex);
|
|
|
- if (!m_chufang_printer_queue.empty())
|
|
|
- {
|
|
|
- m_chufang_printer_queue.pop();
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
+ SendDataToChufangPirnter(chufang_data);
|
|
|
+
|
|
|
+ std::lock_guard<std::mutex> lock(m_chufang_printer_mutex);
|
|
|
+ if (!m_chufang_printer_queue.empty())
|
|
|
{
|
|
|
- Sleep(1000);
|
|
|
+ m_chufang_printer_queue.pop();
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-bool CPosPrinterWorker::SendDataToShouyinPirnter(std::string data)
|
|
|
+void CPosPrinterWorker::SendDataToShouyinPirnter(std::string data)
|
|
|
{
|
|
|
- bool bSuccess = false;
|
|
|
-
|
|
|
//默认是句柄模式
|
|
|
int nType = 1;
|
|
|
|
|
|
@@ -203,7 +186,7 @@ bool CPosPrinterWorker::SendDataToShouyinPirnter(std::string data)
|
|
|
|
|
|
if (m_hShouyinPorts.size() == 0)
|
|
|
{
|
|
|
- return false;
|
|
|
+ return;
|
|
|
}
|
|
|
}
|
|
|
else if (printer_leixing == "usb")
|
|
|
@@ -214,7 +197,7 @@ bool CPosPrinterWorker::SendDataToShouyinPirnter(std::string data)
|
|
|
bool ret = InitOneUsb(ws_printer_usb, 1);
|
|
|
if (ret == false)
|
|
|
{
|
|
|
- return false;
|
|
|
+ return;
|
|
|
}
|
|
|
}
|
|
|
else if (printer_leixing == "bingkou")
|
|
|
@@ -222,7 +205,7 @@ bool CPosPrinterWorker::SendDataToShouyinPirnter(std::string data)
|
|
|
bool ret = InitBingkou();
|
|
|
if (ret == false)
|
|
|
{
|
|
|
- return false;
|
|
|
+ return;
|
|
|
}
|
|
|
}
|
|
|
else if (printer_leixing == "chuankou")
|
|
|
@@ -248,15 +231,13 @@ bool CPosPrinterWorker::SendDataToShouyinPirnter(std::string data)
|
|
|
LOG_INFO("网口打印机连接失败,IP地址:" << wangkou_ip.c_str() << ",错误信息:" << err.c_str());
|
|
|
|
|
|
MessageBoxW(NULL, (L"小票网口打印机连接失败,IP地址:" + CLewaimaiString::UTF8ToUnicode(wangkou_ip)).c_str(), L"打印机连接失败", MB_OK);
|
|
|
- return false;
|
|
|
+ return;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//开始发送数据
|
|
|
if (nType == 1)
|
|
|
{
|
|
|
- bSuccess = true;
|
|
|
-
|
|
|
//USB、串口、并口,走这里
|
|
|
for (std::vector<HANDLE>::iterator it = m_hShouyinPorts.begin(); it != m_hShouyinPorts.end(); it++)
|
|
|
{
|
|
|
@@ -268,8 +249,7 @@ bool CPosPrinterWorker::SendDataToShouyinPirnter(std::string data)
|
|
|
if (!ret || dwWrite != (DWORD)data.length())
|
|
|
{
|
|
|
LOG_INFO("WriteWithTimeout Failed or partial write!, hPort:" << hPort << ", dwWrite:" << dwWrite);
|
|
|
- bSuccess = false;
|
|
|
- break;
|
|
|
+ continue;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -279,12 +259,10 @@ bool CPosPrinterWorker::SendDataToShouyinPirnter(std::string data)
|
|
|
try
|
|
|
{
|
|
|
boost::asio::write(m_socket, boost::asio::buffer(data.c_str(), data.length()));
|
|
|
- bSuccess = true;
|
|
|
}
|
|
|
catch (const std::exception& e)
|
|
|
{
|
|
|
LOG_INFO("网口打印机发送消息失败,错误信息:" << e.what());
|
|
|
- bSuccess = false;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -301,14 +279,10 @@ bool CPosPrinterWorker::SendDataToShouyinPirnter(std::string data)
|
|
|
{
|
|
|
m_socket.close();
|
|
|
}
|
|
|
-
|
|
|
- return bSuccess;
|
|
|
}
|
|
|
|
|
|
-bool CPosPrinterWorker::SendDataToBiaoqianPirnter(std::string data)
|
|
|
+void CPosPrinterWorker::SendDataToBiaoqianPirnter(std::string data)
|
|
|
{
|
|
|
- bool bSuccess = false;
|
|
|
-
|
|
|
//默认是句柄模式
|
|
|
int nType = 1;
|
|
|
|
|
|
@@ -327,7 +301,7 @@ bool CPosPrinterWorker::SendDataToBiaoqianPirnter(std::string data)
|
|
|
bool ret = InitOneUsb(ws_printer_usb, 2);
|
|
|
if (ret == false)
|
|
|
{
|
|
|
- return false;
|
|
|
+ return;
|
|
|
}
|
|
|
}
|
|
|
else if (printer_leixing == "wangkou")
|
|
|
@@ -349,7 +323,7 @@ bool CPosPrinterWorker::SendDataToBiaoqianPirnter(std::string data)
|
|
|
LOG_INFO("网口打印机连接失败,IP地址:" << wangkou_ip.c_str() << ",错误信息:" << err.c_str());
|
|
|
|
|
|
MessageBoxW(NULL, (L"标签网口打印机连接失败,IP地址:" + CLewaimaiString::UTF8ToUnicode(wangkou_ip)).c_str(), L"打印机连接失败", MB_OK);
|
|
|
- return false;
|
|
|
+ return;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -367,8 +341,7 @@ bool CPosPrinterWorker::SendDataToBiaoqianPirnter(std::string data)
|
|
|
if (!ret || dwWrite != (DWORD)data.length())
|
|
|
{
|
|
|
LOG_INFO("WriteWithTimeout Failed or partial write!, hPort:" << hPort << ", dwWrite:" << dwWrite);
|
|
|
- bSuccess = false;
|
|
|
- break;
|
|
|
+ continue;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -378,12 +351,10 @@ bool CPosPrinterWorker::SendDataToBiaoqianPirnter(std::string data)
|
|
|
try
|
|
|
{
|
|
|
boost::asio::write(m_socket, boost::asio::buffer(data.c_str(), data.length()));
|
|
|
- bSuccess = true;
|
|
|
}
|
|
|
catch (const std::exception& e)
|
|
|
{
|
|
|
LOG_INFO("网口打印机发送消息失败,错误信息:" << e.what());
|
|
|
- bSuccess = false;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -399,14 +370,10 @@ bool CPosPrinterWorker::SendDataToBiaoqianPirnter(std::string data)
|
|
|
{
|
|
|
m_socket.close();
|
|
|
}
|
|
|
-
|
|
|
- return bSuccess;
|
|
|
}
|
|
|
|
|
|
-bool CPosPrinterWorker::SendDataToChufangPirnter(ChufangPrinterContent chufang_data)
|
|
|
+void CPosPrinterWorker::SendDataToChufangPirnter(ChufangPrinterContent chufang_data)
|
|
|
{
|
|
|
- bool bSuccess = false;
|
|
|
-
|
|
|
boost::asio::io_context m_io;
|
|
|
boost::asio::ip::tcp::socket m_socket(m_io);
|
|
|
|
|
|
@@ -428,26 +395,20 @@ bool CPosPrinterWorker::SendDataToChufangPirnter(ChufangPrinterContent chufang_d
|
|
|
LOG_INFO("厨房网口打印机连接失败,IP地址:" << ip.c_str() << ",错误信息:" << err.c_str());
|
|
|
|
|
|
MessageBoxW(NULL, (L"厨房网口打印机连接失败,IP地址:" + CLewaimaiString::UTF8ToUnicode(ip)).c_str(), L"打印机连接失败", MB_OK);
|
|
|
-
|
|
|
- //连接失败了,处理下一个厨房打印机
|
|
|
- return false;
|
|
|
+ return;
|
|
|
}
|
|
|
|
|
|
//网口走这里
|
|
|
try
|
|
|
{
|
|
|
boost::asio::write(m_socket, boost::asio::buffer(data.c_str(), data.length()));
|
|
|
- bSuccess = true;
|
|
|
}
|
|
|
catch (const std::exception& e)
|
|
|
{
|
|
|
LOG_INFO("网口打印机发送消息失败,错误信息:" << e.what());
|
|
|
- bSuccess = false;
|
|
|
}
|
|
|
|
|
|
m_socket.close();
|
|
|
-
|
|
|
- return bSuccess;
|
|
|
}
|
|
|
|
|
|
//自动识别用于收银小票的USB打印机列表
|