|
|
@@ -1314,6 +1314,10 @@ void CSettingPageUI::HandleClickMsg(TNotifyUI& msg)
|
|
|
{
|
|
|
this->StartTongbuBiaoqiancheng();
|
|
|
}
|
|
|
+ else if (name == L"setting_tiaomacheng_tongburejian")
|
|
|
+ {
|
|
|
+ this->StartTongbuRejian();
|
|
|
+ }
|
|
|
else if (name == _T("setting_logout"))
|
|
|
{
|
|
|
//退出登录
|
|
|
@@ -1824,4 +1828,184 @@ void CSettingPageUI::HandleTongbuBiaoqiancheng()
|
|
|
std::string result = buf.begin();
|
|
|
|
|
|
m_socket.close();
|
|
|
+}
|
|
|
+
|
|
|
+void CSettingPageUI::StartTongbuRejian()
|
|
|
+{
|
|
|
+ std::thread(&CSettingPageUI::HandleTongbuRejian, this).detach();
|
|
|
+}
|
|
|
+
|
|
|
+void CSettingPageUI::HandleTongbuRejian()
|
|
|
+{
|
|
|
+ boost::asio::io_service m_io;
|
|
|
+ boost::asio::ip::tcp::socket m_socket(m_io);
|
|
|
+
|
|
|
+ //读取厨房打印机信息
|
|
|
+ std::string ip = CSetting::GetParam("setting_tiaomacheng_ip");
|
|
|
+
|
|
|
+ //初始化连接
|
|
|
+ try
|
|
|
+ {
|
|
|
+ boost::asio::ip::tcp::endpoint ep(boost::asio::ip::address::from_string(ip.c_str()), 4001);
|
|
|
+ m_socket.connect(ep);
|
|
|
+ }
|
|
|
+ catch (std::exception& e)
|
|
|
+ {
|
|
|
+ std::string err = e.what();
|
|
|
+ LOG_INFO("条码秤连接失败,IP地址:" << ip.c_str() << ",错误信息:" << err.c_str());
|
|
|
+
|
|
|
+ m_errinfo = L"条码秤连接失败,请检查IP设置,IP地址:" + CLewaimaiString::UTF8ToUnicode(ip);
|
|
|
+ MessageBoxW(NULL, m_errinfo.c_str(), L"条码秤连接失败", MB_OK);
|
|
|
+
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ std::string data = "";
|
|
|
+
|
|
|
+ std::map<int, std::string> pluMap;
|
|
|
+
|
|
|
+ CSqlite3 sqlite;
|
|
|
+ std::vector<CFood> foods = sqlite.GetFoodForTiaomacheng();
|
|
|
+ for (std::vector<CFood>::iterator it = foods.begin(); it != foods.end(); it++)
|
|
|
+ {
|
|
|
+ //处理PLU;
|
|
|
+ int n_plu = atoi(it->weight_plu_code.c_str());
|
|
|
+ if (n_plu < 1)
|
|
|
+ {
|
|
|
+ //无效的plu
|
|
|
+ continue;;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (n_plu > 142)
|
|
|
+ {
|
|
|
+ //也不处理
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ string plu = to_string(n_plu);
|
|
|
+ plu = CLewaimaiString::BuZifuLeft(plu, 4 - plu.length(), '0');
|
|
|
+
|
|
|
+ pluMap[n_plu] = plu;
|
|
|
+ }
|
|
|
+
|
|
|
+ //前36个
|
|
|
+ data += "!0L00A";
|
|
|
+
|
|
|
+ for (int i = 1; i <= 36; i++)
|
|
|
+ {
|
|
|
+ std::string s_i = to_string(i);
|
|
|
+
|
|
|
+ std::string buqi_i = CLewaimaiString::BuZifuLeft(s_i, 4 - s_i.length(), '0');
|
|
|
+
|
|
|
+ if (pluMap.find(i) != pluMap.end())
|
|
|
+ {
|
|
|
+ //说明有这个plu的
|
|
|
+ data += pluMap[i];
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ //没找到这个plu
|
|
|
+ data += buqi_i;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ data += "B";
|
|
|
+ data += 0x0d;
|
|
|
+ data += 0x0a;
|
|
|
+
|
|
|
+ //37到72
|
|
|
+ data += "!0L01A";
|
|
|
+
|
|
|
+ for (int i = 37; i <= 72; i++)
|
|
|
+ {
|
|
|
+ std::string s_i = to_string(i);
|
|
|
+
|
|
|
+ std::string buqi_i = CLewaimaiString::BuZifuLeft(s_i, 4 - s_i.length(), '0');
|
|
|
+
|
|
|
+ if (pluMap.find(i) != pluMap.end())
|
|
|
+ {
|
|
|
+ //说明有这个plu的
|
|
|
+ data += pluMap[i];
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ //没找到这个plu
|
|
|
+ data += buqi_i;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ data += "B";
|
|
|
+ data += 0x0d;
|
|
|
+ data += 0x0a;
|
|
|
+
|
|
|
+ //73到108
|
|
|
+ data += "!0L02A";
|
|
|
+
|
|
|
+ for (int i = 73; i <= 108; i++)
|
|
|
+ {
|
|
|
+ std::string s_i = to_string(i);
|
|
|
+
|
|
|
+ std::string buqi_i = CLewaimaiString::BuZifuLeft(s_i, 4 - s_i.length(), '0');
|
|
|
+
|
|
|
+ if (pluMap.find(i) != pluMap.end())
|
|
|
+ {
|
|
|
+ //说明有这个plu的
|
|
|
+ data += pluMap[i];
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ //没找到这个plu
|
|
|
+ data += buqi_i;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ data += "B";
|
|
|
+ data += 0x0d;
|
|
|
+ data += 0x0a;
|
|
|
+
|
|
|
+ //109到142(108+36=144,最后2个空着)
|
|
|
+ data += "!0L03A";
|
|
|
+
|
|
|
+ for (int i = 109; i <= 142; i++)
|
|
|
+ {
|
|
|
+ std::string s_i = to_string(i);
|
|
|
+
|
|
|
+ std::string buqi_i = CLewaimaiString::BuZifuLeft(s_i, 4 - s_i.length(), '0');
|
|
|
+
|
|
|
+ if (pluMap.find(i) != pluMap.end())
|
|
|
+ {
|
|
|
+ //说明有这个plu的
|
|
|
+ data += pluMap[i];
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ //没找到这个plu
|
|
|
+ data += buqi_i;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //完了这里要补最后的0
|
|
|
+ data += "00000000";
|
|
|
+
|
|
|
+ data += "B";
|
|
|
+ data += 0x0d;
|
|
|
+ data += 0x0a;
|
|
|
+
|
|
|
+ //网口走这里
|
|
|
+ try
|
|
|
+ {
|
|
|
+ m_socket.write_some(boost::asio::buffer(data.c_str(), data.length()));
|
|
|
+ }
|
|
|
+ catch (const std::exception& e)
|
|
|
+ {
|
|
|
+ LOG_INFO("条码秤发送消息失败,错误信息:" << e.what());
|
|
|
+ }
|
|
|
+
|
|
|
+ boost::array<char, 128> buf;
|
|
|
+ boost::system::error_code error;
|
|
|
+
|
|
|
+ size_t len = m_socket.read_some(boost::asio::buffer(buf), error);
|
|
|
+ std::string result = buf.begin();
|
|
|
+
|
|
|
+ m_socket.close();
|
|
|
}
|