|
|
@@ -17,9 +17,12 @@ CPosPrinter::~CPosPrinter()
|
|
|
|
|
|
}
|
|
|
|
|
|
+/*
|
|
|
+ *找到所有可用的小票打印机,包括USB、并口、串口3个类型
|
|
|
+ **/
|
|
|
bool CPosPrinter::InitShouyin()
|
|
|
{
|
|
|
- //遍历USB设备,找到POS打印机路径
|
|
|
+ //先找USB的
|
|
|
|
|
|
//设备路径
|
|
|
TCHAR* szDevicePath[MAX_DEVICE];
|
|
|
@@ -63,12 +66,61 @@ bool CPosPrinter::InitShouyin()
|
|
|
|
|
|
//开始添加并口的端口
|
|
|
std::wstring LptStr = L"lpt1";
|
|
|
- HANDLE hPort = CreateFile(LptStr.c_str(), GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0);
|
|
|
- if (hPort != INVALID_HANDLE_VALUE)
|
|
|
+ HANDLE hPort = CreateFile(LptStr.c_str(), GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
|
|
|
+ if (hPort == INVALID_HANDLE_VALUE)
|
|
|
{
|
|
|
+ DWORD error = GetLastError();
|
|
|
+ //LOG_INFO("error:" << error);
|
|
|
+
|
|
|
+ if (error == 2)
|
|
|
+ {
|
|
|
+ //没有指定的文件
|
|
|
+ //LOG_INFO("no lpt1!");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ //这个表示并口可以使用
|
|
|
m_hPorts.push_back(hPort);
|
|
|
}
|
|
|
|
|
|
+ //开始添加串口
|
|
|
+ int comNum = 9;
|
|
|
+ for (int i = 1; i <= 9; i++)
|
|
|
+ {
|
|
|
+ std::wstring com2Str = L"com" + CLewaimaiString::ANSIToUnicode(to_string(i));
|
|
|
+ hPort = CreateFile(com2Str.c_str(), GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
|
|
|
+ if (hPort == INVALID_HANDLE_VALUE)
|
|
|
+ {
|
|
|
+ DWORD error = GetLastError();
|
|
|
+ //LOG_INFO("error:" << error);
|
|
|
+
|
|
|
+ if (error == 2)
|
|
|
+ {
|
|
|
+ //没有指定的文件
|
|
|
+ //LOG_INFO("no com2!");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ //扎到了可用的串口,设置串口波特率
|
|
|
+ DCB dcb;
|
|
|
+ dcb.DCBlength = sizeof(dcb);
|
|
|
+
|
|
|
+ GetCommState(hPort, &dcb);
|
|
|
+
|
|
|
+ //佳博的串口打印机,默认是这个波特率
|
|
|
+ dcb.BaudRate = 19200;
|
|
|
+
|
|
|
+ if (!SetCommState(hPort, &dcb))
|
|
|
+ {
|
|
|
+ LOG_INFO("set baudRate failed!");
|
|
|
+ }
|
|
|
+
|
|
|
+ m_hPorts.push_back(hPort);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
@@ -384,6 +436,12 @@ void CPosPrinter::PrintWaimaiOrderShouyin(CWaimaiOrder& order)
|
|
|
|
|
|
POS_CutPaper();
|
|
|
}
|
|
|
+
|
|
|
+ //关闭设备
|
|
|
+ for (std::vector<HANDLE>::iterator it = m_hPorts.begin(); it != m_hPorts.end(); it++)
|
|
|
+ {
|
|
|
+ CloseHandle(*it);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
void CPosPrinter::PrintWaimaiOrderChufang(CWaimaiOrder& order)
|