Browse Source

#IQRV #comment [DevAdapter] keba/2021.0520.01

gifur 4 years ago
parent
commit
c9f424e1a0
32 changed files with 325 additions and 6038 deletions
  1. 1 1
      DevAdapter/CMakeLists.txt
  2. 1 1
      DevAdapter/keba/CMakeLists.txt
  3. 1 1
      DevAdapter/keba/CardIssuer.keba.1.1/CkLog.h
  4. 16 1
      DevAdapter/keba/ContactlessCard.keba.1.1/CRT_RFIC_Ctrl.cpp
  5. 2 1
      DevAdapter/keba/ContactlessCard.keba.1.1/CRT_RFIC_Ctrl.h
  6. 1 1
      DevAdapter/keba/ContactlessCard.keba.1.1/CkLog.h
  7. 1 1
      DevAdapter/keba/FingerPrint.keba.1.1/CkLog.h
  8. 1 1
      DevAdapter/keba/Gpio.keba.1.1/CkLog.h
  9. 22 20
      DevAdapter/keba/Gpio.keba.1.1/GpioClassImpl_DistrBusUSB.cpp
  10. 7 5
      DevAdapter/keba/HSPScanner.keba.1.1/CMakeLists.txt
  11. 1 1
      DevAdapter/keba/HSPScanner.keba.1.1/CkLog.h
  12. 2 2
      DevAdapter/keba/IDCertificate.keba.1.1/CkLog.h
  13. 14 5
      DevAdapter/keba/IDCertificate.keba.1.1/dllmain.cpp
  14. 97 72
      DevAdapter/keba/IDCertificate.keba.1.1/idcertificate.cpp
  15. 1 1
      DevAdapter/keba/PinPad.keba.1.1/CkLog.h
  16. 12 8
      DevAdapter/keba/PinPad.keba.1.1/PinPadClassImpl_ZT598M.cpp
  17. 142 4
      DevAdapter/keba/PinPad.keba.1.1/ZT598MGFD_DevCtrl.cpp
  18. 0 68
      DevAdapter/keba/ThermalPrint.keba.1.1/CMakeLists.txt
  19. 0 120
      DevAdapter/keba/ThermalPrint.keba.1.1/CkLog.cpp
  20. 0 425
      DevAdapter/keba/ThermalPrint.keba.1.1/CkLog.h
  21. 0 2034
      DevAdapter/keba/ThermalPrint.keba.1.1/DevCtrl.cpp
  22. 0 209
      DevAdapter/keba/ThermalPrint.keba.1.1/DevCtrl.h
  23. 0 947
      DevAdapter/keba/ThermalPrint.keba.1.1/ImageProcessing.cpp
  24. 0 96
      DevAdapter/keba/ThermalPrint.keba.1.1/ImageProcessing.h
  25. 0 1790
      DevAdapter/keba/ThermalPrint.keba.1.1/ThermalPrint.cpp
  26. 0 123
      DevAdapter/keba/ThermalPrint.keba.1.1/ThermalPrint.h
  27. 0 31
      DevAdapter/keba/ThermalPrint.keba.1.1/dllmain.cpp
  28. 0 32
      DevAdapter/keba/ThermalPrint.keba.1.1/keba.SetupMutex.h
  29. 0 31
      DevAdapter/keba/ThermalPrint.keba.1.1/stdafx.h
  30. 1 1
      DevAdapter/keba/Ups.keba.1.1/CkLog.h
  31. 1 4
      DevAdapter/keba/Ups.keba.1.1/UpsClassImpl_East.h
  32. 1 1
      DevAdapter/keba/WatchDog.keba.1.1/CkLog.h

+ 1 - 1
DevAdapter/CMakeLists.txt

@@ -139,7 +139,7 @@ message(STATUS "vendor log library: ${VENDOR_LOG_LIB_NAME}")
 
 # 通过conan的方式管理厂商库
 if(DEVADAPTER_USING_CONAN)
-    set(KEBA_CONAN_LIB_NAME keba/2021.0330.01@LR04.02_VendorLib/testing)
+    set(KEBA_CONAN_LIB_NAME keba/2021.0520.01@LR04.02_VendorLib/testing)
 	set(NANTIAN_CONAN_LIB_NAME nantian/2021.0519.01@LR04.02_VendorLib/testing)
 	set(GRG_CONAN_LIB_NAME grg/2021.0519.01@LR04.02_VendorLib/testing)
 	set(CW_CONAN_LIB_NAME cw/2021.0317.01@LR04.02_VendorLib/testing)

+ 1 - 1
DevAdapter/keba/CMakeLists.txt

@@ -21,7 +21,7 @@ add_subdirectory(Gpio.keba.1.1)
 add_subdirectory(HSPScanner.keba.1.1)
 add_subdirectory(IDCertificate.keba.1.1)
 add_subdirectory(PinPad.keba.1.1)
-add_subdirectory(ThermalPrint.keba.1.1)
+#add_subdirectory(ThermalPrint.keba.1.1)
 add_subdirectory(Ups.keba.1.1)
 add_subdirectory(WatchDog.keba.1.1)
 #add_subdirectory(ZKebaAdapterTest)

+ 1 - 1
DevAdapter/keba/CardIssuer.keba.1.1/CkLog.h

@@ -3,7 +3,7 @@
 #define CKLOG_H
 
 #define CMBLOG4            //是否使用招行日志库开关
-#define CKLOG              //是否使用公司日志库开关
+//#define CKLOG              //是否使用公司日志库开关
 
 #include <stdio.h>
 #include <fstream>

+ 16 - 1
DevAdapter/keba/ContactlessCard.keba.1.1/CRT_RFIC_Ctrl.cpp

@@ -1,4 +1,4 @@
-#include "stdafx.h"
+#include "stdafx.h"
 #include "CRT_RFIC_Ctrl.h"
 #include <stdio.h>
 #include<string>
@@ -329,6 +329,7 @@ int CDevDllLoad::CrtActiveCard(LPCRT_ART_Info lpGetATR)
 
     if (nRet == CRT_SUCCESS && nRecvLen > 0)
     {
+        CrtBeel();
         lpGetATR->nLen = nRecvLen;
         memcpy(lpGetATR->byATR, byRecvData, nRecvLen);
     }
@@ -486,6 +487,20 @@ int CDevDllLoad::CrtGetErrorType(int nErrCode)
     return nRet;
 }
 
+int CDevDllLoad::CrtBeel()
+{
+    int nRet = CRT_SUCCESS;
+
+    nRet = m_fnBeel(1);
+    if (nRet != CRT_SUCCESS)
+    {
+        nRet = CRT_ERR_WRITE;
+    }
+
+    return nRet;
+
+}
+
 void CDevDllLoad::InitVar()
 {
     m_fnOPenConnect = NULL;

+ 2 - 1
DevAdapter/keba/ContactlessCard.keba.1.1/CRT_RFIC_Ctrl.h

@@ -1,4 +1,4 @@
-#ifndef CRT_RFIC_CTRL_H
+#ifndef CRT_RFIC_CTRL_H
 #define CRT_RFIC_CTRL_H
 
 #pragma once
@@ -35,6 +35,7 @@ public:
 public:
     LPSTR CrtGetLastErrDetail();
     int CrtGetErrorType(int nErrCode);
+    int CrtBeel();
 
 private:
     void InitVar();

+ 1 - 1
DevAdapter/keba/ContactlessCard.keba.1.1/CkLog.h

@@ -3,7 +3,7 @@
 #define CKLOG_H
 
 #define CMBLOG4            //是否使用招行日志库开关
-#define CKLOG              //是否使用公司日志库开关
+//#define CKLOG              //是否使用公司日志库开关
 
 #include <stdio.h>
 #include <fstream>

+ 1 - 1
DevAdapter/keba/FingerPrint.keba.1.1/CkLog.h

@@ -3,7 +3,7 @@
 #define CKLOG_H
 
 #define CMBLOG4            //是否使用招行日志库开关
-#define CKLOG              //是否使用公司日志库开关
+//#define CKLOG              //是否使用公司日志库开关
 
 #include <stdio.h>
 #include <fstream>

+ 1 - 1
DevAdapter/keba/Gpio.keba.1.1/CkLog.h

@@ -3,7 +3,7 @@
 #define CKLOG_H
 
 #define CMBLOG4            //是否使用招行日志库开关
-#define CKLOG              //是否使用公司日志库开关
+//#define CKLOG              //是否使用公司日志库开关
 
 #include <stdio.h>
 #include <fstream>

+ 22 - 20
DevAdapter/keba/Gpio.keba.1.1/GpioClassImpl_DistrBusUSB.cpp

@@ -1,4 +1,4 @@
-// GpioClassImpl_DistrBusUSB.cpp :
+// GpioClassImpl_DistrBusUSB.cpp :
 //
 
 
@@ -59,7 +59,7 @@ GpioClassImpl::GpioClassImpl():
     GetCurModulePath(sPath, nullptr);
     memcpy(m_sIniPath,sPath,sizeof (sPath));
     sprintf(m_sIniPath, "%s/%s", m_sIniPath, "keba/Adapter_L.keba.INI");
-    LogM("GPIO的配置文件=%s",m_sIniPath);
+//    LogM("GPIO的配置文件=%s",m_sIniPath);
     m_nUSBDelay = g_iniAccess.GetPrivateProfileInt("Gpio", "USBDELAY", 3000, m_sIniPath);
 
 
@@ -76,7 +76,7 @@ GpioClassImpl::~GpioClassImpl()
 ErrorCodeEnum GpioClassImpl::GetDevCategory(DevCategoryInfo &devCategory)
 {
     LOG_FUNCTION();
-    LogM("GpioClassImpl::Entry->Gpio GetDevCategory()!");
+//    LogM("GpioClassImpl::Entry->Gpio GetDevCategory()!");
 
 	memset(devCategory.szType, 0, MAX_DEV_TYPE_LEN);
 	memset(devCategory.szModel, 0, MAX_DEV_MODEL_LEN);
@@ -102,14 +102,14 @@ ErrorCodeEnum GpioClassImpl::GetDevCategory(DevCategoryInfo &devCategory)
 //    devCategory.version.wMajor = (WORD)portio_read_version();
     LogM("DevCategoryInfo() outputparameter: szType:%s, szModel:%s,szVendor:%s, eState:%d", devCategory.szType, devCategory.szModel, devCategory.szVendor, devCategory.eState);
     LogM("DevCategoryInfo() outputparameter: wMajor:%d, wMinor:%d,wRevision:%d, wBuild:%d", devCategory.version.wMajor, devCategory.version.wMinor, devCategory.version.wRevision, devCategory.version.wBuild);
-    LogM("DevCategoryInfo() OK!");
+//    LogM("DevCategoryInfo() OK!");
 
 	return Error_Succeed;
 }
 ErrorCodeEnum GpioClassImpl::Reset()
 {
     LOG_FUNCTION();
-    LogM("GpioClassImpl::Entry->Gpio Reset()!");
+//    LogM("GpioClassImpl::Entry->Gpio Reset()!");
 
 	BYTE inBuffer[8]={0};
 	BYTE outBuffer[8]={0};
@@ -133,7 +133,7 @@ ErrorCodeEnum GpioClassImpl::Reset()
 	}
     if(KEBA_DevCtrl->Reset() != FALSE)
 	{
-        LogM("Reset() OK!");
+//        LogM("Reset() OK!");
         m_wDevStatus = DEVICE_STATUS_NORMAL;
 		return Error_Succeed;
 	}
@@ -148,29 +148,29 @@ ErrorCodeEnum GpioClassImpl::DevClose()
 {
     LOG_FUNCTION();
     m_wDevStatus = DEVICE_STATUS_NOT_READY;
-    LogM("DevClose() ");
+//    LogM("DevClose() ");
 	if(!m_bDevOpen)
 	{
-        LogM("DevClose(): Dev is not open.");
-        LogM("DevClose() OK!");
+//        LogM("DevClose(): Dev is not open.");
+//        LogM("DevClose() OK!");
 		return Error_Succeed;
 	}
 
     KEBA_DevCtrl->CloseDevice();
 	m_bDevOpen = false;
-    LogM("DevClose() OK!");
+//    LogM("DevClose() OK!");
 	return Error_Succeed;
 }
 
 ErrorCodeEnum GpioClassImpl::GetLastErr(DevErrorInfo &devErrInfo)
 {
     LOG_FUNCTION();
-    LogM("GetLastErr() ");
+//    LogM("GetLastErr() ");
 	devErrInfo.dwErrMsgLen = strlen(m_szErrMsg);
 	memset(devErrInfo.szErrMsg, 0, MAX_DEV_ERROR_MSG_LEN);
     memcpy(devErrInfo.szErrMsg, m_szErrMsg, MIN(devErrInfo.dwErrMsgLen, MAX_DEV_ERROR_MSG_LEN));
     LogM("GetLastErr() return: devErrInfo.dwErrMsgLen=%d, devErrInfo.szErrMsg:%s", devErrInfo.dwErrMsgLen, devErrInfo.szErrMsg);
-    LogM("GetLastErr() OK!");
+//    LogM("GetLastErr() OK!");
 	return Error_Succeed;
 }
 
@@ -199,7 +199,7 @@ ErrorCodeEnum GpioClassImpl::DevOpen(GpioInitParam initParam)
     if(m_bDevOpen)
 	{
         m_wDevStatus = DEVICE_STATUS_NORMAL;
-        LogM("DevOpen() Dev is open already. Return Error_Succeed;");
+//        LogM("DevOpen() Dev is open already. Return Error_Succeed;");
 		return Error_Succeed;
 	}
 	DevClose();
@@ -246,7 +246,7 @@ ErrorCodeEnum GpioClassImpl::WritePort(DWORD dwPort, BYTE btData)
     LOG_FUNCTION();
     //zouchuang rang jia 50ms
     usleep(50*1000);
-    LogM("WritePort()input parameter:dwPort:%d, btData:0x%02x", dwPort, btData);
+//    LogM("WritePort()input parameter:dwPort:%d, btData:0x%02x", dwPort, btData);
 	if(dwPort == 0)
 	{
         if((btData & 0x02)== 0x02)
@@ -309,12 +309,13 @@ ErrorCodeEnum GpioClassImpl::WritePort(DWORD dwPort, BYTE btData)
     {
         sprintf(cErrmsg, "SetGuidLight() Execute Fail");
         SaveErrorInfo(cErrmsg, Error_DevNotAvailable);
+        LogM("WritePort()input parameter:dwPort:%d, btData:0x%02x", dwPort, btData);
         LogM("WritePort()->SetGuidLight(): %s",cErrmsg);
         m_wDevStatus = DEVICE_STATUS_FAULT;
         return Error_DevNotAvailable;
     }
 
-    LogM("WritePort() OK!");
+//    LogM("WritePort() OK!");
     m_wDevStatus = DEVICE_STATUS_NORMAL;
 	return Error_Succeed;
 }
@@ -328,7 +329,7 @@ ErrorCodeEnum GpioClassImpl::WritePort(DWORD dwPort, BYTE btData)
 ErrorCodeEnum GpioClassImpl::ReadPort(DWORD dwPort,BYTE &btStatus)
 {
     LOG_FUNCTION();
-    LogM("ReadPort()input parameter:dwPort:%d", dwPort);
+//    LogM("ReadPort()input parameter:dwPort:%d", dwPort);
     if(!m_bDevOpen)
 	{
 		SaveErrorInfo("ReadPort(): returnError_DevNotAvailable",Error_DevNotAvailable );
@@ -382,6 +383,7 @@ ErrorCodeEnum GpioClassImpl::ReadPort(DWORD dwPort,BYTE &btStatus)
         {
             sprintf(cErrmsg, "getChannelStatus(channel=%d) Execute Fail", iInputNo);
             SaveErrorInfo(cErrmsg, Error_DevNotAvailable);
+            LogM("ReadPort()input parameter:dwPort:%d", dwPort);
             LogM("WritePort()->SetGuidLight(): %s",cErrmsg);
             bFailFlag = TRUE;
         }
@@ -397,8 +399,8 @@ ErrorCodeEnum GpioClassImpl::ReadPort(DWORD dwPort,BYTE &btStatus)
         return Error_DevNotAvailable;
     }
 
-    LogM("ReadPort()output parameter:btStatus:0x%02x", btStatus);
-    LogM("ReadPort() OK!");
+//    LogM("ReadPort()output parameter:btStatus:0x%02x", btStatus);
+//    LogM("ReadPort() OK!");
      m_wDevStatus = DEVICE_STATUS_NORMAL;
 	return Error_Succeed;
 }
@@ -411,7 +413,7 @@ void GpioClassImpl::SaveErrorInfo(CHAR* errMsg, int errCode)
     LogM("SaveErrorInfo()input parameter:errMsg:%s, errCode:%d", errMsg, errCode);
 	memset(m_szErrMsg, 0, MAX_DEV_ERROR_MSG_LEN);
     sprintf(m_szErrMsg, "%s[%d]", errMsg, errCode);
-    LogM("SaveErrorInfo() OK!");
+//    LogM("SaveErrorInfo() OK!");
 }
 
 ErrorCodeEnum GpioClassImpl::LightTurnOn()
@@ -454,7 +456,7 @@ ErrorCodeEnum GpioClassImpl::LightTurnOn()
         return Error_DevNotAvailable;
     }
 
-    LogM("LightTurnOn() OK!");
+//    LogM("LightTurnOn() OK!");
     m_wDevStatus = DEVICE_STATUS_NORMAL;
 	return Error_Succeed;
 }

+ 7 - 5
DevAdapter/keba/HSPScanner.keba.1.1/CMakeLists.txt

@@ -6,11 +6,13 @@ set(${MODULE_PREFIX}_BATCH "1")
 if(NOT RVC_INTEGRATE_BUILD)
     set(CMAKE_PREFIX_PATH $ENV{QTDIR5113})
     set(CMAKE_INCLUDE_CURRENT_DIR ON)
+    set(CMAKE_AUTOMOC ON)
+    set(CMAKE_AUTOUIC ON)
+else()
+    set(CMAKE_AUTOMOC ON)
+    set(CMAKE_AUTOUIC ON)
 endif()
 
-set(CMAKE_AUTOMOC ON)
-set(CMAKE_AUTOUIC ON)
-
 #设置编译的一些参数
 if(NOT RVC_INTEGRATE_BUILD)
     set(CMAKE_CXX_FLAGS "-std=c++11")
@@ -54,9 +56,9 @@ target_link_directories(${MODULE_FULL_NAME} PUBLIC  ${VENDOR_CURRENT_LIB_DIR}/ke
 #链接招行日志库
 target_link_libraries(${MODULE_FULL_NAME} ${VENDOR_LOG_LIB_NAME})
 #链接keba依赖的日志库以及锁库
-target_link_libraries(${MODULE_FULL_NAME} Common.keba dbus-1 dl)
-
+target_link_libraries(${MODULE_FULL_NAME} Common.keba)
 
+target_link_libraries(${MODULE_FULL_NAME} dbus-1 dl)
 #链接Qt依赖的库
 target_link_libraries(${MODULE_FULL_NAME}  Qt5::Core)
 target_link_libraries(${MODULE_FULL_NAME}  Qt5::DBus)

+ 1 - 1
DevAdapter/keba/HSPScanner.keba.1.1/CkLog.h

@@ -3,7 +3,7 @@
 #define CKLOG_H
 
 #define CMBLOG4            //是否使用招行日志库开关
-#define CKLOG              //是否使用公司日志库开关
+//#define CKLOG              //是否使用公司日志库开关
 
 #include <stdio.h>
 #include <fstream>

+ 2 - 2
DevAdapter/keba/IDCertificate.keba.1.1/CkLog.h

@@ -1,9 +1,9 @@
-// CkLog.h: interface for the CkLog class.
+// CkLog.h: interface for the CkLog class.
 #ifndef CKLOG_H
 #define CKLOG_H
 
 #define CMBLOG4            //是否使用招行日志库开关
-#define CKLOG              //是否使用公司日志库开关
+//#define CKLOG              //是否使用公司日志库开关
 
 #include <stdio.h>
 #include <fstream>

+ 14 - 5
DevAdapter/keba/IDCertificate.keba.1.1/dllmain.cpp

@@ -21,11 +21,20 @@ ErrorCodeEnum  CreateDevComponent(DeviceBaseClass *&pBaseObj)
 
 ErrorCodeEnum  ReleaseDevComponent(DeviceBaseClass *&pBaseObj)
 {
+    LogM("ReleaseDevComponent IDCerClassImpl enter!");
     if (pBaseObj == NULL)
+        LogM("ReleaseDevComponent IDCerClassImpl scessufull!");
         return Error_Param;
-    IDCerClassImpl* pTmp = (IDCerClassImpl*)(pBaseObj);
-    delete pTmp;
-    pTmp = NULL;
-    pBaseObj = NULL;
-    return Error_Succeed;
+    IDCerClassImpl* pTmp = nullptr;
+    pTmp = static_cast<IDCerClassImpl*>(pBaseObj);
+    if(pTmp)
+    {
+        delete pTmp;
+        pTmp = NULL;
+        pBaseObj = NULL;
+        LogM("ReleaseDevComponent IDCerClassImpl scessufull!");
+        return Error_Succeed;
+    }
+    LogM("ReleaseDevComponent IDCerClassImpl fail!");
+    return Error_Param;
 }

+ 97 - 72
DevAdapter/keba/IDCertificate.keba.1.1/idcertificate.cpp

@@ -162,26 +162,9 @@ ErrorCodeEnum IDCerClassImpl::GetDevCategory(DevCategoryInfo &devCategory)
     memset(devCategory.szType, 0, MAX_DEV_TYPE_LEN);
     memset(devCategory.szModel, 0, MAX_DEV_MODEL_LEN);
     memset(devCategory.szVendor, 0, MAX_DEV_VENDOR_LEN);
-    memcpy(devCategory.szType, "BSID81S", strlen("BSID81S"));
+    memcpy(devCategory.szType, "PVER=SNBC#MID=ID8101", strlen("PVER=SNBC#MID=ID8101"));
     memcpy(devCategory.szVendor, "keba", strlen("keba"));
 
-    DEVSTATUS m_DeviceStatus;
-    memset(&m_DeviceStatus, 0x00, sizeof(DEVSTATUS));
-
-    int nRet = m_cBS_ID81IDCImpl.DeviceStatus(SecDeviceNum, &m_DeviceStatus);
-    if (nRet == IDDIGITALCOPIER_PORT_ERROR)
-    {
-        sleep(1);
-        DevOpen(SecDeviceNum);
-        nRet = m_cBS_ID81IDCImpl.DeviceStatus(SecDeviceNum, &m_DeviceStatus);
-        if (nRet == IDDIGITALCOPIER_PORT_ERROR)
-        {
-            SaveErrorInfo("通讯异常", Error_DevCommFailed);
-            LogM("DeviceStatus(), 通讯异常, nRet=%d,line=%d", nRet, __LINE__);
-            m_wDevStatus = DEVICE_STATUS_FAULT;
-        }
-    }
-
     devCategory.eState = (DevStateEnum)m_wDevStatus;
     char sPath[256], sFile[128] = {0};
     GetCurModulePath(sPath, sFile);
@@ -194,17 +177,36 @@ ErrorCodeEnum IDCerClassImpl::GetDevCategory(DevCategoryInfo &devCategory)
     devCategory.version.wRevision = 0xffff;
     devCategory.version.wBuild = 2;
 
+//    char szFwVer[256] = {0};
+//    char szSwVer[256] = {0};
+//    int nRet = m_cBS_ID81IDCImpl.FWVersion(SecDeviceNum, szFwVer);
+//    if (nRet == IDDIGITALCOPIER_NO_ERROR)
+//    {
+//        nRet = m_cBS_ID81IDCImpl.SWVersion(szSwVer);
+//        if (nRet == IDDIGITALCOPIER_NO_ERROR)
+//        {
+//            sprintf(devCategory.szType, "PVER=SNBC#MID=ID8101.%s-%s", szFwVer, szSwVer);
+//        }
+//        else
+//        {
+//            sprintf(devCategory.szType, "PVER=SNBC#MID=ID8101.%s", szFwVer);
+//        }
+//    }
+//    else
+//    {
+//        memcpy(devCategory.szType, "PVER=SNBC#MID=", strlen("PVER=SNBC#MID="));
+//    }
 
     memcpy(devCategory.szModel, "STYLE=IG#FUNCTION=ITF", strlen("STYLE=IG#FUNCTION=ITF"));
     LogM("GetDevCategory() return:\n\
-                      devCategory.szType = %s, \n\
-                      devCategory.szVendor = %s, \n\
-                      devCategory.eState = %d, \n\
-                      devCategory.version.wMajor = %d, \n\
-                      devCategory.version.wMinor = %d, \n\
-                      devCategory.version.wRevision = %d, \n\
-                      devCategory.version.wBuild= %d, \n\
-                      devCategory..szModel = %s, \n",
+                      devCategory.szType=%s,\n\
+                      devCategory.szVendor=%s,\n\
+                      devCategory.eState=%d,\n\
+                      devCategory.version.wMajor=%d,\n\
+                      devCategory.version.wMinor=%d,\n\
+                      devCategory.version.wRevision=%d,\n\
+                      devCategory.version.wBuild=%d,\n\
+                      devCategory..szModel=%s,\n",
                       devCategory.szType,
                       devCategory.szVendor,
                       devCategory.eState,
@@ -213,6 +215,23 @@ ErrorCodeEnum IDCerClassImpl::GetDevCategory(DevCategoryInfo &devCategory)
                       devCategory.version.wRevision,
                       devCategory.version.wBuild,
                       devCategory.szModel);
+
+    DEVSTATUS m_DeviceStatus;
+    memset(&m_DeviceStatus, 0x00, sizeof(DEVSTATUS));
+    int nRet = m_cBS_ID81IDCImpl.DeviceStatus(SecDeviceNum, &m_DeviceStatus);
+    if (nRet == IDDIGITALCOPIER_PORT_ERROR)
+    {
+        sleep(1);
+        DevOpen(SecDeviceNum);
+        nRet = m_cBS_ID81IDCImpl.DeviceStatus(SecDeviceNum, &m_DeviceStatus);
+        if (nRet == IDDIGITALCOPIER_PORT_ERROR)
+        {
+            SaveErrorInfo("通讯异常", Error_DevCommFailed);
+            LogM("DeviceStatus(), 通讯异常, nRet=%d,line=%d", nRet, __LINE__);
+            m_wDevStatus = DEVICE_STATUS_FAULT;
+        }
+    }
+
     return Error_Succeed;
 }
 
@@ -586,19 +605,19 @@ ErrorCodeEnum IDCerClassImpl::IDCerGetData(IDCerInfo &idCerInfo)
         //1姓名
         std::string dataStr = m_IDInfoEx.name;
         dataStr = trim(dataStr);
-        strcpy_s(idCerInfo.name.data,m_IDInfoEx.name);
+        strcpy_s(idCerInfo.name.data, dataStr.c_str());
         idCerInfo.name.dwSize = dataStr.size();
 
         //2性别
         dataStr = m_IDInfoEx.sex;
         dataStr = trim(dataStr);
-        strcpy_s(idCerInfo.sex.data, m_IDInfoEx.sex);
+        strcpy_s(idCerInfo.sex.data,  dataStr.c_str());
         idCerInfo.sex.dwSize = dataStr.size();
 
         //3国籍(民族)
         dataStr = m_IDInfoEx.nation;
         dataStr = trim(dataStr);
-        strcpy_s(idCerInfo.nation.data, m_IDInfoEx.nation);
+        strcpy_s(idCerInfo.nation.data,  dataStr.c_str());
         idCerInfo.nation.dwSize = dataStr.size();
 
         //4出生日期
@@ -614,19 +633,19 @@ ErrorCodeEnum IDCerClassImpl::IDCerGetData(IDCerInfo &idCerInfo)
         //5地址
         dataStr = m_IDInfoEx.address;
         dataStr = trim(dataStr);
-        strcpy_s(idCerInfo.address.data,m_IDInfoEx.address);
+        strcpy_s(idCerInfo.address.data, dataStr.c_str());
         idCerInfo.address.dwSize = dataStr.size();
 
         //6身份证号
         dataStr = m_IDInfoEx.number;
         dataStr = trim(dataStr);
-        strcpy_s(idCerInfo.idno.data, m_IDInfoEx.number);
+        strcpy_s(idCerInfo.idno.data,  dataStr.c_str());
         idCerInfo.idno.dwSize = dataStr.size();
 
         //7发证机关
         dataStr = m_IDInfoEx.department;
         dataStr = trim(dataStr);
-        strcpy_s(idCerInfo.department.data, m_IDInfoEx.department);
+        strcpy_s(idCerInfo.department.data,  dataStr.c_str());
         idCerInfo.department.dwSize = dataStr.size();
 
         //8有效期起始时间
@@ -676,7 +695,8 @@ ErrorCodeEnum IDCerClassImpl::IDCerGetData(IDCerInfo &idCerInfo)
 
         //11头像图片保存地址
         dataStr = PhotoPath;
-        strcpy_s(idCerInfo.photoPath.data, PhotoPath);
+        dataStr = trim(dataStr);
+        strcpy_s(idCerInfo.photoPath.data,  dataStr.c_str());
         idCerInfo.photoPath.dwSize = dataStr.size();
         LogM("IDCerGetData(), 身份证");
     }
@@ -686,13 +706,13 @@ ErrorCodeEnum IDCerClassImpl::IDCerGetData(IDCerInfo &idCerInfo)
         //1姓名
         std::string dataStr = m_IDForeignInfo.NameCHN;
         dataStr = trim(dataStr);
-        strcpy_s(idCerInfo.name.data,m_IDForeignInfo.NameCHN);
+        strcpy_s(idCerInfo.name.data, dataStr.c_str());
         idCerInfo.name.dwSize = dataStr.size();
 
         //2性别
         dataStr = m_IDForeignInfo.Sex;
         dataStr = trim(dataStr);
-        strcpy_s(idCerInfo.sex.data, m_IDForeignInfo.Sex);
+        strcpy_s(idCerInfo.sex.data,  dataStr.c_str());
         idCerInfo.sex.dwSize = dataStr.size();
 
         //2019-06-11
@@ -722,13 +742,13 @@ ErrorCodeEnum IDCerClassImpl::IDCerGetData(IDCerInfo &idCerInfo)
         //6证件号码
         dataStr = m_IDForeignInfo.IDCardNO;
         dataStr = trim(dataStr);
-        strcpy_s(idCerInfo.idno.data, m_IDForeignInfo.IDCardNO);
+        strcpy_s(idCerInfo.idno.data,  dataStr.c_str());
         idCerInfo.idno.dwSize = dataStr.size();
 
         //7发证机关
         dataStr = m_IDForeignInfo.Department;
         dataStr = trim(dataStr);
-        strcpy_s(idCerInfo.department.data, m_IDForeignInfo.Department);
+        strcpy_s(idCerInfo.department.data,  dataStr.c_str());
         idCerInfo.department.dwSize = dataStr.size();
 
         //8有效期起始时间
@@ -757,7 +777,8 @@ ErrorCodeEnum IDCerClassImpl::IDCerGetData(IDCerInfo &idCerInfo)
 
         //11头像图片文件保存地址
         dataStr = PhotoPath;
-        strcpy_s(idCerInfo.photoPath.data, PhotoPath);
+        dataStr = trim(dataStr);
+        strcpy_s(idCerInfo.photoPath.data,  dataStr.c_str());
         idCerInfo.photoPath.dwSize = dataStr.size();
         LogM("IDCerGetData(), 外国人");
     }
@@ -767,13 +788,13 @@ ErrorCodeEnum IDCerClassImpl::IDCerGetData(IDCerInfo &idCerInfo)
         //1姓名
         std::string dataStr = m_IDInfoGAT.name;
         dataStr = trim(dataStr);
-        strcpy_s(idCerInfo.name.data, m_IDInfoGAT.name);
+        strcpy_s(idCerInfo.name.data,  dataStr.c_str());
         idCerInfo.name.dwSize = dataStr.size();
 
         //2性别
         dataStr = m_IDInfoGAT.sex;
         dataStr = trim(dataStr);
-        strcpy_s(idCerInfo.sex.data, m_IDInfoGAT.sex);
+        strcpy_s(idCerInfo.sex.data,  dataStr.c_str());
         idCerInfo.sex.dwSize = dataStr.size();
 
         //3民族
@@ -793,19 +814,19 @@ ErrorCodeEnum IDCerClassImpl::IDCerGetData(IDCerInfo &idCerInfo)
         //5地址
         dataStr = m_IDInfoGAT.address;
         dataStr = trim(dataStr);
-        strcpy_s(idCerInfo.address.data,m_IDInfoGAT.address);
+        strcpy_s(idCerInfo.address.data, dataStr.c_str());
         idCerInfo.address.dwSize = dataStr.size();
 
         //6身份证号
         dataStr = m_IDInfoGAT.number;
         dataStr = trim(dataStr);
-        strcpy_s(idCerInfo.idno.data, m_IDInfoGAT.number);
+        strcpy_s(idCerInfo.idno.data,  dataStr.c_str());
         idCerInfo.idno.dwSize = dataStr.size();
 
         //7发证机关
         dataStr = m_IDInfoGAT.department;
         dataStr = trim(dataStr);
-        strcpy_s(idCerInfo.department.data, m_IDInfoGAT.department);
+        strcpy_s(idCerInfo.department.data,  dataStr.c_str());
         idCerInfo.department.dwSize = dataStr.size();
 
         //8有效期起始时间
@@ -855,7 +876,8 @@ ErrorCodeEnum IDCerClassImpl::IDCerGetData(IDCerInfo &idCerInfo)
 
         //11头像保存路径和文件名
         dataStr = PhotoPath;
-        strcpy_s(idCerInfo.photoPath.data, PhotoPath);
+        dataStr = trim(dataStr);
+        strcpy_s(idCerInfo.photoPath.data, dataStr.c_str());
         idCerInfo.photoPath.dwSize = dataStr.size();
         LogM("IDCerGetData(), 港澳台");
     }
@@ -868,8 +890,8 @@ ErrorCodeEnum IDCerClassImpl::IDCerGetData(IDCerInfo &idCerInfo)
     }
     LogM("IDCerGetData(), nRet=%d", Error_Succeed);
     LogM("IDCerGetData() return:\
-              \nName:%s\n Sex:%s\nNation: %s\nBirth: %s\nAddress:%s\nIDCode:%s\
-            \nDepart: %s\nStartDate: %s\nEndDate: %s\nNewAddress:%s\nPhotoPath:%s\n",
+              \nName:%s\nSex:%s\nNation:%s\nBirth:%s\nAddress:%s\nIDCode:%s\
+            \nDepart:%s\nStartDate:%s\nEndDate:%s\nNewAddress:%s\nPhotoPath:%s\n",
             idCerInfo.name.data, idCerInfo.sex.data, idCerInfo.nation.data,
             idCerInfo.birthday.data, idCerInfo.address.data, idCerInfo.idno.data,
             idCerInfo.department.data, idCerInfo.startDate.data, idCerInfo.endDate.data,
@@ -914,21 +936,21 @@ ErrorCodeEnum IDCerClassImpl::IDCerGetDataEx(IDCerInfoEx &idCerInfoEx)
         std::string dataStr = m_IDInfoEx.name;
         dataStr = trim(dataStr);
         memset(idCerInfoEx.name.data, 0, MAX_IDCER_INFO_SIZE);
-        strcpy_s(idCerInfoEx.name.data, m_IDInfoEx.name);
+        strcpy_s(idCerInfoEx.name.data,  dataStr.c_str());
         idCerInfoEx.name.dwSize = dataStr.size();
 
         //2性别
         dataStr = m_IDInfoEx.sex;
         dataStr = trim(dataStr);
         memset(idCerInfoEx.sex.data, 0, MAX_IDCER_SIMPLE_INFO_SIZE);
-        strcpy_s(idCerInfoEx.sex.data, m_IDInfoEx.sex);
+        strcpy_s(idCerInfoEx.sex.data,  dataStr.c_str());
         idCerInfoEx.sex.dwSize = dataStr.size();
 
         //3民族
         dataStr = m_IDInfoEx.nation;
         dataStr = trim(dataStr);
         memset(idCerInfoEx.nation.data, 0, MAX_IDCER_SIMPLE_INFO_SIZE);
-        strcpy_s(idCerInfoEx.nation.data, m_IDInfoEx.nation);
+        strcpy_s(idCerInfoEx.nation.data,  dataStr.c_str());
         idCerInfoEx.nation.dwSize = dataStr.size();
 
         //4出生日期
@@ -946,21 +968,21 @@ ErrorCodeEnum IDCerClassImpl::IDCerGetDataEx(IDCerInfoEx &idCerInfoEx)
         dataStr = m_IDInfoEx.address;
         dataStr = trim(dataStr);
         memset(idCerInfoEx.address.data, 0, MAX_IDCER_INFO_SIZE);
-        strcpy_s(idCerInfoEx.address.data,m_IDInfoEx.address);
+        strcpy_s(idCerInfoEx.address.data, dataStr.c_str());
         idCerInfoEx.address.dwSize = dataStr.size();
 
         //6身份证号
         dataStr = m_IDInfoEx.number;
         dataStr = trim(dataStr);
         memset(idCerInfoEx.idno.data, 0, MAX_IDCER_SIMPLE_INFO_SIZE);
-        strcpy_s(idCerInfoEx.idno.data, m_IDInfoEx.number);
+        strcpy_s(idCerInfoEx.idno.data,  dataStr.c_str());
         idCerInfoEx.idno.dwSize = dataStr.size();
 
         //7发证机关
         dataStr = m_IDInfoEx.department;
         dataStr = trim(dataStr);
         memset(idCerInfoEx.department.data, 0, MAX_IDCER_INFO_SIZE);
-        strcpy_s(idCerInfoEx.department.data, m_IDInfoEx.department);
+        strcpy_s(idCerInfoEx.department.data,  dataStr.c_str());
         idCerInfoEx.department.dwSize = dataStr.size();
 
         //8有效期起始时间
@@ -1014,8 +1036,9 @@ ErrorCodeEnum IDCerClassImpl::IDCerGetDataEx(IDCerInfoEx &idCerInfoEx)
 
         //11头像保存路径和文件名
         dataStr = PhotoPath;
+        dataStr = trim(dataStr);
         memset(idCerInfoEx.photoPath.data, 0, MAX_IDCER_PHOTO_PATH);
-        strcpy_s(idCerInfoEx.photoPath.data, PhotoPath);
+        strcpy_s(idCerInfoEx.photoPath.data,  dataStr.c_str());
         idCerInfoEx.photoPath.dwSize = dataStr.size();
 
         //12英文姓名
@@ -1073,14 +1096,14 @@ ErrorCodeEnum IDCerClassImpl::IDCerGetDataEx(IDCerInfoEx &idCerInfoEx)
         std::string dataStr = m_IDForeignInfo.NameCHN;
         dataStr = trim(dataStr);
         memset(idCerInfoEx.name.data, 0, MAX_IDCER_INFO_SIZE);
-        strcpy_s(idCerInfoEx.name.data,m_IDForeignInfo.NameCHN);
+        strcpy_s(idCerInfoEx.name.data, dataStr.c_str());
         idCerInfoEx.name.dwSize = dataStr.size();
 
         //2性别
         dataStr = m_IDForeignInfo.Sex;
         dataStr = trim(dataStr);
         memset(idCerInfoEx.sex.data, 0, MAX_IDCER_SIMPLE_INFO_SIZE);
-        strcpy_s(idCerInfoEx.sex.data, m_IDForeignInfo.Sex);
+        strcpy_s(idCerInfoEx.sex.data,  dataStr.c_str());
         idCerInfoEx.sex.dwSize = dataStr.size();
 
         //2019-06-11
@@ -1107,14 +1130,14 @@ ErrorCodeEnum IDCerClassImpl::IDCerGetDataEx(IDCerInfoEx &idCerInfoEx)
         dataStr = m_IDForeignInfo.IDCardNO;
         dataStr = trim(dataStr);
         memset(idCerInfoEx.idno.data, 0, MAX_IDCER_SIMPLE_INFO_SIZE);
-        strcpy_s(idCerInfoEx.idno.data, m_IDForeignInfo.IDCardNO);
+        strcpy_s(idCerInfoEx.idno.data,  dataStr.c_str());
         idCerInfoEx.idno.dwSize = dataStr.size();
 
         //7发证机关
         dataStr = m_IDForeignInfo.Department;
         dataStr = trim(dataStr);
         memset(idCerInfoEx.department.data, 0, MAX_IDCER_INFO_SIZE);
-        strcpy_s(idCerInfoEx.department.data, m_IDForeignInfo.Department);
+        strcpy_s(idCerInfoEx.department.data,  dataStr.c_str());
         idCerInfoEx.department.dwSize = dataStr.size();
 
         //8有效期起始时间
@@ -1146,29 +1169,30 @@ ErrorCodeEnum IDCerClassImpl::IDCerGetDataEx(IDCerInfoEx &idCerInfoEx)
 
         //11头像保存路径和文件名
         dataStr = PhotoPath;
+        dataStr = trim(dataStr);
         memset(idCerInfoEx.photoPath.data, 0, MAX_IDCER_PHOTO_PATH);
-        strcpy_s(idCerInfoEx.photoPath.data, PhotoPath);
+        strcpy_s(idCerInfoEx.photoPath.data,  dataStr.c_str());
         idCerInfoEx.photoPath.dwSize = dataStr.size();
 
         //12英文姓名,外国人专用
         dataStr = m_IDForeignInfo.NameENG;
         dataStr = trim(dataStr);
         memset(idCerInfoEx.englishName.data, 0, MAX_IDCER_INFO_SIZE);
-        strcpy_s(idCerInfoEx.englishName.data, m_IDForeignInfo.NameENG);
+        strcpy_s(idCerInfoEx.englishName.data,  dataStr.c_str());
         idCerInfoEx.englishName.dwSize = dataStr.size();
 
         //13国籍或地区代码,外国人专用
         dataStr = m_IDForeignInfo.Nation;
         dataStr = trim(dataStr);
         memset(idCerInfoEx.nationality.data, 0, IDCER_EIGHT_BYTE_SIZE);
-        strcpy_s(idCerInfoEx.nationality.data, m_IDForeignInfo.Nation);
+        strcpy_s(idCerInfoEx.nationality.data,  dataStr.c_str());
         idCerInfoEx.nationality.dwSize = dataStr.size();
 
         //14证件版本号,外国人专用
         dataStr = m_IDForeignInfo.IDVersion;
         dataStr = trim(dataStr);
         memset(idCerInfoEx.idVersion.data, 0, IDCER_EIGHT_BYTE_SIZE);
-        strcpy_s(idCerInfoEx.idVersion.data, m_IDForeignInfo.IDVersion);
+        strcpy_s(idCerInfoEx.idVersion.data,  dataStr.c_str());
         idCerInfoEx.idVersion.dwSize = dataStr.size();
 
         //15证件类型标识,外国人取值'I',二代证为空,'J'(港澳台)
@@ -1215,14 +1239,14 @@ ErrorCodeEnum IDCerClassImpl::IDCerGetDataEx(IDCerInfoEx &idCerInfoEx)
         std::string dataStr = m_IDInfoGAT.name;
         dataStr = trim(dataStr);
         memset(idCerInfoEx.name.data, 0, MAX_IDCER_INFO_SIZE);
-        strcpy_s(idCerInfoEx.name.data, m_IDInfoGAT.name);
+        strcpy_s(idCerInfoEx.name.data,  dataStr.c_str());
         idCerInfoEx.name.dwSize = dataStr.size();
 
         //2性别
         dataStr = m_IDInfoGAT.sex;
         dataStr = trim(dataStr);
         memset(idCerInfoEx.sex.data, 0, MAX_IDCER_SIMPLE_INFO_SIZE);
-        strcpy_s(idCerInfoEx.sex.data, m_IDInfoGAT.sex);
+        strcpy_s(idCerInfoEx.sex.data,  dataStr.c_str());
         idCerInfoEx.sex.dwSize = dataStr.size();
 
         //3民族
@@ -1244,21 +1268,21 @@ ErrorCodeEnum IDCerClassImpl::IDCerGetDataEx(IDCerInfoEx &idCerInfoEx)
         dataStr = m_IDInfoGAT.address;
         dataStr = trim(dataStr);
         memset(idCerInfoEx.address.data, 0, MAX_IDCER_INFO_SIZE);
-        strcpy_s(idCerInfoEx.address.data,m_IDInfoGAT.address);
+        strcpy_s(idCerInfoEx.address.data, dataStr.c_str());
         idCerInfoEx.address.dwSize = dataStr.size();
 
         //6身份证号
         dataStr = m_IDInfoGAT.number;
         dataStr = trim(dataStr);
         memset(idCerInfoEx.idno.data, 0, MAX_IDCER_SIMPLE_INFO_SIZE);
-        strcpy_s(idCerInfoEx.idno.data, m_IDInfoGAT.number);
+        strcpy_s(idCerInfoEx.idno.data,  dataStr.c_str());
         idCerInfoEx.idno.dwSize = dataStr.size();
 
         //7发证机关
         dataStr = m_IDInfoGAT.department;
         dataStr = trim(dataStr);
         memset(idCerInfoEx.department.data, 0, MAX_IDCER_INFO_SIZE);
-        strcpy_s(idCerInfoEx.department.data, m_IDInfoGAT.department);
+        strcpy_s(idCerInfoEx.department.data,  dataStr.c_str());
         idCerInfoEx.department.dwSize = dataStr.size();
 
         //8有效期起始时间
@@ -1311,8 +1335,9 @@ ErrorCodeEnum IDCerClassImpl::IDCerGetDataEx(IDCerInfoEx &idCerInfoEx)
 
         //11头像保存路径和文件名
         dataStr = PhotoPath;
+        dataStr = trim(dataStr);
         memset(idCerInfoEx.photoPath.data, 0, MAX_IDCER_PHOTO_PATH);
-        strcpy_s(idCerInfoEx.photoPath.data, PhotoPath);
+        strcpy_s(idCerInfoEx.photoPath.data, dataStr.c_str());
         idCerInfoEx.photoPath.dwSize = dataStr.size();
 
         //12英文姓名
@@ -1343,14 +1368,14 @@ ErrorCodeEnum IDCerClassImpl::IDCerGetDataEx(IDCerInfoEx &idCerInfoEx)
         dataStr = m_IDInfoGAT.passport;
         dataStr = trim(dataStr);
         memset(idCerInfoEx.txzCode.data, 0, MAX_IDCER_SIMPLE_INFO_SIZE);
-        strcpy_s(idCerInfoEx.txzCode.data, m_IDInfoGAT.passport);
+        strcpy_s(idCerInfoEx.txzCode.data,  dataStr.c_str());
         idCerInfoEx.txzCode.dwSize = dataStr.size();
 
         //18签发次数
         dataStr = m_IDInfoGAT.issue;
         dataStr = trim(dataStr);
         memset(idCerInfoEx.issuedSN.data, 0, IDCER_EIGHT_BYTE_SIZE);
-        strcpy_s(idCerInfoEx.issuedSN.data,m_IDInfoGAT.issue);
+        strcpy_s(idCerInfoEx.issuedSN.data, dataStr.c_str());
         idCerInfoEx.issuedSN.dwSize = dataStr.size();
 
         //19备用2
@@ -1380,9 +1405,9 @@ ErrorCodeEnum IDCerClassImpl::IDCerGetDataEx(IDCerInfoEx &idCerInfoEx)
     }
     LogM("IDCerGetDataEx(), nRet=%d", Error_Succeed);
     LogM("IDCerGetDataEx() return:\
-                          \nName:%s\n Sex:%s\nNation: %s\nBirth: %s\nAddress:%s\nIDCode:%s\nDepart: %s\nStartDate: %s\nEndDate: %s\
-                                              \nNewAddress: %s\nphotoPath: %s\nEnglishName: %s\nNationality: %s\nIdVersin: %s\nIdType: %s\nreserved: %s\nissuedSN: %s\
-                                              \nzCotxde: %s\nreserved2: %s\nreserved3: %s\nreserved4: %s\nreserved5: %s",
+                          \nName:%s\nSex:%s\nNation:%s\nBirth:%s\nAddress:%s\nIDCode:%s\nDepart:%s\nStartDate:%s\nEndDate:%s\
+                                              \nNewAddress:%s\nphotoPath:%s\nEnglishName:%s\nNationality:%s\nIdVersin:%s\nIdType:%s\nreserved:%s\nissuedSN:%s\
+                                              \nzCotxde:%s\nreserved2:%s\nreserved3:%s\nreserved4:%s\nreserved5:%s",
                                               idCerInfoEx.name.data, idCerInfoEx.sex.data, idCerInfoEx.nation.data,
                                               idCerInfoEx.birthday.data, idCerInfoEx.address.data, idCerInfoEx.idno.data,
                                               idCerInfoEx.department.data, idCerInfoEx.startDate.data, idCerInfoEx.endDate.data,

+ 1 - 1
DevAdapter/keba/PinPad.keba.1.1/CkLog.h

@@ -3,7 +3,7 @@
 #define CKLOG_H
 
 #define CMBLOG4            //是否使用招行日志库开关
-#define CKLOG              //是否使用公司日志库开关
+//#define CKLOG              //是否使用公司日志库开关
 
 #include <stdio.h>
 #include <fstream>

+ 12 - 8
DevAdapter/keba/PinPad.keba.1.1/PinPadClassImpl_ZT598M.cpp

@@ -97,7 +97,8 @@ PinPadClassImpl::PinPadClassImpl() :
     memset(m_LPPinpadStatus,0x00,sizeof (PinpadStatus));
     memset(&m_cfgSP, 0x00, sizeof(m_cfgSP));
     memset(&m_pinpadReadData, 0x00, sizeof(m_pinpadReadData));
-    LogM("PinPad PinPadClassImpl creat function()!");
+    memset(m_szMainChipSN, 0x00, sizeof(m_szMainChipSN));
+    LogM("PinPad PinPadClassImpl creat function()! version:202104130936");
     ZT598M1FD_DevCtrl = NULL;
     ZT598M1FD_DevCtrl=new CZT598M1FD_DevCtrl();
     if(ZT598M1FD_DevCtrl == NULL)
@@ -127,17 +128,20 @@ ErrorCodeEnum PinPadClassImpl::GetDevCategory(DevCategoryInfo &devCategory)
     memset(devCategory.szModel, 0, MAX_DEV_MODEL_LEN);
     memset(devCategory.szVendor, 0, MAX_DEV_VENDOR_LEN);
     memset(&devCategory.version, 0, sizeof(devCategory.version));
-    if(m_bDevOpen)
+    //PinpadStatus stPinpadStatus;
+    //if(m_bDevOpen)
+    //if(ZT598M1FD_DevCtrl->GetDevStatus(&stPinpadStatus) == STATUS_SUCCESS)
+    if(ZT598M1FD_DevCtrl->GetDevStatus(m_LPPinpadStatus) == STATUS_SUCCESS)
     {
         sprintf(devCategory.szType, "PVER=SZZT#MID=keba.PinPad.%s-%s", m_sDevModel, m_sSMVer);
-        sprintf(devCategory.szModel, "PID=%s", m_szMainChipSN);
+        sprintf(devCategory.szModel, "PM=V2.0#PID=%s#MID=%s#FWID=%s%s", m_szMainChipSN, m_szMainChipSN, m_sDevModel+(strlen(m_sDevModel) - 4), m_sSMVer+(strlen(m_sSMVer) - 4));
         sprintf(devCategory.szVendor,"keba");
     }
     else
     {
-        sprintf(devCategory.szType," keba.PinPad.unknown");
-        sprintf(devCategory.szModel, "PID=00000000");
-        sprintf(devCategory.szVendor, "keba");
+        sprintf(devCategory.szType, "PVER=SZZT#MID=");
+        sprintf(devCategory.szModel, "PM=V2.0#PID=#MID=#FWID=");
+        sprintf(devCategory.szVendor,"keba");
     }
     switch(m_LPPinpadStatus->wDevState)
     {
@@ -170,7 +174,7 @@ ErrorCodeEnum PinPadClassImpl::GetDevCategory(DevCategoryInfo &devCategory)
     //devCategory.version.wMajor = 0;
     //devCategory.version.wMinor = 0;
     LogM( "devCategory.szType=%s",devCategory.szType);
-    LogM( "devCategory.szModel=%s", devCategory.szModel);
+    LogM( "devCategory.szModel=%s [0x%x]", devCategory.szModel, m_szMainChipSN[9]);
     LogM( "devCategory.szVendor=%s",devCategory.szVendor);
     LogM( "devCategory.eState=%d",devCategory.eState);
     LogM( "devCategory.version=%d.%d.%d.%d", devCategory.version.wMajor, devCategory.version.wMinor, devCategory.version.wRevision, devCategory.version.wBuild);
@@ -562,7 +566,7 @@ ErrorCodeEnum PinPadClassImpl::StartPinInput(BYTE byLen)
 
     ErrorCodeEnum ret = Error_Succeed;
     LONG lRet = STATUS_SUCCESS;
-    m_bConfirm = TRUE;
+    m_bConfirm = FALSE;
     m_nCurrentEntryMode = PIN_ENTRY;
     ret = StartPinInputCommon(byLen);
     LogM("<==Leave PinPadClassImpl::StartPinInput()return %d", ret);

File diff suppressed because it is too large
+ 142 - 4
DevAdapter/keba/PinPad.keba.1.1/ZT598MGFD_DevCtrl.cpp


+ 0 - 68
DevAdapter/keba/ThermalPrint.keba.1.1/CMakeLists.txt

@@ -1,68 +0,0 @@
-# 声明模块名称的前缀和名称
-rvc_dev_define_module("ThermalPrint")
-
-# rvc_dev_config_library 内需要使用这三个参数,用于拼接输出的适配器文件名称
-set(${MODULE_PREFIX}_VENDOR "keba")
-set(${MODULE_PREFIX}_VERSION "1")
-set(${MODULE_PREFIX}_BATCH "1")
-
-if(NOT RVC_INTEGRATE_BUILD)
-    set(CMAKE_PREFIX_PATH $ENV{QTDIR5113})
-    set(CMAKE_INCLUDE_CURRENT_DIR ON)
-    set(CMAKE_AUTOMOC ON)
-    set(CMAKE_AUTOUIC ON)
-endif()
-
-#设置编译的一些参数
-if(NOT RVC_INTEGRATE_BUILD)
-    set(CMAKE_CXX_FLAGS "-std=c++11")
-    set(CMAKE_BUILD_TYPE "Release")#Release Debug
-endif()
-#设置头文件查找路径的变量
-set( INCLUDE_KEBA       ${DEVADAPTER_CURRENT_INCLUDES_DIR}
-                        ${VENDOR_CURRENT_INCLUDE_DIR}
-                        ${VENDOR_CURRENT_INCLUDE_DIR}/SDK
-                    )
-message(STATUS "include_directories: ${INCLUDE_KEBA}")
-#收录当前目录下的所有* . cpp文件
-aux_source_directory(. SRC_LIST)
-
-# 包含要编译的实现文件,rvc_dev_config_library 内使用
-set(${MODULE_PREFIX}_SRCS SHARED
-        ${SRC_LIST}
-        )
-if(RVC_INTEGRATE_BUILD)
-    if(NOT CONAN_QT_ROOT)
-        conan_cmake_run( REQUIRES  qt/5.11.3@LR04.02_ThirdParty/stable BASIC_SETUP CMAKE_TARGETS)
-    endif(NOT CONAN_QT_ROOT )
-    find_package(Qt5 COMPONENTS Core REQUIRED 
-        HINTS ${CONAN_QT_ROOT} NO_SYSTEM_ENVIRONMENT_PATH )
-else()
-    find_package(Qt5 COMPONENTS Core REQUIRED)
-endif(RVC_INTEGRATE_BUILD)
-
-# 适配器工程需要通过此宏替代 add_library
-rvc_dev_config_library(${MODULE_NAME} ${MODULE_PREFIX})
-
-#设置头文件查找路径变量
-target_include_directories(${MODULE_FULL_NAME} PUBLIC  ${INCLUDE_KEBA})
-message(STATUS "KEBA_include_directories: ${INCLUDE_KEBA}")
-
-#设置日志依赖库文件的路径变量路径
-target_link_directories(${MODULE_FULL_NAME} PUBLIC  ${DEVADAPTER_CURRENT_LIB_DIR})
-
-#86下依赖的库连接这个文件路径:/data/home/keba/DevAdapter/keba/lib/gcc_x64?gcc_aarch64
-#target_link_directories(${MODULE_FULL_NAME} PUBLIC  ${VENDOR_CURRENT_LIB_DIR})
-target_link_directories(${MODULE_FULL_NAME} PUBLIC  ${VENDOR_CURRENT_LIB_DIR}/keba)
-#链接招行日志库
-target_link_libraries(${MODULE_FULL_NAME} ${VENDOR_LOG_LIB_NAME})
-#链接keba依赖库
-target_link_libraries(${MODULE_FULL_NAME} Common.keba)
-#设置动态库输出路径:/data/home/keba/DevAdapter/cmbsz/lib/gcc_aarch64或者gcc_x64
-#链接OpenCV
-target_link_libraries(${MODULE_FULL_NAME}  Qt5::Core )
-SET(LIBRARY_OUTPUT_PATH ${VENDOR_CURRENT_LIB_DIR})
-message(STATUS "LIBRARY_OUTPUT_PATH: ${VENDOR_CURRENT_LIB_DIR}")
-#  =-=-=-=-=-=-=-=-=-= {适配器工程}/CMakeLists.txt 文件最后必须声明如下内容=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=
-
-rvc_dev_target_install(${MODULE_FULL_NAME})

+ 0 - 120
DevAdapter/keba/ThermalPrint.keba.1.1/CkLog.cpp

@@ -1,120 +0,0 @@
-// CkLog.cpp: implementation of the CkLog class.
-#include "CkLog.h"
-
-#if defined(CKLOG)
-extern CTraceManager *pLOG;
-#endif
-
-//获取完整路径中的文件名称
-std::string GetFileName(char* pstrFullPath)
-{
-    std::string strRet = "";
-    if(nullptr == pstrFullPath) return strRet;
-
-    char* pLastSlash = strrchr(pstrFullPath, '/'); //find last slash
-    if(nullptr == pLastSlash)
-        strRet = pstrFullPath;
-    else
-        strRet = pLastSlash + 1;
-
-    return strRet;
-}
-
-bool GetCurModulePath(char* pstrLibPath, char* pstrLibName)
-{
-    Dl_info path_info;
-    char sPath[256];
-    memset(sPath, 0x00, sizeof(sPath));
-
-    dladdr((void*)GetCurModulePath, &path_info); //根据内存空间所在地址 获取当前模块完整路径
-    strcpy(sPath, path_info.dli_fname);
-
-    char *pLastSlash=strrchr(sPath, '/'); //find last slash
-    if(nullptr != pLastSlash)
-    {
-        *pLastSlash=0;
-        if(nullptr != pstrLibPath)
-            strcpy(pstrLibPath, sPath);
-
-        if(nullptr != pstrLibName)
-            strcpy(pstrLibName, pLastSlash + 1);
-
-        return true;
-    }
-    return false;
-}
-
-//加载SO
-void* LoadSO(char* pstrSOName)
-{
-    void* pSO = nullptr;
-    char sPath[256];
-    char sFullPath[256];
-    memset(sPath, 0x00, sizeof(sPath));
-    memset(sFullPath, 0x00, sizeof(sFullPath));
-
-    bool bRet = GetCurModulePath(sPath, nullptr);
-    if(bRet)
-    {
-        sprintf(sFullPath, "%s/%s", sPath, pstrSOName); //拼出so完整路径
-        pSO = dlopen(sFullPath, RTLD_LAZY); //RTLD_NOW
-        if (nullptr == pSO)
-            printf("LoadSO()->dlopen(%s, RTLD_LAZY) fail, dlerror=[%s]", sFullPath, dlerror());
-        else
-            printf("LoadSO()->dlopen(%s, RTLD_LAZY) OK!!!", sFullPath);
-    }
-    return pSO;
-}
-
-
-void* GetPtr(void* pVoid)
-{
-    void* ptrTmp = pVoid;
-    return ptrTmp;
-}
-
-
-
-bool CkLog_FuncTracer::m_bCkLogExtendInf = false;
-
-//==> Enter {GetEncryptFunc}, file: {PinPadClassImpl_ZT598M.cpp}, line: {1001}.
-//根据整型变量占空间的大小判断类型
-CkLog_FuncTracer::CkLog_FuncTracer(const char* pszFunc, const char* pszFile, int nLine, void* pfRet, int iSize)
-{
-    memset(m_pszFunc, 0x00, sizeof(m_pszFunc));
-    memset(m_pszFile, 0x00, sizeof(m_pszFile));
-
-    snprintf(m_pszFunc,sizeof(m_pszFunc), "%s", pszFunc);
-    snprintf(m_pszFile,sizeof(m_pszFile), "%s", pszFile);
-    m_nLine = nLine;
-
-    m_psfRet = nullptr; //INT16
-    m_pifRet = nullptr; //INT32
-    m_plfRet = nullptr; //INT64
-    if(sizeof(short) == iSize)
-        m_psfRet =(short*)pfRet;
-    else if(sizeof(int) == iSize)
-        m_pifRet =(int*)pfRet;
-    else if(sizeof(long) == iSize)
-        m_plfRet =(long*)pfRet;
-
-#if defined(CKLOG)
-    pLOG->TraceInFormat(TRM_INT, TRM_LV_COMMN, "==> Enter {%s}, file: {%s}, line: {%d}.", m_pszFunc, m_pszFile, m_nLine);
-#endif
-}
-
-//<== Leave {DevOpen}, file: {PinPadClassImpl_ZT598M.cpp}, line: {171}.
-CkLog_FuncTracer::~CkLog_FuncTracer()
-{
-#if defined(CKLOG)
-    if(nullptr != m_psfRet)
-        pLOG->TraceInFormat(TRM_INT, TRM_LV_COMMN, "<== Leave {%s}, file: {%s}, line: {%d} , short RetCode=[%d].", m_pszFunc, m_pszFile, m_nLine, *m_psfRet);
-    else if(nullptr != m_pifRet)
-        pLOG->TraceInFormat(TRM_INT, TRM_LV_COMMN, "<== Leave {%s}, file: {%s}, line: {%d} , int RetCode=[%d].", m_pszFunc, m_pszFile, m_nLine, *m_pifRet);
-    else if(nullptr != m_plfRet)
-        pLOG->TraceInFormat(TRM_INT, TRM_LV_COMMN, "<== Leave {%s}, file: {%s}, line: {%d} , long RetCode=[%ld].", m_pszFunc, m_pszFile, m_nLine, *m_plfRet);
-    else
-        pLOG->TraceInFormat(TRM_INT, TRM_LV_COMMN, "<== Leave {%s}, file: {%s}, line: {%d}.", m_pszFunc, m_pszFile, m_nLine);
-#endif
-}
-

+ 0 - 425
DevAdapter/keba/ThermalPrint.keba.1.1/CkLog.h

@@ -1,425 +0,0 @@
-// CkLog.h: interface for the CkLog class.
-#ifndef CKLOG_H
-#define CKLOG_H
-
-#define CMBLOG4            //是否使用招行日志库开关
-#define CKLOG              //是否使用公司日志库开关
-
-#include <stdio.h>
-#include <fstream>
-#include <string>
-#include <iostream>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <unistd.h>
-//#include <thread>
-#include <stdarg.h>
-#include <ctime>
-#include <time.h>
-#include <sys/time.h>
-#include <pthread.h>
-#include <sys/prctl.h>
-#include <sys/syscall.h>
-#include <dlfcn.h>
-#include "wintypes.h"
-
-
-#if defined(CMBLOG4)
-#include "log4vendor.h"
-#endif
-
-#if defined(CKLOG)
-#include "CommDef.h"
-#include "TraceManager.h"
-#endif
-
-using namespace std;
-
-//#ifdef __cplusplus
-//extern "C" {
-//#endif
-
-/* 字节对齐设置为1 */
-//#pragma pack(push,1)
-#define TRACE_LEN			(MAXWORD / 2)
-
-
-#ifndef __linux__
-#include "windows.h"
-#define GetProcessId()  GetCurrentProcessId()
-#define GetThreadId()  GetCurrentThreadId()
-#else
-//名字的长度最大为15字节,且应该以'\0'结尾  prctl(PR_SET_NAME, (char*)arg);
-#define set_thread_name(name)   prctl(PR_SET_NAME, (char*)name)
-//prctl(PR_GET_NAME, (unsigned long)name);
-#define get_thread_name(name)   prctl(PR_GET_NAME, (unsigned long)name)
-//或者使用  PID= syscall(__NR_getpid)
-#define GetProcessId()  getpid()
-//或者使用  TID= syscall(SYS_gettid)
-#define GetThreadId()   syscall(__NR_gettid)
-#endif
-
-//获取完整路径中的文件名称
-std::string GetFileName(char* pstrFullPath);
-//获取当前程序所在路径和文件名
-bool GetCurModulePath(char* pstrLibPath, char* pstrLibName);
-//加载so动态库
-void* LoadSO(char* pstrSOName);
-//获取指针
-void* GetPtr(void* pVoid=nullptr);
-
-//利用构造和析构记录函数进出类
-class CkLog_FuncTracer
-{
-public:
-    static bool m_bCkLogExtendInf;
-
-    CkLog_FuncTracer(const char* pszFunc, const char* pszFile, int nLine, void* pfRet, int iSize);
-    ~CkLog_FuncTracer();
-private:
-        char m_pszFunc[256];
-        char m_pszFile[256];
-        int m_nLine;
-        short* m_psfRet; //INT16
-        int* m_pifRet;   //INT32
-        long* m_plfRet;  //INT64
-};
-
-//declare
-//CMB日志声明,暂未用到
-#if defined(CMBLOG4)
-#define CMBLOG4_DECLARE()
-#else
-#define CMBLOG4_DECLARE()
-#endif
-
-//CK日志声明
-#if defined(CKLOG)
-#define CKLOG_DECLARE()   \
-        CTraceManager *pLOG;
-#else
-#define CKLOG_DECLARE()
-#endif
-
-//initialize
-//CMB日志初始化
-#if defined(CMBLOG4)
-#define CMBLOG4_INIT(modName, logPath, fileName) \
-    do {   \
-    std::string err_msg=""; \
-    cmb::log4vendor::instance(); \
-    cmb::log_init_config config_mod; \
-    config_mod.dev_name = modName; \
-    config_mod.log_type = CMB_LOG_TYPE_FILE; \
-    config_mod.log_dir = logPath; \
-    cmb::log4vendor::init(config_mod, err_msg); \
-    } while (0);
-#else
-#define CMBLOG4_INIT(modName, logPath, fileName)
-#endif
-
-//CMB日志初始化2
-#if defined(CMBLOG4)
-#define CMBLOG4_INIT_P(modName, logPath, fileName) \
-    do {   \
-    char err_msg[VENDOR_BUFF_SIZE] = { '\0' }; \
-    cmb::log4vendor::instance(); \
-    cmb::log_init_config_c config_mod; \
-    strcpy(config_mod.dev_name, modName); \
-    config_mod.log_type = CMB_LOG_TYPE_FILE; \
-    strcpy(config_mod.log_dir, logPath);    \
-    cmb::log4vendor::initp(&config_mod, err_msg); \
-    } while (0);
-#else
-#define CMBLOG4_INIT_P(modName, logPath, fileName)
-#endif
-
-//CK日志初始化
-#if defined(CKLOG)
-#define CKLOG_INIT(modName, logPath, fileName)   \
-        pLOG = new CTraceManager(); \
-        pLOG->Register(fileName);
-#else
-#define CKLOG_INIT(modName, logPath, fileName)
-#endif
-
-//EXTERN
-//CK日志扩展声明
-#if defined(CKLOG)
-#define CKLOG_EXTERN()   \
-        extern CTraceManager *pLOG;
-#else
-#define CKLOG_EXTERN()
-#endif
-
-//CMB 的函数进出记录功能
-#if defined(CMBLOG4)
-#define CMBLOG4_FUNCTION()   \
-        LOG4VTM_FUNCTION();
-#else
-#define CMBLOG4_FUNCTION()
-#endif
-
-//CMB的函数进出和INT32返回值记录功能
-#if defined(CMBLOG4)
-#define CMBLOG4_FUNCTION_INT32(RetVar)   \
-        cmb::log4vendor_tracer _FunctionLoggerCMB(__FUNCTION__, cmb::log4vendor_tracer::_get_file_name(__FILE__), __LINE__, (int*)GetPtr(RetVar));
-#else
-#define CMBLOG4_FUNCTION_INT32(RetVar)
-#endif
-
-//CMB的函数进出和INT64返回值记录功能
-#if defined(CMBLOG4)
-#define CMBLOG4_FUNCTION_INT64(RetVar)   \
-        cmb::log4vendor_tracer _FunctionLoggerCMB(__FUNCTION__, cmb::log4vendor_tracer::_get_file_name(__FILE__), __LINE__, (long*)GetPtr(RetVar));
-#else
-#define CMBLOG4_FUNCTION_INT64(RetVar)
-#endif
-
-//CK的函数进出记录功能
-#if defined(CKLOG)
-#define CKLOG_FUNCTION()  \
-            CkLog_FuncTracer _FunctionLoggerCK(__FUNCTION__, GetFileName(__FILE__).c_str(), __LINE__, nullptr, 0);
-#else
-#define CKLOG_FUNCTION()
-#endif
-
-//CK的函数进出和INT返回值记录功能
-#if defined(CKLOG)
-#define CKLOG_FUNCTION_INT(RetVar)  \
-            CkLog_FuncTracer _FunctionLoggerCK(__FUNCTION__, GetFileName(__FILE__).c_str(), __LINE__, GetPtr(&RetVar), sizeof(RetVar));
-#else
-#define CKLOG_FUNCTION_INT(RetVar)
-#endif
-
-//CMB 记录普通日志
-#if defined(CMBLOG4)
-#define LOG_CMBLOG4(logLevel, ...)  \
-    do {   \
-            int iCkLog_BufLen = snprintf(NULL, 0, ## __VA_ARGS__);  \
-            char CkLog_Buf[512 + iCkLog_BufLen];         \
-             memset(CkLog_Buf, 0x00, sizeof(CkLog_Buf));      \
-            if(CkLog_FuncTracer::m_bCkLogExtendInf)         \
-                snprintf(CkLog_Buf, sizeof(CkLog_Buf), " Pid[%d],Tid[%d],{%s}[%d]<%s>: ", GetProcessId(), GetThreadId(), GetFileName(__FILE__).c_str(), __LINE__, __FUNCTION__);  \
-            else \
-                snprintf(CkLog_Buf, sizeof(CkLog_Buf), " : ");  \
-            snprintf(CkLog_Buf + strlen(CkLog_Buf), iCkLog_BufLen+1, ## __VA_ARGS__);  \
-            LOG4VTM(logLevel, CkLog_Buf);      \
-    } while (0);
-#else
-#define LOG_CMBLOG4(logLevel, ...)
-#endif
-
-//CMB 记录bin日志
-#if defined(CMBLOG4)
-#define LOGX_CMBLOG4(logLevel, pData, Len, ...)  \
-    do {   \
-            std::string strCkLog_Data=""; \
-            std::string strCkLog_Tmp="";  \
-            int iCkLog_useLen=0, iCkLog_restLen=(int)Len; \
-            int iCkLog_printLen, iCkLog_i;  \
-            unsigned char* CkLog_p = nullptr; \
-            char CkLog_TmpBuf[256]; \
-            int iCkLog_BufLen = snprintf(NULL, 0, ## __VA_ARGS__);  \
-            char CkLog_Buf[512 + iCkLog_BufLen];         \
-            memset(CkLog_Buf, 0x00, sizeof(CkLog_Buf));      \
-            if(CkLog_FuncTracer::m_bCkLogExtendInf)         \
-                snprintf(CkLog_Buf, sizeof(CkLog_Buf), " Pid[%d],Tid[%d],{%s}[%d]<%s>:Len=[%d] ", GetProcessId(), GetThreadId(), GetFileName(__FILE__).c_str(), __LINE__, __FUNCTION__, (int)Len);  \
-            else \
-                snprintf(CkLog_Buf, sizeof(CkLog_Buf), " :Len=[%d] ", (int)Len);  \
-            snprintf(CkLog_Buf + strlen(CkLog_Buf), iCkLog_BufLen+1, ## __VA_ARGS__);  \
-            sprintf(CkLog_Buf + strlen(CkLog_Buf), "\n");  \
-            strCkLog_Data = CkLog_Buf; \
-          if((int)Len > 0) \
-          { \
-                memset(CkLog_TmpBuf, 0x00, sizeof(CkLog_TmpBuf));      \
-                for(iCkLog_i = 0; iCkLog_i <= 0xF; iCkLog_i++) sprintf(CkLog_TmpBuf + strlen(CkLog_TmpBuf), "-%X-", iCkLog_i); \
-                sprintf(CkLog_TmpBuf + strlen(CkLog_TmpBuf), "\n"); \
-                strCkLog_Tmp = CkLog_TmpBuf;  \
-                strCkLog_Data = strCkLog_Data + strCkLog_Tmp; \
-               while( iCkLog_restLen > 0 ) \
-               { \
-                   CkLog_p = (unsigned char*)pData + iCkLog_useLen; \
-                   iCkLog_printLen = iCkLog_restLen<16 ? iCkLog_restLen : 16; \
-                    memset(CkLog_TmpBuf, 0x00, sizeof(CkLog_TmpBuf));      \
-                   for(iCkLog_i=0; iCkLog_i < iCkLog_printLen; iCkLog_i++) sprintf(CkLog_TmpBuf + strlen(CkLog_TmpBuf), "%02x ", *(CkLog_p + iCkLog_i)); \
-                    sprintf(CkLog_TmpBuf + strlen(CkLog_TmpBuf), "\n"); \
-                    strCkLog_Tmp = CkLog_TmpBuf;  \
-                    strCkLog_Data = strCkLog_Data + strCkLog_Tmp; \
-                   iCkLog_useLen  += iCkLog_printLen; \
-                   iCkLog_restLen -= iCkLog_printLen; \
-               } \
-           } \
-                LOG4VTM(logLevel, strCkLog_Data.c_str()); \
-        } while (0);
-#else
-#define LOGX_CMBLOG4(logLevel, pData, Len, ...)
-#endif
-
-//CK 记录普通日志功能
-//bool TraceInFormat( int nType, int nLevel, char* lpszTraceData, ... );
-#if defined(CKLOG)
-#define LOG_CKLOG(logLevel, ...)  \
-    do {   \
-        int iCkLog_BufLen = snprintf(NULL, 0, ## __VA_ARGS__);  \
-        char CkLog_Buf[512 + iCkLog_BufLen];         \
-        memset(CkLog_Buf, 0x00, sizeof(CkLog_Buf));      \
-        if(CkLog_FuncTracer::m_bCkLogExtendInf)         \
-            snprintf(CkLog_Buf, sizeof(CkLog_Buf), " Pid[%d],Tid[%d],{%s}[%d]<%s>: ", GetProcessId(), GetThreadId(), GetFileName(__FILE__).c_str(), __LINE__, __FUNCTION__);  \
-        else \
-            snprintf(CkLog_Buf, sizeof(CkLog_Buf), " : ");  \
-        snprintf(CkLog_Buf + strlen(CkLog_Buf), iCkLog_BufLen+1, ## __VA_ARGS__);  \
-        pLOG->TraceInFormat(TRM_INT, logLevel, "%s", CkLog_Buf);  \
-        } while (0);
-#else
-#define LOG_CKLOG(logLevel, ...)
-#endif
-
-//CK 记录bin日志功能
-//bool TraceInBuffer( int nType, int nLevel, unsigned char* lpbyTraceData, unsigned int uDataLen, char* lpszMsg = NULL,
-//unsigned int* lpuMaskOffsetArray = NULL, unsigned int* lpuMaskLenArray = NULL, unsigned int uMaskCnt = 0 );
-#if defined(CKLOG)
-#define LOGX_CKLOG(logLevel, pData, Len, ...)  \
-    do {   \
-    int iCkLog_BufLen = snprintf(NULL, 0, ## __VA_ARGS__);  \
-    char CkLog_Buf[512 + iCkLog_BufLen];         \
-    memset(CkLog_Buf, 0x00, sizeof(CkLog_Buf));      \
-    if(CkLog_FuncTracer::m_bCkLogExtendInf)         \
-        snprintf(CkLog_Buf, sizeof(CkLog_Buf), " Pid[%d],Tid[%d],{%s}[%d]<%s>: ", GetProcessId(), GetThreadId(), GetFileName(__FILE__).c_str(), __LINE__, __FUNCTION__);  \
-    else \
-        snprintf(CkLog_Buf, sizeof(CkLog_Buf), " : ");  \
-    snprintf(CkLog_Buf + strlen(CkLog_Buf), iCkLog_BufLen+1, ## __VA_ARGS__);  \
-    pLOG->TraceInBuffer(TRM_INT, logLevel, (unsigned char*)pData, (unsigned int)Len, CkLog_Buf);  \
-    } while (0);
-#else
-#define LOGX_CKLOG(logLevel, pData, Len, ...)
-#endif
-
-/*
-#define CMB_LOG_TRACE   1
-#define CMB_LOG_DEBUG   2
-#define CMB_LOG_INFO    3
-#define CMB_LOG_WARN    4
-#define CMB_LOG_ERROR   5
-#define CMB_LOG_FATAL   6
-*/
-/*
-#define TRM_LV_COMMN            (0x0001)
-#define TRM_LV_WARNG            (0x0002)
-#define TRM_LV_ERROR            (0x0004)
-#define TRM_LV_DEBUG            (0x0008)
-*/
-
-/*记录日志入口函数 Start*/
-//declare
-//CMB和CK 日志声明入口
-#define LOG_DECLARE()   \
-        CMBLOG4_DECLARE() \
-        CKLOG_DECLARE()
-
-//initialize
-//CMB和CK 日志初始化入口
-#define LOG_INIT(modName, logPath, fileName) \
-    CMBLOG4_INIT(modName, logPath, fileName) \
-    CKLOG_INIT(modName, logPath, fileName)
-
-//CMB和CK 日志初始化入口2
-#define LOG_INIT_P(modName, logPath, fileName) \
-    CMBLOG4_INIT_P(modName, logPath, fileName) \
-    CKLOG_INIT(modName, logPath, fileName)
-
-//CMB和CK 日志扩展声明
-#define LOG_EXTERN() \
-    CKLOG_EXTERN()
-
-//CMB和CK 记录进出函数信息日志入口
-#define LOG_FUNCTION()  \
-    CMBLOG4_FUNCTION()  \
-    CKLOG_FUNCTION()
-
-//CK 记录进出函数信息和short返回值 日志入口
-#define LOG_FUNCTION_INT16(RetVar)  \
-    CKLOG_FUNCTION_INT(RetVar)
-
-//CMB和CK 记录进出函数信息和int返回值 日志入口
-#define LOG_FUNCTION_INT32(RetVar)  \
-    CMBLOG4_FUNCTION_INT32(&RetVar)  \
-    CKLOG_FUNCTION_INT(RetVar)
-
-//CMB和CK 记录进出函数信息和long返回值 日志入口
-#define LOG_FUNCTION_INT64(RetVar)  \
-    CMBLOG4_FUNCTION_INT64(&RetVar)  \
-    CKLOG_FUNCTION_INT(RetVar)
-
-//CMB和CK 记录普通错误日志入口
-#define LogE(...) \
-    do {   \
-    LOG_CMBLOG4(ERROR, ## __VA_ARGS__)     \
-    LOG_CKLOG(TRM_LV_ERROR, ## __VA_ARGS__)   \
-    } while (0);
-
-//CMB和CK 记录普通警告日志入口
-#define LogW(...) \
-    do {   \
-    LOG_CMBLOG4(WARN, ## __VA_ARGS__)     \
-    LOG_CKLOG(TRM_LV_WARNG, ## __VA_ARGS__)   \
-    } while (0);
-
-//CMB和CK 记录普通一般信息日志入口
-#define LogM(...) \
-    do {   \
-    LOG_CMBLOG4(INFO, ## __VA_ARGS__)     \
-    LOG_CKLOG(TRM_LV_COMMN, ## __VA_ARGS__)   \
-    } while (0);
-
-//CMB和CK 记录普通调试信息日志入口
-#define LogD(...) \
-    do {   \
-    LOG_CMBLOG4(DEBUG, ## __VA_ARGS__)     \
-    LOG_CKLOG(TRM_LV_DEBUG, ## __VA_ARGS__)   \
-    } while (0);
-
-/*
-#define TRM_LV_COMMN            (0x0001)
-#define TRM_LV_WARNG            (0x0002)
-#define TRM_LV_ERROR            (0x0004)
-#define TRM_LV_DEBUG            (0x0008)
-*/
-//CMB和CK  记录bin(HEX表示)数据 错误级别 日志入口
-#define LogXE(pData, Len, ...) \
-    do {   \
-    LOGX_CMBLOG4(ERROR, pData, Len, ## __VA_ARGS__) \
-    LOGX_CKLOG(TRM_LV_ERROR, pData, Len, ## __VA_ARGS__) \
-    } while (0);
-
-//CMB和CK  记录bin(HEX表示)数据 警告级别 日志入口
-#define LogXW(pData, Len, ...) \
-    do {   \
-    LOGX_CMBLOG4(WARN, pData, Len, ## __VA_ARGS__) \
-    LOGX_CKLOG(TRM_LV_WARNG, pData, Len, ## __VA_ARGS__) \
-    } while (0);
-
-//CMB和CK  记录bin(HEX表示)数据 一般信息级别 日志入口
-#define LogXM(pData, Len, ...) \
-    do {   \
-    LOGX_CMBLOG4(INFO, pData, Len, ## __VA_ARGS__) \
-    LOGX_CKLOG(TRM_LV_COMMN, pData, Len, ## __VA_ARGS__) \
-    } while (0);
-
-//CMB和CK  记录bin(HEX表示)数据 调试信息级别 日志入口
-#define LogXD(pData, Len, ...) \
-    do {   \
-    LOGX_CMBLOG4(DEBUG, pData, Len, ## __VA_ARGS__) \
-    LOGX_CKLOG(TRM_LV_DEBUG, pData, Len, ## __VA_ARGS__) \
-    } while (0);
-
-/*记录日志入口函数 End*/
-
-/*   恢复字节对齐方式   */
-//#pragma pack(pop)
-
-//#ifdef __cplusplus
-//}       /*extern "C"*/
-//#endif
-
-#endif

+ 0 - 2034
DevAdapter/keba/ThermalPrint.keba.1.1/DevCtrl.cpp

@@ -1,2034 +0,0 @@
-#include "stdafx.h"
-#include "DevCtrl.h"
-
-CSerialComm g_SerialComm;
-LOG_EXTERN()
-//////////////////////////////////////////////////
-//Function Name: Device construct
-//00-01-00-01 2016-12-15 Lichun(Create)
-//////////////////////////////////////////////////
-DeviceCtrl::DeviceCtrl()
-{
-    m_hComLib = NULL;								//Default value
-    m_wPaperWidth = 80;
-    m_bOpened = false;
-    memset( m_cDeviceID, 0x00, sizeof (m_cDeviceID));
-    memset( m_cDevType, 0x00, sizeof(m_cDevType) );
-    memset( m_cFWMain, 0x00, sizeof(m_cFWMain) );
-    memset( m_cFWBoot, 0x00, sizeof(m_cFWBoot) );
-}
-
-//////////////////////////////////////////////////
-//Function Name: Device destruct
-//00-01-00-01 2016-12-15 Lichun(Create)
-//////////////////////////////////////////////////
-DeviceCtrl::~DeviceCtrl()
-{
-    g_SerialComm.Disconnect(m_hDevHnd);
-}
-
-//////////////////////////////////////////////////
-//Function Name: Open
-//00-01-00-01 2016-12-15 Lichun(Create)
-//////////////////////////////////////////////////
-DWORD	DeviceCtrl::Open(LPSTR cDeviceID, int dwBaudRate)
-{
-	LOG_FUNCTION();
-    memcpy(m_cDeviceID, cDeviceID, strlen(cDeviceID));
-    // 接收串口号
-    int ret = g_SerialComm.Connect(cDeviceID, dwBaudRate, 2, 1, &m_hDevHnd, 8);
-    if( ret == 0) //返回0, 串口打开成功
-    {
-        LogM("串口打开成功: %d   COM:%s\r\n", ret, m_cDeviceID);
-    }
-    else
-    {
-        m_bOpened = false;
-        return CONNECT_ERROR;
-    }
-    m_bOpened = true;
-    return ERROR_SUCCESS;
-}
-
-//////////////////////////////////////////////////
-//Function Name: Close
-//00-01-00-01 2016-12-15 Lichun(Create)
-//////////////////////////////////////////////////
-DWORD	DeviceCtrl::Close()
-{
-    m_bOpened = false;
-    g_SerialComm.Disconnect(m_hDevHnd);
-    return ERROR_SUCCESS;
-}
-
-//////////////////////////////////////////////////
-//Function Name: GetPrinterStatus
-//00-01-00-01 2016-12-15 Lichun(Create)
-//////////////////////////////////////////////////
-BOOL	DeviceCtrl::GetStatus( const LPBYTE lpbyPrinterStatus )
-{
-    LOG_FUNCTION();
-    CHAR	cPrinterStatus[STATUS_BUF_LEN];
-    int ret;
-    LogM("GetStatus is call");
-    memset( cPrinterStatus, 0x00, sizeof(cPrinterStatus) );
-    // 获取打印机实时状态指令
-    BYTE sCommand[] ={0x1D, 0x61, 0x0E};
-    COMRESULT stComResult;
-    memset(&stComResult, 0x00, sizeof (stComResult));
-
-    //Check parameter
-    if ( lpbyPrinterStatus == NULL )
-    {
-        LogE("GetStatus lpbyPrinterStatus is null");
-        return FALSE;
-    }
-
-    //Check connection
-    if (m_bOpened == false)
-    {
-        ret = g_SerialComm.Connect(m_cDeviceID, 38400, 0, 2, &m_hDevHnd, 8);
-        if (ret != 0)			//Connect failed
-        {
-            LogE("GetStatus f_OpenDeviceByID fail.");
-            return FALSE;
-        }
-    }
-    else											//Connect success
-    {	//Get current status
-        if(g_SerialComm.SendAndReceive(m_hDevHnd, sCommand, strlen((char*)sCommand), 10, &stComResult) != 0)
-        {
-            sleep(1);
-            if(g_SerialComm.SendAndReceive(m_hDevHnd, sCommand, strlen((char*)sCommand), 10, &stComResult) != 0)
-            {
-                LogXE(sCommand, strlen((char*)sCommand), "Send");
-                g_SerialComm.Disconnect(m_hDevHnd);				//Get status failed
-                m_hDevHnd = NULL;
-                return FALSE;
-            }
-        }
-    }
-    LogXM(sCommand, strlen((char*)sCommand), "Send");
-    LogXM(stComResult.Buff, strlen((char*)stComResult.Buff), "Receive");
-    //Copy status
-    memcpy( lpbyPrinterStatus, stComResult.Buff, stComResult.Length );
-    LogXM(lpbyPrinterStatus,  STATUS_BUF_LEN,  "status");
-    return TRUE;
-}
-
-BOOL  DeviceCtrl::Reset()
-{
-    BOOL bRet = TRUE;
-
-    if (m_hDevHnd ==NULL)
-    {
-        return FALSE;
-    }
-    if (SendCommand(INITIALIZ) != ERROR_SUCCESS)
-    {
-        return FALSE;
-    }
-    return bRet;
-}
-
-
-/////////////////////////////////////////////////////
-//Function Name: SendCommand
-//00-01-00-01 2016-12-20 Lichun(Create)
-/////////////////////////////////////////////////////
-DWORD	DeviceCtrl::SendCommand( WORD wOperationID, LPBYTE lpbyOptionData, WORD wDataSize )
-{
-    INT		iRet = 0;
-    WORD	wCmdSize = 0;
-    BYTE	byCmdData[16];
-    BOOL	bFlag = FALSE;
-    BYTE	*byExeData = NULL;
-    memset( byCmdData, 0x00, sizeof(byCmdData) );
-	LOG_FUNCTION();
-    if (wOperationID == FEEDMARKSTART)	//Feed Paper to Start Position
-    {
-        byCmdData[0] = 0x1D;	//GS
-        byCmdData[1] = 0x0C;	//FF
-        wCmdSize = 2;
-    }
-    else if (wOperationID == DIRECTPRINT)
-    {
-        byCmdData[0] = 0x0D;	//CR
-        wCmdSize = 1;
-    }
-    else if (wOperationID == FEEDLINEPRINT)
-    {
-        byCmdData[0] = 0x0A;	//LF
-        wCmdSize = 1;
-    }
-    else if (wOperationID == SETFONTROTATE)
-    {
-        byCmdData[0] = 0x1B;	//ESC V
-
-        if (wDataSize == 1)
-        {
-            switch (lpbyOptionData[0])
-            {
-            case 3:					//逆时针转90
-                {
-                    byCmdData[1] = 0x12;
-                    wCmdSize = 2;
-                }
-                break;
-            case 1:
-                {
-                    byCmdData[1] = 0x56;
-                    byCmdData[2] = 0x01;	//顺时钟转90
-                    wCmdSize = 3;
-                }
-                break;
-            case 0:
-            default:
-                {
-                    byCmdData[1] = 0x56;
-                    byCmdData[2] = 0x00;
-                    wCmdSize = 3;
-                }
-                break;
-            }
-        }
-    }
-    else if (wOperationID == FEEDMULTPRINT)
-    {
-        byCmdData[0] = 0x1B;	//ESC d
-        byCmdData[1] = 0x64;
-        byCmdData[2] = lpbyOptionData[0];
-        wCmdSize = 3;
-    }
-    else if (wOperationID == PAGEMODPRINT)
-    {
-        byCmdData[0] = 0x1B;	//ESC
-        byCmdData[1] = 0x0C;	//FF
-        wCmdSize = 2;
-    }
-    else if (wOperationID == BMMODPRINT)
-    {
-        byCmdData[0] = 0x0C;	//FF
-        wCmdSize = 1;
-    }
-    else if (wOperationID == SETHRIPRINTPOS)
-    {
-        byCmdData[0] = 0x1D;	//GS
-        byCmdData[1] = 0x48;	//H
-        if ((lpbyOptionData != NULL) && (wDataSize == 1))
-        {
-            byCmdData[2] = lpbyOptionData[0];
-        }
-        wCmdSize = 3;
-    }
-    else if (wOperationID == SETBARCODEHEIGHT)
-    {
-        byCmdData[0] = 0x1D;	//GS
-        byCmdData[1] = 0x68;	//h
-        if ((lpbyOptionData != NULL) && (wDataSize == 1))
-        {
-            byCmdData[2] = lpbyOptionData[0];
-        }
-        wCmdSize = 3;
-    }
-    else if (wOperationID == SETQRCODEPARAM)
-    {
-        byCmdData[0] = 0x1D;	//GS
-        byCmdData[1] = 0x6F;	//o
-        byCmdData[2] = 0x00;	//0
-        if ((lpbyOptionData != NULL) && (wDataSize == 1))
-        {
-            byCmdData[3] = lpbyOptionData[0];
-        }
-        byCmdData[4] = 0;
-        byCmdData[5] = 0x02;
-        wCmdSize = 6;
-    }
-    else if (wOperationID == SETBARCODEPRINT)
-    {
-        if ((lpbyOptionData != NULL) && (wDataSize > 2))
-        {
-            WORD wDataLen = lpbyOptionData[1];
-            if (wDataLen >= (wDataSize - 2))
-            {
-                bFlag = TRUE;
-                byExeData = new BYTE[wDataSize + 3];
-                memset(byExeData, 0, wDataSize + 3);
-                byExeData[0] = 0x1D;	//GS
-                byExeData[1] = 0x6B;	//k
-                memcpy(&byExeData[2], lpbyOptionData, wDataSize);
-                wCmdSize = wDataSize + 3;
-            }
-            else
-            {
-                return INVALID_DATA;
-            }
-        }
-        else
-        {
-            return INVALID_DATA;
-        }
-    }
-    else if (wOperationID == SETPDF417INFO)
-    {
-        byCmdData[0] = 0x1D;	//GS
-        byCmdData[1] = 0x70;	//p
-        if ((lpbyOptionData != NULL) && (wDataSize == 6))
-        {
-            memcpy(&byCmdData[2], lpbyOptionData, wDataSize);
-        }
-        else
-        {
-            return INVALID_DATA;
-        }
-        wCmdSize = 8;
-    }
-    else if (wOperationID == SETPDF417ERRORLEVEL)
-    {
-        byCmdData[0] = 0x1D;	//GS
-        byCmdData[1] = 0x71;	//q
-        if ((lpbyOptionData != NULL) && (wDataSize == 1))
-        {
-            byCmdData[2] = lpbyOptionData[0];
-        }
-        else
-        {
-            return INVALID_DATA;
-        }
-        wCmdSize = 3;
-    }
-    else if (wOperationID == SETRASTERBMPPRINT)
-    {
-        if ((wDataSize >= 4)&&
-            (lpbyOptionData != NULL))
-        {
-            bFlag = TRUE;
-            byExeData = new BYTE[wDataSize + 7];
-            if (byExeData == NULL)
-            {
-                return INVALID_DATA;
-            }
-            memset(byExeData, 0, wDataSize + 7);
-            byExeData[0] = 0x1D;	//GS
-            byExeData[1] = 0x76;	//v
-            byExeData[2] = 0x30;
-            byExeData[3] = 0;
-            memcpy(&byExeData[4], lpbyOptionData, wDataSize);
-            byExeData[wDataSize + 5] = 0x0a;
-            byExeData[wDataSize + 6] = 0x00;
-            wCmdSize = wDataSize + 6;
-        }
-        else
-        {
-            return INVALID_DATA;
-        }
-    }
-    else if (wOperationID == SETBARCODEWIDTH)
-    {
-        byCmdData[0] = 0x1D;	//GS
-        byCmdData[1] = 0x77;	//w
-        if ((lpbyOptionData != NULL) && (wDataSize == 1))
-        {
-            byCmdData[2] = lpbyOptionData[0];
-        }
-        else
-        {
-            return INVALID_DATA;
-        }
-        wCmdSize = 3;
-    }
-    else if (wOperationID == PAPERDIRCETCUT)
-    {
-        byCmdData[0] = 0x1D;	//GS
-        byCmdData[1] = 0x56;	//V
-        byCmdData[2] = 0x01;	//1
-        wCmdSize = 3;
-    }
-    else if (wOperationID == PAPERDIRCETCUTEX)	//全切
-    {
-        byCmdData[0] = 0x1D;	//GS
-        byCmdData[1] = 0x56;	//V
-        byCmdData[2] = 0x00;	//0
-        wCmdSize = 3;
-    }
-    else if (wOperationID == PAPERFEEDCUT)	//
-    {
-        byCmdData[0] = 0x1D;	//GS
-        byCmdData[1] = 0x56;	//V
-        byCmdData[2] = 0x41;	//66
-        byCmdData[3] = 0x00;	//0
-        wCmdSize = 4;
-    }
-    else if (wOperationID == SETFONTINVERSE)	//反白
-    {
-        byCmdData[0] = 0x1D;	//GS
-        byCmdData[1] = 0x42;	//B
-        if ((wDataSize == 1) && ((lpbyOptionData[0] & 0x01) == 0x01))
-        {
-            byCmdData[2] = 0x01;
-        }
-        else
-        {
-            byCmdData[2] = 0x00;	//0
-        }
-        wCmdSize = 3;
-    }
-    else if (wOperationID == INITIALIZ)
-    {
-        byCmdData[0] = 0x1B;	//ESC
-        byCmdData[1] = 0x40;	//@
-        wCmdSize = 2;
-    }
-    else if (wOperationID == RESET)
-    {
-        if (lpbyOptionData == NULL)
-        {
-            return INVALID_BUFFER;
-        }
-        byCmdData[0] = 0x10;	//DLE
-        byCmdData[1] = 0x05;	//ENQ
-        if ((wDataSize > 0)&&
-            (lpbyOptionData[0]>=0x01)&&
-            (lpbyOptionData[0]<=0x02))	//1~2
-        {
-            byCmdData[2] = lpbyOptionData[0];
-            wCmdSize = 3;
-        }
-        else					//Illegal value
-        {
-            return INVALID_DATA;
-        }
-    }
-    else if (wOperationID == SETTOPPRTPOS)
-    {
-        byCmdData[0] = 0x1D;		//GS
-        byCmdData[1] = 0x54;		//T
-        if ((lpbyOptionData != NULL) && (wDataSize == 1))
-        {
-            byCmdData[2] = lpbyOptionData[0];
-        }
-        wCmdSize = 3;
-    }
-    else if (wOperationID == SETBLACKMARKSUPP)
-    {
-        byCmdData[0] = 0x1B;		//ESC
-        byCmdData[1] = 0x63;		//c
-        byCmdData[2] = 0x30;		//0
-        if ( (wDataSize==1)&&(lpbyOptionData[0]==0) )
-        {
-            byCmdData[3] = 0x00;		//Paper without BM
-        }
-        else
-        {
-            byCmdData[3] = 0x99;		//Paper with BM
-        }
-        wCmdSize = 4;
-    }
-    else if (wOperationID == SETBLACKMARKPARAM)
-    {
-        byCmdData[0] = 0x1D;
-        byCmdData[1] = 0x28;
-        byCmdData[2] = 0x46;
-        if ( (wDataSize == 6)&&
-            (lpbyOptionData != NULL) )
-        {
-            byCmdData[3] = lpbyOptionData[0];
-            byCmdData[4] = lpbyOptionData[1];
-            byCmdData[5] = lpbyOptionData[2];
-            byCmdData[6] = lpbyOptionData[3];
-            byCmdData[7] = lpbyOptionData[4];
-            byCmdData[8] = lpbyOptionData[5];
-            wCmdSize = 9;
-        }
-        else					//Illegal value
-        {
-            return INVALID_DATA;
-        }
-    }
-    else if (wOperationID == GETSTATUS_ASY)
-    {
-        byCmdData[0] = 0x1D;	//GS
-        byCmdData[1] = 0x72;	//r
-        wCmdSize = 2;
-    }
-    else if (wOperationID == SETFONT)
-    {
-        byCmdData[0] = 0x1B;	//ESC
-        byCmdData[1] = 0x66;	//f
-        if ( (wDataSize == 1)&&
-            (lpbyOptionData != NULL) )
-        {
-            byCmdData[2] = lpbyOptionData[0];
-        }
-        else
-        {
-            byCmdData[2] = 0x01;	//Default is 8*16
-        }
-        wCmdSize = 3;
-    }
-    else if (wOperationID == SETREDMODE)
-    {
-        byCmdData[0] = 0x1B;	//ESC
-        byCmdData[1] = 0x67;	//f
-        if ( (wDataSize == 1)&&
-            (lpbyOptionData != NULL) )
-        {
-            byCmdData[2] = lpbyOptionData[0];
-        }
-        else
-        {
-            byCmdData[2] = 0x01;	//Default is 8*16
-        }
-        wCmdSize = 3;
-    }
-    else if (wOperationID == SETINTERCHAR)
-    {
-        byCmdData[0] = 0x1B;	//ESC
-        byCmdData[1] = 0x52;	//R
-        if ( (wDataSize == 1)&&
-            (lpbyOptionData != NULL) )
-        {
-            byCmdData[2] = lpbyOptionData[0];
-        }
-        else
-        {
-            byCmdData[2] = 0x00;	//Default is USA
-        }
-        wCmdSize = 3;
-    }
-    else if (wOperationID == SETDSMODE)
-    {
-        byCmdData[0] = 0x1B;	//ESC
-        byCmdData[1] = 0x47;	//R
-        if ( (wDataSize == 1)&&
-            (lpbyOptionData != NULL) )
-        {
-            byCmdData[2] = lpbyOptionData[0];
-        }
-        else
-        {
-            byCmdData[2] = 0x01;	//Default is DS Mode
-        }
-        wCmdSize = 3;
-    }
-    else if (wOperationID == SETULMODE)
-    {
-        byCmdData[0] = 0x1B;	//ESC
-        byCmdData[1] = 0x55;	//R
-        if ( (wDataSize == 1)&&
-            (lpbyOptionData != NULL) )
-        {
-            byCmdData[2] = lpbyOptionData[0];
-        }
-        else
-        {
-            byCmdData[2] = 0x01;	//Default is UL Mode
-        }
-        wCmdSize = 3;
-    }
-    else if (wOperationID == SETPRINTERMOD)	//字符打印模式
-    {
-        byCmdData[0] = 0x1B;	//ESC
-        byCmdData[1] = 0x21;	//!
-        if ( (wDataSize == 1)&&
-            (lpbyOptionData != NULL) )
-        {
-            byCmdData[2] = lpbyOptionData[0];
-        }
-        else
-        {
-            byCmdData[2] = 0x00;	//Default is Big Char
-        }
-        wCmdSize = 3;
-    }
-    else if (wOperationID == SETFONTCHNMOD)	//汉字字符打印模式
-    {
-        byCmdData[0] = 0x1C;	//FS
-        byCmdData[1] = 0x21;	//!
-        if ( (wDataSize == 1)&&
-            (lpbyOptionData != NULL) )
-        {
-            byCmdData[2] = lpbyOptionData[0];
-        }
-        else
-        {
-            byCmdData[2] = 0x00;	//Default is Big Char
-        }
-        wCmdSize = 3;
-    }
-    else if (wOperationID == SETFONTLRSPACE)	//汉字左右边距设定
-    {
-        byCmdData[0] = 0x1C;	//FS
-        byCmdData[1] = 0x53;	//!
-        byCmdData[2] = 0x00;
-        byCmdData[3] = lpbyOptionData[0];
-        /*if ( (wDataSize == 2)&&
-            (lpbyOptionData != NULL) )
-        {
-            byCmdData[2] = lpbyOptionData[0];
-            byCmdData[3] = lpbyOptionData[1];
-        }*/
-
-        wCmdSize = 4;
-    }
-    else if (wOperationID == SETCHARSIZE)	//设置字符放大倍数
-    {
-        byCmdData[0] = 0x1D;	//GS
-        byCmdData[1] = 0x21;	//!
-        if ( (wDataSize == 1)&&
-            (lpbyOptionData != NULL) )
-        {
-            byCmdData[2] = lpbyOptionData[0];
-        }
-        else
-        {
-            byCmdData[2] = 0x00;	//Default is normal mode
-        }
-        wCmdSize = 3;
-    }
-    else if (wOperationID == SETPRINTPOS)
-    {
-        byCmdData[0] = 0x1B;	//ESC
-        byCmdData[1] = 0x24;	//$
-        if ( (wDataSize == 1)&&
-            (lpbyOptionData != NULL) )
-        {
-            if ((lpbyOptionData[0] > m_wPaperWidth) ||
-                (lpbyOptionData[0] > 255))
-            {
-                return INVALID_DATA;
-            }
-            byCmdData[2] = lpbyOptionData[0];
-        }
-        else
-        {
-            byCmdData[2] = 0x00;	//Default is 0
-        }
-        byCmdData[3] = 0x00;
-        wCmdSize = 4;
-    }
-    else if (wOperationID == SETFONTUNDERLINE)	//设置下划线
-    {
-        byCmdData[0] = 0x1C;	//ESC
-        byCmdData[1] = 0x2D;	//-
-        byCmdData[3] = 0x1B;
-        byCmdData[4] = 0x2D;
-        if ( (wDataSize == 1)&&
-            (lpbyOptionData != NULL) )
-        {
-            byCmdData[2] = lpbyOptionData[0];
-            byCmdData[5] = lpbyOptionData[0];
-        }
-
-
-        wCmdSize = 6;
-    }
-    else if (wOperationID == SETLINESPACE)
-    {
-        byCmdData[0] = 0x1B;	//ESC
-
-// 		byCmdData[1] = 0x33;	//3
-        if ( (wDataSize == 1)&&
-            (lpbyOptionData != NULL) )
-        {
-            //byCmdData[2] = lpbyOptionData[0];
-            if (lpbyOptionData[0] == 0)
-            {	//默认行高
-                byCmdData[1] = 0x32;	//2
-                wCmdSize = 2;
-            }
-            else
-            {
-                byCmdData[1] = 0x33;	//3
-//				BYTE byDefulat = 27;	//默认行高
-    //			BYTE byVmm2Inch = lpbyOptionData[0] * (203 / 25.4);
-//				byCmdData[2] = byDefulat + lpbyOptionData[0];
-                byCmdData[2] = lpbyOptionData[0];
-                wCmdSize = 3;
-            }
-        }
-        else
-        {
-            //byCmdData[2] = 0x1E;	//Default is 30
-            byCmdData[1] = 0x32;
-            wCmdSize = 2;
-        }
-// 		wCmdSize = 3;
-    }
-    else if (wOperationID == SETFONTBOLD)	//设置粗体
-    {
-        byCmdData[0] = 0x1B;	//ESC
-        byCmdData[1] = 0x45;	//E
-        if ( (wDataSize == 1)&&
-            (lpbyOptionData != NULL) )
-        {
-            byCmdData[2] = lpbyOptionData[0];
-        }
-
-        wCmdSize = 3;
-    }
-    else if (wOperationID == SETVERIRELATEPOS)	//相对纵向位移
-    {
-        byCmdData[0] = 0x1B;	//ESC
-        byCmdData[1] = 0x4A;	//$
-        if ( (wDataSize == 1)&&
-            (lpbyOptionData != NULL) )
-        {
-// 			if (lpbyOptionData[0] > 255)
-// 			{
-// 				return INVALID_DATA;
-// 			}
-// 			BYTE byVmm2Inch = lpbyOptionData[0] * (203 / 25.4);
-            byCmdData[2] = lpbyOptionData[0];
-        }
-
-        wCmdSize = 3;
-    }
-    else if (wOperationID == SETHORIRELATEPOS)	//相对横向位移
-    {
-        byCmdData[0] = 0x1B;	//ESC
-        byCmdData[1] = 0x5C;	//$
-        if ( (wDataSize == 2)&&
-            (lpbyOptionData != NULL) )
-        {
-            byCmdData[2] = lpbyOptionData[0];
-            byCmdData[3] = lpbyOptionData[1];
-        }
-        else
-        {
-            byCmdData[2] = 0x00;	//Default is 0
-            byCmdData[3] = 0x00;
-        }
-
-        wCmdSize = 4;
-    }
-    else if (wOperationID == SETPRINTAREA)
-    {
-        byCmdData[0] = 0x1B;	//ESC
-        byCmdData[1] = 0x57;	//W
-        if ( (wDataSize == 1)&&
-            (lpbyOptionData != NULL) )
-        {
-            byCmdData[2] = lpbyOptionData[0];	//xL
-        }
-        else
-        {
-            byCmdData[2] = 0x00;				//xL Default is 0
-        }
-        byCmdData[3] = 0x00;					//xH is 0
-        byCmdData[4] = 0x00;					//yL is 0
-        byCmdData[5] = 0x00;					//yH is 0
-        byCmdData[6] = 0x00;					//dxL is 0
-        byCmdData[7] = 0x03;					//dxH is 3
-        byCmdData[8] = 0x00;					//dyL is 0
-        byCmdData[9] = 0x03;					//dyH is 3
-        wCmdSize = 10;
-    }
-    else if (wOperationID == SETLINEPRINTAREA)
-    {
-        byCmdData[0] = 0x1D;	//GS
-        byCmdData[1] = 0x57;	//W
-        if ( (wDataSize == 2)&&
-            (lpbyOptionData != NULL) )
-        {
-            byCmdData[2] = lpbyOptionData[0];	//nL
-            byCmdData[3] = lpbyOptionData[1];	//nH
-        }
-        else
-        {
-            byCmdData[2] = 0x00;				//nL Default is 0
-            byCmdData[3] = 0x00;					//nH
-        }
-
-        wCmdSize = 4;
-    }//
-    else if (wOperationID == SETLINEREVERSEPRINT)	//选择/取消倒置打印
-    {
-        byCmdData[0] = 0x1B;	//ESC
-        byCmdData[1] = 0x7B;	//{
-        if ( (wDataSize == 1)&&
-            (lpbyOptionData != NULL) )
-        {
-            byCmdData[2] = lpbyOptionData[0];	//n
-        }
-        else
-        {
-            byCmdData[2] = 0x00;				//Default is 0
-        }
-
-        wCmdSize = 3;
-    }
-    else if (wOperationID == SETPAGEMODE)
-    {
-        byCmdData[0] = 0x1B;	//ESC
-        byCmdData[1] = 0x4C;	//L
-        wCmdSize = 2;
-    }
-    else if (wOperationID == SETSTADMODE)
-    {
-        byCmdData[0] = 0x1B;	//ESC
-        byCmdData[1] = 0x53;	//S
-        wCmdSize = 2;
-    }
-    else if (wOperationID == SETPRESENTER)
-    {
-        byCmdData[0] = 0x1B;	//ESC
-        byCmdData[1] = 0x63;	//c
-        byCmdData[2] = 0x38;	//8
-        if ( (wDataSize == 1)&&
-            (lpbyOptionData != NULL) )
-        {
-            byCmdData[3] = lpbyOptionData[0];	//n
-        }
-        else
-        {
-            byCmdData[3] = 0x01;				//Default is 1
-        }
-        wCmdSize = 4;
-    }
-    else if (wOperationID == SETPRESENTERTIME)
-    {
-        byCmdData[0] = 0x1B;	//ESC
-        byCmdData[1] = 0x63;	//c
-        byCmdData[2] = 0x39;	//9
-        if ( (wDataSize == 1)&&
-            (lpbyOptionData != NULL) )
-        {
-            byCmdData[3] = lpbyOptionData[0];	//t
-        }
-        else
-        {
-            byCmdData[3] = 0x1e;				//Default is 30s
-        }
-        wCmdSize = 4;
-    }
-    else if (wOperationID == REALTIME_RESET)	//Real time reset
-    {
-        byCmdData[0] = 0x10;	//DLE
-        byCmdData[1] = 0x04;	//EOT
-        byCmdData[2] = 0x0A;	//10
-        wCmdSize = 3;
-    }
-    else if (wOperationID == REALTIME_STATUS)	//Real time get status
-    {
-        byCmdData[0] = 0x10;	//DLE
-        byCmdData[1] = 0x04;	//EOT
-        if ( (wDataSize == 1)&&
-            (lpbyOptionData != NULL)&&
-            (lpbyOptionData[0]>=5)&&
-            (lpbyOptionData[0]<=7) )
-        {
-            byCmdData[2] = lpbyOptionData[0];	//n
-        }
-        else
-        {
-            return INVALID_DATA;				//No default value
-        }
-        wCmdSize = 3;
-    }
-    else if (wOperationID == SETALIGN)			//Set align
-    {
-        byCmdData[0] = 0x1B;	//ESC
-        byCmdData[1] = 0x61;	//a
-        if ( (wDataSize == 1)&&
-            (lpbyOptionData != NULL)&&
-            (lpbyOptionData[0]>=0)&&
-            (lpbyOptionData[0]<=2) )
-        {
-            byCmdData[2] = lpbyOptionData[0];	//n
-        }
-        else
-        {
-            byCmdData[2] = 0x00;				//Default left
-        }
-        wCmdSize = 3;
-    }
-    else if (wOperationID == SETFEEDLEN)		//Set feed length before print
-    {
-        byCmdData[0] = 0x1B;	//ESC
-        byCmdData[1] = 0x63;	//c
-        byCmdData[2] = 0x31;	//1
-        //Low byte
-        if ( (lpbyOptionData != NULL)&&
-            (wDataSize >= 1) )
-        {
-            byCmdData[3] = lpbyOptionData[0];	//nL
-        }
-        else
-        {
-            byCmdData[3] = 0x00;				//Default 0
-        }
-        //High byte
-        if ( (lpbyOptionData != NULL)&&
-            (wDataSize >= 2) )
-        {
-            byCmdData[4] = lpbyOptionData[1];	//nH
-        }
-        else
-        {
-            byCmdData[4] = 0x00;				//Default 0
-        }
-        wCmdSize = 5;
-    }
-    else if (wOperationID == SETCHARSPACE)		//Set char space
-    {
-        byCmdData[0] = 0x1B;	//ESC
-        byCmdData[1] = 0x20;	//SP
-        if ( (wDataSize == 1)&&
-            (lpbyOptionData != NULL) )
-        {
-            byCmdData[2] = lpbyOptionData[0];	//nL
-        }
-        else
-        {
-            byCmdData[2] = 0x00;				//Default 0
-        }
-        wCmdSize = 3;
-    }
-    else if (wOperationID == GETDEVINFO)		//Get device info
-    {
-        byCmdData[0] = 0x1D;	//GS
-        byCmdData[1] = 0x49;	//I
-        if ( (wDataSize == 1)&&
-            (lpbyOptionData != NULL)&&
-            (lpbyOptionData[0]>=68)&&
-            (lpbyOptionData[0]<=153) )
-        {
-            byCmdData[2] = lpbyOptionData[0];	//nL
-        }
-        else
-        {
-            byCmdData[2] = 68;					//Default 68
-        }
-        wCmdSize = 3;
-    }
-    else if (wOperationID == SETLEFTMARGIN)		//Set left margin
-    {
-        byCmdData[0] = 0x1D;	//GS
-        byCmdData[1] = 0x4C;	//L
-        if ( (lpbyOptionData != NULL)&&
-            (wDataSize == 2))
-        {
-            byCmdData[2] = lpbyOptionData[0];	//nL
-            byCmdData[3] = lpbyOptionData[1];	//nH
-        }
-        else
-        {
-            byCmdData[2] = 0;					//Default 0
-            byCmdData[3] = 0;					//nH //Default 0
-        }
-
-        wCmdSize = 4;
-    }
-    else if ( wOperationID == SETBITMAPNUM )	//Set bitmap number
-    {
-        byCmdData[0] = 0x1D;	//GS
-        byCmdData[1] = 0x23;	//#
-        if ( (wDataSize == 1)&&
-            (lpbyOptionData != NULL)&&
-            (lpbyOptionData[0]>=0)&&
-            (lpbyOptionData[0]<=7) )
-        {
-            byCmdData[2] = lpbyOptionData[0];	//Bitmap number
-        }
-        else
-        {
-            byCmdData[2] = 0;					//Default 0
-        }
-        wCmdSize = 3;
-    }
-    else if ( wOperationID == SETDOWNLOADBITMAP )	//Download bitmap to RAM
-    {
-        if ((wDataSize >= 3)&&
-            (lpbyOptionData != NULL))
-        {
-            bFlag = TRUE;
-            byExeData = new BYTE[wDataSize + 3];
-            if (byExeData == NULL)
-            {
-                return INVALID_DATA;
-            }
-            memset(byExeData, 0, wDataSize + 3);
-            byExeData[0] = 0x1D;	// GS
-            byExeData[1] = 0x2A;	// *
-            memcpy(&byExeData[2], lpbyOptionData, wDataSize);
-            wCmdSize = wDataSize + 2;
-        }
-        else
-        {
-            return INVALID_DATA;
-        }
-    }
-    else if ( wOperationID == SETPRINTRAMBITMAP )	//Print RAM bitmap
-    {
-        byCmdData[0] = 0x1D;	// GS
-        byCmdData[1] = 0x2F;	// /
-        if ( (wDataSize == 1)&&
-            (lpbyOptionData != NULL)&&
-            (lpbyOptionData[0]>=0)&&
-            (lpbyOptionData[0]<=3) )
-        {
-            byCmdData[2] = lpbyOptionData[0];	//Bitmap number
-        }
-        else
-        {
-            byCmdData[2] = 0;					//Default 0
-        }
-        wCmdSize = 3;
-    }
-    else if ( wOperationID == SETXYMOVEUNIT )	//Set X/Y move unit to mm (GS P xL xH yL yH Real command is GS P x y)
-    {
-        byCmdData[0] = 0x1D;	//GS
-        byCmdData[1] = 0x50;	//P
-        byCmdData[2] = 0x19;	//25		1Inch = 25.4mm
-        byCmdData[3] = 0x19;
-
-        wCmdSize = 4;
-    }
-    //Check command data
-    if (wCmdSize == 0)
-    {
-        return INVALID_DATA;
-    }
-
-    BYTE *byData = NULL;
-    if (!bFlag)
-    {
-        byData = byCmdData;
-    }
-    else
-    {
-        byData = byExeData;
-    }
-    //Write Command
-    LogXM(byData, wCmdSize, "Send Before");
-
-    iRet = g_SerialComm.SendData(m_hDevHnd, byData, wCmdSize );
-    /*char* pBuf = (char*)byData;
-    int writedCount;
-    int nCount = wCmdSize / 1024;
-    bool bEx = false;
-    if(wCmdSize % 1024 != 0)
-    {
-        bEx = true;
-    }
-    for(int i = 0; i < nCount; i++)
-    {
-        writedCount = f_WriteData(m_hDevHnd, WRITE_PIPENUM, pBuf + i*1024, 1024);
-        if (writedCount != 1024)
-        {
-            m_pLog->TraceError( __FILE__, __LINE__, "WriteUSBPort(), uWrite() fail.writedCount= %d", writedCount );
-            return HARDWARE_ERROR;
-        }
-    }
-    if(bEx)
-    {
-        writedCount = f_WriteData(m_hDevHnd, WRITE_PIPENUM, pBuf + nCount*1024, wCmdSize - nCount*1024);
-        if (writedCount != wCmdSize - nCount*1024)
-        {
-            m_pLog->TraceError( __FILE__, __LINE__, "WriteUSBPort(), uWrite() fail.writedCount = %d", writedCount );
-            return HARDWARE_ERROR;
-        }
-    }*/
-	
-    LogM("f_WriteData iRet=%d, wDataSize = %d", iRet, wCmdSize);
-
-    LogXM(byData, wCmdSize, "Send");
-    if (bFlag)
-    {
-        bFlag = FALSE;
-    }
-    if (byExeData != NULL)
-    {
-        delete [] byExeData;
-        byExeData = NULL;
-    }
-    if ( iRet < 0 )
-    {
-        return HARDWARE_ERROR;
-    }
-
-    return ERROR_SUCCESS;
-}
-
-DWORD   DeviceCtrl::SendCommandSpec(WORD wOperationID, LPBYTE lpbyOptionData, WORD wDataSize)
-{
-    INT		iRet = 0;
-    WORD	wCmdSize = 0;
-    BYTE	byCmdData[16];
-    BOOL	bFlag = FALSE;
-    BYTE	*byExeData = NULL;
-    memset( byCmdData, 0x00, sizeof(byCmdData) );
-
-    if (wOperationID == FEEDMARKSTART)	//Feed Paper to Start Position
-    {
-        byCmdData[0] = 0x1D;	//GS
-        byCmdData[1] = 0x0C;	//FF
-        wCmdSize = 2;
-    }
-    else if (wOperationID == DIRECTPRINT)
-    {
-        byCmdData[0] = 0x0D;	//CR
-        wCmdSize = 1;
-    }
-    else if (wOperationID == FEEDLINEPRINT)
-    {
-        byCmdData[0] = 0x0A;	//LF
-        wCmdSize = 1;
-    }
-    else if (wOperationID == SETFONTROTATE)
-    {
-        byCmdData[0] = 0x1B;	//ESC V
-
-        if (wDataSize == 1)
-        {
-            switch (lpbyOptionData[0])
-            {
-            case 3:					//逆时针转90
-                {
-                    byCmdData[1] = 0x12;
-                    wCmdSize = 2;
-                }
-                break;
-            case 1:
-                {
-                    byCmdData[1] = 0x56;
-                    byCmdData[2] = 0x01;	//顺时钟转90
-                    wCmdSize = 3;
-                }
-                break;
-            case 0:
-            default:
-                {
-                    byCmdData[1] = 0x56;
-                    byCmdData[2] = 0x00;
-                    wCmdSize = 3;
-                }
-                break;
-            }
-        }
-    }
-    else if (wOperationID == FEEDMULTPRINT)
-    {
-        byCmdData[0] = 0x1B;	//ESC d
-        byCmdData[1] = 0x64;
-        byCmdData[2] = lpbyOptionData[0];
-        wCmdSize = 3;
-    }
-    else if (wOperationID == PAGEMODPRINT)
-    {
-        byCmdData[0] = 0x1B;	//ESC
-        byCmdData[1] = 0x0C;	//FF
-        wCmdSize = 2;
-    }
-    else if (wOperationID == BMMODPRINT)
-    {
-        byCmdData[0] = 0x0C;	//FF
-        wCmdSize = 1;
-    }
-    else if (wOperationID == SETHRIPRINTPOS)
-    {
-        byCmdData[0] = 0x1D;	//GS
-        byCmdData[1] = 0x48;	//H
-        if ((lpbyOptionData != NULL) && (wDataSize == 1))
-        {
-            byCmdData[2] = lpbyOptionData[0];
-        }
-        wCmdSize = 3;
-    }
-    else if (wOperationID == SETBARCODEHEIGHT)
-    {
-        byCmdData[0] = 0x1D;	//GS
-        byCmdData[1] = 0x68;	//h
-        if ((lpbyOptionData != NULL) && (wDataSize == 1))
-        {
-            byCmdData[2] = lpbyOptionData[0];
-        }
-        wCmdSize = 3;
-    }
-    else if (wOperationID == SETQRCODEPARAM)
-    {
-        byCmdData[0] = 0x1D;	//GS
-        byCmdData[1] = 0x6F;	//o
-        byCmdData[2] = 0x00;	//0
-        if ((lpbyOptionData != NULL) && (wDataSize == 1))
-        {
-            byCmdData[3] = lpbyOptionData[0];
-        }
-        byCmdData[4] = 0;
-        byCmdData[5] = 0x02;
-        wCmdSize = 6;
-    }
-    else if (wOperationID == SETBARCODEPRINT)
-    {
-        if ((lpbyOptionData != NULL) && (wDataSize > 2))
-        {
-            WORD wDataLen = lpbyOptionData[1];
-            if (wDataLen == (wDataSize - 2))
-            {
-                bFlag = TRUE;
-                byExeData = new BYTE[wDataSize + 3];
-                memset(byExeData, 0, wDataSize + 3);
-                byExeData[0] = 0x1D;	//GS
-                byExeData[1] = 0x6B;	//k
-                memcpy(&byExeData[2], lpbyOptionData, wDataSize);
-                wCmdSize = wDataSize + 3;
-            }
-            else
-            {
-                return INVALID_DATA;
-            }
-        }
-        else
-        {
-            return INVALID_DATA;
-        }
-    }
-    else if (wOperationID == SETPDF417INFO)
-    {
-        byCmdData[0] = 0x1D;	//GS
-        byCmdData[1] = 0x70;	//p
-        if ((lpbyOptionData != NULL) && (wDataSize == 6))
-        {
-            memcpy(&byCmdData[2], lpbyOptionData, wDataSize);
-        }
-        else
-        {
-            return INVALID_DATA;
-        }
-        wCmdSize = 8;
-    }
-    else if (wOperationID == SETPDF417ERRORLEVEL)
-    {
-        byCmdData[0] = 0x1D;	//GS
-        byCmdData[1] = 0x71;	//q
-        if ((lpbyOptionData != NULL) && (wDataSize == 1))
-        {
-            byCmdData[2] = lpbyOptionData[0];
-        }
-        else
-        {
-            return INVALID_DATA;
-        }
-        wCmdSize = 3;
-    }
-    else if (wOperationID == SETRASTERBMPPRINT)
-    {
-        if ((wDataSize >= 4)&&
-            (lpbyOptionData != NULL))
-        {
-            bFlag = TRUE;
-            byExeData = new BYTE[wDataSize + 7];
-            if (byExeData == NULL)
-            {
-                return INVALID_DATA;
-            }
-            memset(byExeData, 0, wDataSize + 7);
-            byExeData[0] = 0x1D;	//GS
-            byExeData[1] = 0x76;	//v
-            byExeData[2] = 0x30;
-            byExeData[3] = 0;
-            memcpy(&byExeData[4], lpbyOptionData, wDataSize);
-            byExeData[wDataSize + 5] = 0x0a;
-            byExeData[wDataSize + 6] = 0x00;
-            wCmdSize = wDataSize + 6;
-        }
-        else
-        {
-            return INVALID_DATA;
-        }
-    }
-    else if (wOperationID == SETBARCODEWIDTH)
-    {
-        byCmdData[0] = 0x1D;	//GS
-        byCmdData[1] = 0x77;	//w
-        if ((lpbyOptionData != NULL) && (wDataSize == 1))
-        {
-            byCmdData[2] = lpbyOptionData[0];
-        }
-        else
-        {
-            return INVALID_DATA;
-        }
-        wCmdSize = 3;
-    }
-    else if (wOperationID == PAPERDIRCETCUT)
-    {
-        byCmdData[0] = 0x1D;	//GS
-        byCmdData[1] = 0x56;	//V
-        byCmdData[2] = 0x01;	//1
-        wCmdSize = 3;
-    }
-    else if (wOperationID == PAPERDIRCETCUTEX)	//全切
-    {
-        byCmdData[0] = 0x1D;	//GS
-        byCmdData[1] = 0x56;	//V
-        byCmdData[2] = 0x00;	//0
-        wCmdSize = 3;
-    }
-    else if (wOperationID == PAPERFEEDCUT)	//
-    {
-        byCmdData[0] = 0x1D;	//GS
-        byCmdData[1] = 0x56;	//V
-        byCmdData[2] = 0x42;	//66
-        byCmdData[3] = 0x00;	//0
-        wCmdSize = 4;
-    }
-    else if (wOperationID == SETFONTINVERSE)	//反白
-    {
-        byCmdData[0] = 0x1D;	//GS
-        byCmdData[1] = 0x42;	//B
-        if ((wDataSize == 1) && ((lpbyOptionData[0] & 0x01) == 0x01))
-        {
-            byCmdData[2] = 0x01;
-        }
-        else
-        {
-            byCmdData[2] = 0x00;	//0
-        }
-        wCmdSize = 3;
-    }
-    else if (wOperationID == INITIALIZ)
-    {
-        byCmdData[0] = 0x1B;	//ESC
-        byCmdData[1] = 0x40;	//@
-        wCmdSize = 2;
-    }
-    else if (wOperationID == RESET)
-    {
-        if (lpbyOptionData == NULL)
-        {
-            return INVALID_BUFFER;
-        }
-        byCmdData[0] = 0x10;	//DLE
-        byCmdData[1] = 0x05;	//ENQ
-        if ((wDataSize > 0)&&
-            (lpbyOptionData[0]>=0x01)&&
-            (lpbyOptionData[0]<=0x02))	//1~2
-        {
-            byCmdData[2] = lpbyOptionData[0];
-            wCmdSize = 3;
-        }
-        else					//Illegal value
-        {
-            return INVALID_DATA;
-        }
-    }
-    else if (wOperationID == SETTOPPRTPOS)
-    {
-        byCmdData[0] = 0x1D;		//GS
-        byCmdData[1] = 0x54;		//T
-        if ((lpbyOptionData != NULL) && (wDataSize == 1))
-        {
-            byCmdData[2] = lpbyOptionData[0];
-        }
-        wCmdSize = 3;
-    }
-    else if (wOperationID == SETBLACKMARKSUPP)
-    {
-        byCmdData[0] = 0x1B;		//ESC
-        byCmdData[1] = 0x63;		//c
-        byCmdData[2] = 0x30;		//0
-        if ( (wDataSize==1)&&(lpbyOptionData[0]==0) )
-        {
-            byCmdData[3] = 0x00;		//Paper without BM
-        }
-        else
-        {
-            byCmdData[3] = 0x02;		//Paper with BM
-        }
-        wCmdSize = 4;
-    }
-    else if (wOperationID == SETBLACKMARKPARAM)
-    {
-        byCmdData[0] = 0x1D;
-        byCmdData[1] = 0x28;
-        byCmdData[2] = 0x46;
-        if ( (wDataSize == 6)&&
-            (lpbyOptionData != NULL) )
-        {
-            byCmdData[3] = lpbyOptionData[0];
-            byCmdData[4] = lpbyOptionData[1];
-            byCmdData[5] = lpbyOptionData[2];
-            byCmdData[6] = lpbyOptionData[3];
-            byCmdData[7] = lpbyOptionData[4];
-            byCmdData[8] = lpbyOptionData[5];
-            wCmdSize = 9;
-        }
-        else					//Illegal value
-        {
-            return INVALID_DATA;
-        }
-    }
-    else if (wOperationID == GETSTATUS_ASY)
-    {
-        byCmdData[0] = 0x1D;	//GS
-        byCmdData[1] = 0x72;	//r
-        wCmdSize = 2;
-    }
-    else if (wOperationID == SETFONT)
-    {
-        byCmdData[0] = 0x1B;	//ESC
-        byCmdData[1] = 0x66;	//f
-        if ( (wDataSize == 1)&&
-            (lpbyOptionData != NULL) )
-        {
-            byCmdData[2] = lpbyOptionData[0];
-        }
-        else
-        {
-            byCmdData[2] = 0x01;	//Default is 8*16
-        }
-        wCmdSize = 3;
-    }
-    else if (wOperationID == SETREDMODE)
-    {
-        byCmdData[0] = 0x1B;	//ESC
-        byCmdData[1] = 0x67;	//f
-        if ( (wDataSize == 1)&&
-            (lpbyOptionData != NULL) )
-        {
-            byCmdData[2] = lpbyOptionData[0];
-        }
-        else
-        {
-            byCmdData[2] = 0x01;	//Default is 8*16
-        }
-        wCmdSize = 3;
-    }
-    else if (wOperationID == SETINTERCHAR)
-    {
-        byCmdData[0] = 0x1B;	//ESC
-        byCmdData[1] = 0x52;	//R
-        if ( (wDataSize == 1)&&
-            (lpbyOptionData != NULL) )
-        {
-            byCmdData[2] = lpbyOptionData[0];
-        }
-        else
-        {
-            byCmdData[2] = 0x00;	//Default is USA
-        }
-        wCmdSize = 3;
-    }
-    else if (wOperationID == SETDSMODE)
-    {
-        byCmdData[0] = 0x1B;	//ESC
-        byCmdData[1] = 0x47;	//R
-        if ( (wDataSize == 1)&&
-            (lpbyOptionData != NULL) )
-        {
-            byCmdData[2] = lpbyOptionData[0];
-        }
-        else
-        {
-            byCmdData[2] = 0x01;	//Default is DS Mode
-        }
-        wCmdSize = 3;
-    }
-    else if (wOperationID == SETULMODE)
-    {
-        byCmdData[0] = 0x1B;	//ESC
-        byCmdData[1] = 0x55;	//R
-        if ( (wDataSize == 1)&&
-            (lpbyOptionData != NULL) )
-        {
-            byCmdData[2] = lpbyOptionData[0];
-        }
-        else
-        {
-            byCmdData[2] = 0x01;	//Default is UL Mode
-        }
-        wCmdSize = 3;
-    }
-    else if (wOperationID == SETPRINTERMOD)	//字符打印模式
-    {
-        byCmdData[0] = 0x1B;	//ESC
-        byCmdData[1] = 0x21;	//!
-        if ( (wDataSize == 1)&&
-            (lpbyOptionData != NULL) )
-        {
-            byCmdData[2] = lpbyOptionData[0];
-        }
-        else
-        {
-            byCmdData[2] = 0x00;	//Default is Big Char
-        }
-        wCmdSize = 3;
-    }
-    else if (wOperationID == SETFONTCHNMOD)	//汉字字符打印模式
-    {
-        byCmdData[0] = 0x1C;	//FS
-        byCmdData[1] = 0x21;	//!
-        if ( (wDataSize == 1)&&
-            (lpbyOptionData != NULL) )
-        {
-            byCmdData[2] = lpbyOptionData[0];
-        }
-        else
-        {
-            byCmdData[2] = 0x00;	//Default is Big Char
-        }
-        wCmdSize = 3;
-    }
-    else if (wOperationID == SETFONTLRSPACE)	//汉字左右边距设定
-    {
-        byCmdData[0] = 0x1C;	//FS
-        byCmdData[1] = 0x53;	//!
-        if ( (wDataSize == 2)&&
-            (lpbyOptionData != NULL) )
-        {
-            byCmdData[2] = lpbyOptionData[0];
-            byCmdData[3] = lpbyOptionData[1];
-        }
-
-        wCmdSize = 4;
-    }
-    else if (wOperationID == SETCHARSIZE)	//设置字符放大倍数
-    {
-        byCmdData[0] = 0x1D;	//GS
-        byCmdData[1] = 0x21;	//!
-        if ( (wDataSize == 1)&&
-            (lpbyOptionData != NULL) )
-        {
-            byCmdData[2] = lpbyOptionData[0];
-        }
-        else
-        {
-            byCmdData[2] = 0x00;	//Default is normal mode
-        }
-        wCmdSize = 3;
-    }
-    else if (wOperationID == SETPRINTPOS)
-    {
-        byCmdData[0] = 0x1B;	//ESC
-        byCmdData[1] = 0x24;	//$
-        if ( (wDataSize == 1)&&
-            (lpbyOptionData != NULL) )
-        {
-            if ((lpbyOptionData[0] > m_wPaperWidth) ||
-                (lpbyOptionData[0] > 255))
-            {
-                return INVALID_DATA;
-            }
-            byCmdData[2] = lpbyOptionData[0];
-        }
-        else
-        {
-            byCmdData[2] = 0x00;	//Default is 0
-        }
-        byCmdData[3] = 0x00;
-        wCmdSize = 4;
-    }
-    else if (wOperationID == SETFONTUNDERLINE)	//设置下划线
-    {
-        byCmdData[0] = 0x1C;	//ESC
-        byCmdData[1] = 0x2D;	//-
-        byCmdData[3] = 0x1B;
-        byCmdData[4] = 0x2D;
-        if ( (wDataSize == 1)&&
-            (lpbyOptionData != NULL) )
-        {
-            byCmdData[2] = lpbyOptionData[0];
-            byCmdData[5] = lpbyOptionData[0];
-        }
-
-
-        wCmdSize = 6;
-    }
-    else if (wOperationID == SETLINESPACE)
-    {
-        byCmdData[0] = 0x1B;	//ESC
-
-// 		byCmdData[1] = 0x33;	//3
-        if ( (wDataSize == 1)&&
-            (lpbyOptionData != NULL) )
-        {
-            //byCmdData[2] = lpbyOptionData[0];
-            if (lpbyOptionData[0] == 0)
-            {	//默认行高
-                byCmdData[1] = 0x32;	//2
-                wCmdSize = 2;
-            }
-            else
-            {
-                byCmdData[1] = 0x33;	//3
-//				BYTE byDefulat = 27;	//默认行高
-    //			BYTE byVmm2Inch = lpbyOptionData[0] * (203 / 25.4);
-//				byCmdData[2] = byDefulat + lpbyOptionData[0];
-                byCmdData[2] = lpbyOptionData[0];
-                wCmdSize = 3;
-            }
-        }
-        else
-        {
-            //byCmdData[2] = 0x1E;	//Default is 30
-            byCmdData[1] = 0x32;
-            wCmdSize = 2;
-        }
-// 		wCmdSize = 3;
-    }
-    else if (wOperationID == SETFONTBOLD)	//设置粗体
-    {
-        byCmdData[0] = 0x1B;	//ESC
-        byCmdData[1] = 0x45;	//E
-        if ( (wDataSize == 1)&&
-            (lpbyOptionData != NULL) )
-        {
-            byCmdData[2] = lpbyOptionData[0];
-        }
-
-        wCmdSize = 3;
-    }
-    else if (wOperationID == SETVERIRELATEPOS)	//相对纵向位移
-    {
-        byCmdData[0] = 0x1B;	//ESC
-        byCmdData[1] = 0x4A;	//$
-        if ( (wDataSize == 1)&&
-            (lpbyOptionData != NULL) )
-        {
-// 			if (lpbyOptionData[0] > 255)
-// 			{
-// 				return INVALID_DATA;
-// 			}
-// 			BYTE byVmm2Inch = lpbyOptionData[0] * (203 / 25.4);
-            byCmdData[2] = lpbyOptionData[0];
-        }
-
-        wCmdSize = 3;
-    }
-    else if (wOperationID == SETHORIRELATEPOS)	//相对横向位移
-    {
-        byCmdData[0] = 0x1B;	//ESC
-        byCmdData[1] = 0x5C;	//$
-        if ( (wDataSize == 2)&&
-            (lpbyOptionData != NULL) )
-        {
-            byCmdData[2] = lpbyOptionData[0];
-            byCmdData[3] = lpbyOptionData[1];
-        }
-        else
-        {
-            byCmdData[2] = 0x00;	//Default is 0
-            byCmdData[3] = 0x00;
-        }
-
-        wCmdSize = 4;
-    }
-    else if (wOperationID == SETPRINTAREA)
-    {
-        byCmdData[0] = 0x1B;	//ESC
-        byCmdData[1] = 0x57;	//W
-        if ( (wDataSize == 1)&&
-            (lpbyOptionData != NULL) )
-        {
-            byCmdData[2] = lpbyOptionData[0];	//xL
-        }
-        else
-        {
-            byCmdData[2] = 0x00;				//xL Default is 0
-        }
-        byCmdData[3] = 0x00;					//xH is 0
-        byCmdData[4] = 0x00;					//yL is 0
-        byCmdData[5] = 0x00;					//yH is 0
-        byCmdData[6] = 0x00;					//dxL is 0
-        byCmdData[7] = 0x03;					//dxH is 3
-        byCmdData[8] = 0x00;					//dyL is 0
-        byCmdData[9] = 0x03;					//dyH is 3
-        wCmdSize = 10;
-    }
-    else if (wOperationID == SETLINEPRINTAREA)
-    {
-        byCmdData[0] = 0x1D;	//GS
-        byCmdData[1] = 0x57;	//W
-        if ( (wDataSize == 2)&&
-            (lpbyOptionData != NULL) )
-        {
-            byCmdData[2] = lpbyOptionData[0];	//nL
-            byCmdData[3] = lpbyOptionData[1];	//nH
-        }
-        else
-        {
-            byCmdData[2] = 0x00;				//nL Default is 0
-            byCmdData[3] = 0x00;					//nH
-        }
-
-        wCmdSize = 4;
-    }//
-    else if (wOperationID == SETLINEREVERSEPRINT)	//选择/取消倒置打印
-    {
-        byCmdData[0] = 0x1B;	//ESC
-        byCmdData[1] = 0x7B;	//{
-        if ( (wDataSize == 1)&&
-            (lpbyOptionData != NULL) )
-        {
-            byCmdData[2] = lpbyOptionData[0];	//n
-        }
-        else
-        {
-            byCmdData[2] = 0x00;				//Default is 0
-        }
-
-        wCmdSize = 3;
-    }
-    else if (wOperationID == SETPAGEMODE)
-    {
-        byCmdData[0] = 0x1B;	//ESC
-        byCmdData[1] = 0x4C;	//L
-        wCmdSize = 2;
-    }
-    else if (wOperationID == SETSTADMODE)
-    {
-        byCmdData[0] = 0x1B;	//ESC
-        byCmdData[1] = 0x53;	//S
-        wCmdSize = 2;
-    }
-    else if (wOperationID == SETPRESENTER)
-    {
-        byCmdData[0] = 0x1B;	//ESC
-        byCmdData[1] = 0x63;	//c
-        byCmdData[2] = 0x38;	//8
-        if ( (wDataSize == 1)&&
-            (lpbyOptionData != NULL) )
-        {
-            byCmdData[3] = lpbyOptionData[0];	//n
-        }
-        else
-        {
-            byCmdData[3] = 0x01;				//Default is 1
-        }
-        wCmdSize = 4;
-    }
-    else if (wOperationID == SETPRESENTERTIME)
-    {
-        byCmdData[0] = 0x1B;	//ESC
-        byCmdData[1] = 0x63;	//c
-        byCmdData[2] = 0x39;	//9
-        if ( (wDataSize == 1)&&
-            (lpbyOptionData != NULL) )
-        {
-            byCmdData[3] = lpbyOptionData[0];	//t
-        }
-        else
-        {
-            byCmdData[3] = 0x1e;				//Default is 30s
-        }
-        wCmdSize = 4;
-    }
-    else if (wOperationID == REALTIME_RESET)	//Real time reset
-    {
-        byCmdData[0] = 0x10;	//DLE
-        byCmdData[1] = 0x04;	//EOT
-        byCmdData[2] = 0x0A;	//10
-        wCmdSize = 3;
-    }
-    else if (wOperationID == REALTIME_STATUS)	//Real time get status
-    {
-        byCmdData[0] = 0x10;	//DLE
-        byCmdData[1] = 0x04;	//EOT
-        if ( (wDataSize == 1)&&
-            (lpbyOptionData != NULL)&&
-            (lpbyOptionData[0]>=5)&&
-            (lpbyOptionData[0]<=7) )
-        {
-            byCmdData[2] = lpbyOptionData[0];	//n
-        }
-        else
-        {
-            return INVALID_DATA;				//No default value
-        }
-        wCmdSize = 3;
-    }
-    else if (wOperationID == SETALIGN)			//Set align
-    {
-        byCmdData[0] = 0x1B;	//ESC
-        byCmdData[1] = 0x61;	//a
-        if ( (wDataSize == 1)&&
-            (lpbyOptionData != NULL)&&
-            (lpbyOptionData[0]>=0)&&
-            (lpbyOptionData[0]<=2) )
-        {
-            byCmdData[2] = lpbyOptionData[0];	//n
-        }
-        else
-        {
-            byCmdData[2] = 0x00;				//Default left
-        }
-        wCmdSize = 3;
-    }
-    else if (wOperationID == SETFEEDLEN)		//Set feed length before print
-    {
-        byCmdData[0] = 0x1B;	//ESC
-        byCmdData[1] = 0x63;	//c
-        byCmdData[2] = 0x31;	//1
-        //Low byte
-        if ( (lpbyOptionData != NULL)&&
-            (wDataSize >= 1) )
-        {
-            byCmdData[3] = lpbyOptionData[0];	//nL
-        }
-        else
-        {
-            byCmdData[3] = 0x00;				//Default 0
-        }
-        //High byte
-        if ( (lpbyOptionData != NULL)&&
-            (wDataSize >= 2) )
-        {
-            byCmdData[4] = lpbyOptionData[1];	//nH
-        }
-        else
-        {
-            byCmdData[4] = 0x00;				//Default 0
-        }
-        wCmdSize = 5;
-    }
-    else if (wOperationID == SETCHARSPACE)		//Set char space
-    {
-        byCmdData[0] = 0x1B;	//ESC
-        byCmdData[1] = 0x20;	//SP
-        if ( (wDataSize == 1)&&
-            (lpbyOptionData != NULL) )
-        {
-            byCmdData[2] = lpbyOptionData[0];	//nL
-        }
-        else
-        {
-            byCmdData[2] = 0x00;				//Default 0
-        }
-        wCmdSize = 3;
-    }
-    else if (wOperationID == GETDEVINFO)		//Get device info
-    {
-        byCmdData[0] = 0x1D;	//GS
-        byCmdData[1] = 0x49;	//I
-        if ( (wDataSize == 1)&&
-            (lpbyOptionData != NULL)&&
-            (lpbyOptionData[0]>=68)&&
-            (lpbyOptionData[0]<=153) )
-        {
-            byCmdData[2] = lpbyOptionData[0];	//nL
-        }
-        else
-        {
-            byCmdData[2] = 68;					//Default 68
-        }
-        wCmdSize = 3;
-    }
-    else if (wOperationID == SETLEFTMARGIN)		//Set left margin
-    {
-        byCmdData[0] = 0x1D;	//GS
-        byCmdData[1] = 0x4C;	//L
-        if ( (lpbyOptionData != NULL)&&
-            (wDataSize == 2))
-        {
-            byCmdData[2] = lpbyOptionData[0];	//nL
-            byCmdData[3] = lpbyOptionData[1];	//nH
-        }
-        else
-        {
-            byCmdData[2] = 0;					//Default 0
-            byCmdData[3] = 0;					//nH //Default 0
-        }
-
-        wCmdSize = 4;
-    }
-    else if ( wOperationID == SETBITMAPNUM )	//Set bitmap number
-    {
-        byCmdData[0] = 0x1D;	//GS
-        byCmdData[1] = 0x23;	//#
-        if ( (wDataSize == 1)&&
-            (lpbyOptionData != NULL)&&
-            (lpbyOptionData[0]>=0)&&
-            (lpbyOptionData[0]<=7) )
-        {
-            byCmdData[2] = lpbyOptionData[0];	//Bitmap number
-        }
-        else
-        {
-            byCmdData[2] = 0;					//Default 0
-        }
-        wCmdSize = 3;
-    }
-    else if ( wOperationID == SETDOWNLOADBITMAP )	//Download bitmap to RAM
-    {
-        if ((wDataSize >= 3)&&
-            (lpbyOptionData != NULL))
-        {
-            bFlag = TRUE;
-            byExeData = new BYTE[wDataSize + 3];
-            if (byExeData == NULL)
-            {
-                return INVALID_DATA;
-            }
-            memset(byExeData, 0, wDataSize + 3);
-            byExeData[0] = 0x1D;	// GS
-            byExeData[1] = 0x2A;	// *
-            memcpy(&byExeData[2], lpbyOptionData, wDataSize);
-            wCmdSize = wDataSize + 2;
-        }
-        else
-        {
-            return INVALID_DATA;
-        }
-    }
-    else if ( wOperationID == SETPRINTRAMBITMAP )	//Print RAM bitmap
-    {
-        byCmdData[0] = 0x1D;	// GS
-        byCmdData[1] = 0x2F;	// /
-        if ( (wDataSize == 1)&&
-            (lpbyOptionData != NULL)&&
-            (lpbyOptionData[0]>=0)&&
-            (lpbyOptionData[0]<=3) )
-        {
-            byCmdData[2] = lpbyOptionData[0];	//Bitmap number
-        }
-        else
-        {
-            byCmdData[2] = 0;					//Default 0
-        }
-        wCmdSize = 3;
-    }
-    else if ( wOperationID == SETXYMOVEUNIT )	//Set X/Y move unit to mm (GS P xL xH yL yH Real command is GS P x y)
-    {
-        byCmdData[0] = 0x1D;	//GS
-        byCmdData[1] = 0x50;	//P
-        byCmdData[2] = 0x19;	//25		1Inch = 25.4mm
-        byCmdData[3] = 0x19;
-
-        wCmdSize = 4;
-    }
-    //Check command data
-    if (wCmdSize == 0)
-    {
-        return INVALID_DATA;
-    }
-
-    BYTE *byData = NULL;
-    if (!bFlag)
-    {
-        byData = byCmdData;
-    }
-    else
-    {
-        byData = byExeData;
-    }
-    //Write Command
-    iRet = g_SerialComm.SendData(m_hDevHnd, (LPBYTE)byData, (int)wCmdSize);
-
-    if (bFlag)
-    {
-        bFlag = FALSE;
-    }
-    if (byExeData != NULL)
-    {
-        delete [] byExeData;
-        byExeData = NULL;
-    }
-	LOG_FUNCTION();
-    if ( iRet < 0 )
-    {
-        LogXE(byData, wCmdSize, "Send");
-        return HARDWARE_ERROR;
-    }
-    LogXM(byData, wCmdSize, "Send");
-    return ERROR_SUCCESS;
-}
-
-//////////////////////////////////////////////////
-//Function Name:
-//History:
-//RPR_EXE:	00-01-02-01 2013-02-06 Lichun(Create)
-//////////////////////////////////////////////////
-DWORD	DeviceCtrl::SendData( LPBYTE lpbyOptionData, WORD wDataSize )
-{
-    int	iRet = 0;
-    LOG_FUNCTION();
-    LogM("SendData is called");
-    //Check command data
-    if ( (wDataSize==0)||
-        (lpbyOptionData==NULL) )
-    {
-        LogE("SendData INVALID_DATA.");
-        return INVALID_DATA;
-    }
-    LogM("f_WriteData is calling");
-    //Write Command
-    iRet = g_SerialComm.SendData( m_hDevHnd, lpbyOptionData, (int)wDataSize );
-    LogM("f_WriteData iRet=%d, wDataSize = %d", iRet, wDataSize);
-
-    LogXM(lpbyOptionData, wDataSize, "bmp");
-
-    if ( iRet < 0 )
-    {
-        LogXE(lpbyOptionData, wDataSize, "Send");
-        return HARDWARE_ERROR;
-    }
-    LogXM(lpbyOptionData, wDataSize, "Send");
-
-    return ERROR_SUCCESS;
-}
-
-
-
-//////////////////////////////////////////////////
-//Function Name:
-//History:
-//RPR_EXE:	01-02-27-01 2016-12-26 Liuxin(Create)
-//////////////////////////////////////////////////
-BOOL DeviceCtrl::SetParam( WORD wWidth )
-{
-    m_wPaperWidth = wWidth;
-    return TRUE;
-}
-
-BOOL DeviceCtrl::bWriteCommand( LPVOID Buffer, int iLen )
-{
-    char* pBuf = (char*)Buffer;
-    int writedCount;
-    int nCount = iLen / 2048;
-    bool bEx = false;
-    if(iLen % 2048 != 0)
-    {
-        bEx = true;
-    }
-    for(int i = 0; i < nCount; i++)
-    {
-        writedCount = g_SerialComm.SendData(m_hDevHnd, (LPBYTE)(pBuf + i*2048), 2048);
-        if (writedCount != 2048)
-        {
-            LogE( __FILE__, __LINE__, "f_WriteData() fail." );
-            return false;
-        }
-    }
-    if(bEx)
-    {
-        writedCount = g_SerialComm.SendData(m_hDevHnd, (LPBYTE)(pBuf + nCount*2048), iLen - nCount*2048);
-        if (writedCount != iLen - nCount*2048)
-        {
-            LogE( __FILE__, __LINE__, "f_WriteData fail." );
-            return false;
-        }
-    }
-    return true;
-
-}
-
-BOOL DeviceCtrl::bCutPaper()
-{
-    LOG_FUNCTION();
-    LogM("bCutPaper() entry.");
-    INT		iRet = 0;
-    WORD	wCmdSize = 0;
-    BYTE	byCmdData[16];
-    memset( byCmdData, 0x00, sizeof(byCmdData) );
-    byCmdData[0] = 0x1D;	//GS
-    byCmdData[1] = 0x56;	//V
-    byCmdData[2] = 0x41;	//66
-    byCmdData[3] = 0x00;	//0
-    wCmdSize = 4;
-    iRet = g_SerialComm.SendData( m_hDevHnd, byCmdData, (int)wCmdSize );
-    LogM("bCutPaper  f_WriteData iRet=%d, wDataSize = %d", iRet, wCmdSize);
-    LogXM(byCmdData, wCmdSize, "Send");
-    return TRUE;
-}

+ 0 - 209
DevAdapter/keba/ThermalPrint.keba.1.1/DevCtrl.h

@@ -1,209 +0,0 @@
-#pragma once
-
-#include "stdafx.h"
-
-#include "SerialComm.h"
-
-#include <vector>
-#include <stdint.h>
-
-////////////////////////////////////////////////////////////////////////////////////////////
-//Define
-////////////////////////////////////////////////////////////////////////////////////////////
-//Error code
-//#define NO_ERROR				0
-#define RESET_USB_DEVICE 192 // 复位设备
-#define		BT_COMMAND_WRITE_TIMEOUT				(30)	//3秒写超时
-#define     BT_COMMAND_READ_TIMEOUT					(20)	//2秒读超时
-
-#define	INVALID_BUFFER			101
-#define	INVALID_DATA			102
-#define	LOAD_LIB_ERROR			103
-#define	CONNECT_ERROR			104
-#define	HARDWARE_ERROR			105
-#define	SOFTWARE_ERROR			106
-
-
-//一个字节(char)按8位获取数据定义
-#define     DATA_BIT0       (0x01)  //第一位
-#define     DATA_BIT1       (0x02)
-#define     DATA_BIT2       (0x04)
-#define     DATA_BIT3       (0x08)
-#define     DATA_BIT4       (0x10)
-#define     DATA_BIT5       (0x20)
-#define     DATA_BIT6       (0x40)
-#define     DATA_BIT7       (0x80)
-
-//Status
-//Byte3
-#define STAT_ONLINE				0xf0
-#define STAT_OFFLINE			0x00
-//Byte0
-#define STAT_PAPER_LOW			0x01
-#define STAT_HEAD_ERR			0x02
-#define STAT_PAPER_OUT			0x04
-#define STAT_HEAD_HOT			0x08
-#define STAT_CUT_ERR			0x10
-#define STAT_CLEAR				0x20
-#define STAT_STOP				0x40
-//Byte1
-#define STAT_PRST				0x01
-#define STAT_JAM_PRINT			0x02
-#define STAT_JAM_PRST			0x04
-#define STAT_JAM_NOMARK			0x08
-#define STAT_JAM_FEED			0x10
-#define STAT_RAM_FULL			0x20
-#define STAT_SYS_ERR			0x40
-//Byte2
-#define STAT_PROC_IDLE			0x00					//00000
-#define STAT_PROC_ERR			0x10					//10000
-#define STAT_PRINTING			(STAT_PROC_IDLE|0x01)	//00001
-#define STAT_PRINTING_ERR		(STAT_PROC_ERR|0x01)	//10001
-#define STAT_CUTING				(STAT_PROC_IDLE|0x02)	//00010
-#define STAT_CUTING_ERR			(STAT_PROC_ERR|0x02)	//10010
-
-#define STAT_PRST_EJECT			(STAT_PROC_IDLE|0x03)	//00011
-#define STAT_PRST_EJECT_ERR		(STAT_PROC_ERR|0x03)	//10011
-#define STAT_PRST_WAIT			(STAT_PROC_IDLE|0x04)	//00100
-#define STAT_PRST_WAIT_ERR		(STAT_PROC_ERR|0x04)	//10100
-#define STAT_PRST_RETRACT		(STAT_PROC_IDLE|0x05)	//00101
-#define STAT_PRST_RETRACT_ERR	(STAT_PROC_ERR|0x05)	//10101
-#define STAT_PRST_FEED			(STAT_PROC_IDLE|0x06)	//00110
-#define STAT_PRST_FEED_ERR		(STAT_PROC_ERR|0x06)	//10110
-#define STAT_PRST_PREPARE		(STAT_PROC_IDLE|0x07)	//00111
-#define STAT_PRST_PREPARE_ERR	(STAT_PROC_ERR|0x07)	//10111
-#define STAT_PRST_INTER_ERR		0x20
-#define STAT_BTN_PRESS			0x40
-#define STAT_RETRACT_ERR		0x80
-
-//Length
-#define MINFORMSIZE				strlen("XFSFORM")
-#define MINMEDIASIZE			strlen("XFSMEDIA")
-#define	STATUS_BUF_LEN			4
-#define EXTRA_LENTH				128
-#define LIST_LENTH				128
-#define ONELINE_MAX_LENTH		128
-#define INFO_DATA_LENTH			32
-#define	TRACELENTH				1024
-#define RAM_SIZE				4096
-#define UNIFIELD_MIN_LEN		4
-#define FIELD_MIN_LEN			2
-
-//Operation Step Counter
-#define PRINTDATAWRITE		1
-#define FEEDMARKSTART		2
-#define FEEDLINEPRINT		3
-#define	GETSTATUS			4
-#define INITIALIZ			5
-#define RESET				6
-#define RECOVERWAIT			7
-#define PAGEMODPRINT		8
-#define BMMODPRINT			9
-#define PAPERDIRCETCUT		10
-#define PAPERFEEDCUT		11
-#define MEDIATAKE_WAIT		12
-#define SETBLACKMARKSUPP	13
-#define SETBLACKMARKPARAM	14
-#define DIRECTPRINT			15
-#define	GETSTATUS_ASY		16
-#define	SETFONT				17
-#define	SETREDMODE			18
-#define	SETINTERCHAR		19
-#define	SETDSMODE			20
-#define	SETULMODE			21
-#define SETPRINTERMOD		22
-#define SETCHARSIZE			23	//自定义字符大小
-#define GETSTATUS_TM		24
-#define SETLINESPACE		25
-#define SETLEFTMARGIN		26
-#define SETPAGEMODE			27
-#define SETSTADMODE			28
-#define SETPRINTAREA		29
-#define SETPRESENTER		30
-#define SETPRESENTERTIME	31
-#define REALTIME_RESET		32
-#define	REALTIME_STATUS		33
-#define	SETALIGN			34
-#define	SETFEEDLEN			35
-#define SETCHARSPACE		36
-#define	PAPERDIRCETCUTEX	37
-#define	GETDEVINFO			38
-#define	SETPRINTPOS			39
-#define	SETBITMAPNUM		40
-#define	LOADBITMAPDATA		41
-#define	PRINTBITMAP			42
-#define	PRINTBITMAPNUM		43
-#define	FEEDMULTPRINT		44
-#define	SETTOPPRTPOS		45
-#define SETXYMOVEUNIT		46
-#define SETHORIRELATEPOS	47	//横向位移
-#define	SETVERIRELATEPOS	48	//纵向位移
-#define SETLINEPRINTAREA	49	//打印宽度
-#define SETLINEREVERSEPRINT	50	//倒置打印
-#define SETFONTINVERSE		51	//字符反白
-#define SETFONTROTATE		52	//字体旋转
-#define SETFONTCHNMOD		53	//汉字字符模式
-#define SETFONTLRSPACE		54	//字符左右边距
-//设置条码相关命令
-#define SETHRIPRINTPOS		55	//HRI打印位置
-#define SETBARCODEHEIGHT	56	//条码高度
-#define SETBARCODEWIDTH		57	//条码基本宽度
-#define	SETBARCODEPRINT		58	//打印条码
-#define SETPDF417INFO		59	//设置PDF147尺寸
-#define SETPDF417ERRORLEVEL	60	//PDF147纠错等级
-#define SETHRIFONTMODE		61	//设置HRI字体,暂未使用
-#define SETPRINTRAMBITMAP	62	//打印下载RAM位图
-#define SETDOWNLOADBITMAP	63	//下载RAM位图
-
-#define SETFONTUNDERLINE	64	//设置下划线
-#define SETFONTBOLD			65	//设置粗体
-
-#define SETQRCODEPARAM		66	//设置QRCode参数(基本元素宽度)
-#define SETRASTERBMPPRINT	67	//光栅方式打印位图
-
-
-
-////////////////////////////////////////////////////////////////////////////////////////////
-//Device Class
-////////////////////////////////////////////////////////////////////////////////////////////
-class DeviceCtrl
-{
-public:
-    bool LoadComSo(char *cErrorInfo);
-    bool UnLoadComSo();
-
-public:
-    //Constructions:
-    DeviceCtrl();
-    ~DeviceCtrl();
-    //Functions:
-    DWORD	Open(LPSTR cDeviceID, int dwBaudRate);
-    DWORD	Close();
-    DWORD	SendCommand( IN WORD wOperationID, IN LPBYTE lpbyOptionData=NULL, IN WORD wDataSize=0 );
-    DWORD	SendData( IN LPBYTE lpbyOptionData, IN WORD wDataSize );
-    DWORD	SendCommandSpec(IN WORD wOperationID, IN LPBYTE lpbyOptionData=NULL, IN WORD wDataSize=0);
-
-    BOOL	GetStatus( const LPBYTE lpbyPrinterStatus );
-    BOOL	GetVersion( const LPBYTE lpbyVersion, WORD wSize );
-    BOOL	SetParam( WORD wWidth );
-    BOOL    Reset();
-    //void	SetLogVar(ILog * pLog);
-    BOOL	bCutPaper();
-
-private:
-    DWORD	Init_Param();
-    DWORD	Init_DevInfo();
-    BOOL	Load_Driver_Dll();
-    BOOL	bWriteCommand( LPVOID Buffer, int iLen );
-    BOOL	bPrintOneline( IN LPBYTE, IN WORD );
-
-public:
-    void*   	m_hComLib;
-    HANDLE		m_hDevHnd;
-    char		m_cDeviceID[256];
-    CHAR		m_cDevType[INFO_DATA_LENTH];
-    CHAR		m_cFWMain[INFO_DATA_LENTH];
-    CHAR		m_cFWBoot[INFO_DATA_LENTH];
-    WORD		m_wPaperWidth;
-    BOOL        m_bOpened;
-};

+ 0 - 947
DevAdapter/keba/ThermalPrint.keba.1.1/ImageProcessing.cpp

@@ -1,947 +0,0 @@
-#include "stdafx.h"
-#include "ImageProcessing.h"
-// #include <comdef.h>
-// #include "gdiplus.h"
-// using namespace Gdiplus;
-// #pragma comment(lib, "gdiplus.lib")
-//#include <stdio.h>
-
-//using namespace Gdiplus;
-
-
-// static CHAR g_sProductName[] = {"ImageProcessing"};
-// static CHAR g_sProductVersion[] = {"1.00.01.0001"};
-
-
-// static BOOL GetModuleVersionInfo(SingleVer& verInfo)
-// LIB_MODULE_VER_FUNC_DEFINE(CImageProcessing)
-// {
-// 	LIB_MODULE_VER_FUNC_REALIZE(g_sProductName, g_sProductVersion)
-// }
-
-// GdiplusStartupInput gGdiStart;
-// ULONG_PTR			gGdiplusToken;
-
-CImageProcessing::CImageProcessing(void)
-{
-    memset(m_sBMPFilePath, 0x00, sizeof(m_sBMPFilePath));
-    m_dwWidth = 0;
-    m_dwHeight = 0;
-    m_wBitCount = 0;
-    m_lpPalette = NULL;
-    m_lpbyData = NULL;
-}
-
-CImageProcessing::CImageProcessing(LPCSTR lpszBMPFilePath)
-{
-    memset(m_sBMPFilePath, 0x00, sizeof(m_sBMPFilePath));
-    m_dwWidth = 0;
-    m_dwHeight = 0;
-    m_wBitCount = 0;
-    m_lpPalette = NULL;
-    m_lpbyData = NULL;
-
-    LoadBmpImage(lpszBMPFilePath);
-}
-
-CImageProcessing::CImageProcessing(LPVOID/*LPBITMAPINFOHEADER*/ lpvBMPData)
-{
-    memset(m_sBMPFilePath, 0x00, sizeof(m_sBMPFilePath));
-    m_dwWidth = 0;
-    m_dwHeight = 0;
-    m_wBitCount = 0;
-    m_lpPalette = NULL;
-    m_lpbyData = NULL;
-
-    LoadBmpImage(lpvBMPData);
-}
-
-CImageProcessing::~CImageProcessing(void)
-{
-    Destroy();
-}
-
-
-void CImageProcessing::Destroy()
-{
-    if (m_lpPalette != NULL)
-    {
-        delete[] m_lpPalette;
-        m_lpPalette = NULL;
-    }
-    if (m_lpbyData != NULL)
-    {
-        delete[] m_lpbyData;
-        m_lpbyData = NULL;
-    }
-    memset(m_sBMPFilePath, 0x00, sizeof(m_sBMPFilePath));
-    m_dwWidth = 0;
-    m_dwHeight = 0;
-    m_wBitCount = 0;
-}
-
-ULONG CImageProcessing::LoadBmpImage(LPCSTR lpszBMPFilePath)
-{
-    ULONG ulBMPSize = 0;
-    BITMAPFILEHEADER fileHeader;
-    BITMAPINFOHEADER infoHeader;
-    FILE* fp = NULL;
-    int err = 0;
-    DWORD dwRowSize = 0;
-    DWORD dwPaletteCnt = 0;
-    LPBYTE lpbyBMPData = NULL;
-    DWORD dwDataSize = 0;
-
-    if ((lpszBMPFilePath == NULL) || (strlen(lpszBMPFilePath) == 0))
-    {
-        return 0;
-    }
-
-    fp = fopen(lpszBMPFilePath, "rb");
-    if (fp == NULL)
-    {
-        return 0;
-    }
-    if ((fseek(fp, 0, SEEK_END) != 0) ||
-        ((size_t)ftell(fp) <= sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER)))
-    {
-        fclose(fp);
-        return 0;
-    }
-    if (fseek(fp, 0, SEEK_SET) != 0)
-    {
-        fclose(fp);
-        return 0;
-    }
-
-    memset(&fileHeader, 0x00, sizeof(fileHeader));
-    if (fread(&fileHeader, sizeof(fileHeader), 1, fp) != 1)
-    {
-        fclose(fp);
-        return 0;
-    }
-    if (fileHeader.bfType != 0x4d42)
-    {
-        fclose(fp);
-        return 0;
-    }
-
-    memset(&infoHeader, 0x00, sizeof(infoHeader));
-    if (fread(&infoHeader, sizeof(infoHeader), 1, fp) != 1)
-    {
-        fclose(fp);
-        return 0;
-    }
-    if ((infoHeader.biSize != sizeof(BITMAPINFOHEADER)) ||
-        (infoHeader.biCompression != BI_RGB) ||
-        (infoHeader.biHeight <= 0) ||
-        (infoHeader.biWidth <= 0))
-    {
-        fclose(fp);
-        return 0;
-    }
-
-    dwPaletteCnt = 0;
-    switch (infoHeader.biBitCount)
-    {
-    case 1:
-    case 4:
-    case 8:
-        dwPaletteCnt = (1 << infoHeader.biBitCount);
-        break;
-    case 16:
-    case 24:
-    case 32:
-        break;
-    default:
-        fclose(fp);
-        return 0;
-        break;
-    }
-
-    dwRowSize = (DWORD)((infoHeader.biWidth * infoHeader.biBitCount + 31) / 32 * 4);
-    if (infoHeader.biSizeImage != dwRowSize * infoHeader.biHeight)
-    {
-        infoHeader.biSizeImage = dwRowSize * infoHeader.biHeight;
-    }
-
-    dwDataSize =
-        sizeof(BITMAPINFOHEADER) + dwPaletteCnt * sizeof(Palette) + infoHeader.biSizeImage;
-    lpbyBMPData = new BYTE[dwDataSize];
-    if (lpbyBMPData == NULL)
-    {
-        fclose(fp);
-        return 0;
-    }
-    memcpy(lpbyBMPData, &infoHeader, sizeof(infoHeader));
-    if (fread(lpbyBMPData + sizeof(infoHeader), 1, dwDataSize - sizeof(BITMAPINFOHEADER), fp) !=
-        dwDataSize - sizeof(BITMAPINFOHEADER))
-    {
-        delete[] lpbyBMPData;
-        fclose(fp);
-        return 0;
-    }
-    fclose(fp);
-    ulBMPSize = LoadBmpImage(lpbyBMPData);
-    delete[] lpbyBMPData;
-    if (ulBMPSize > 0)
-    {
-        strcpy_s(m_sBMPFilePath, sizeof(m_sBMPFilePath), lpszBMPFilePath);
-    }
-
-    return ulBMPSize;
-}
-
-/**
- @参数:		lpvBMPData: BITMAPINFOHEADER + 图像数据
- */
-ULONG CImageProcessing::LoadBmpImage(LPVOID/*LPBITMAPINFOHEADER*/ lpvBMPData)
-{
-    BITMAPINFOHEADER infoHeader;
-    DWORD dwPaletteCnt = 0;
-    LPBYTE lpbyDataPtr = NULL;
-    DWORD dwRowSize = 0;
-
-    if (lpvBMPData == NULL)
-    {
-        return 0;
-    }
-    memset(&infoHeader, 0x00, sizeof(infoHeader));
-    lpbyDataPtr = (LPBYTE)lpvBMPData;
-    __try
-    {
-        memcpy(&infoHeader, lpbyDataPtr, sizeof(infoHeader));
-        lpbyDataPtr += sizeof(BITMAPINFOHEADER);
-    }
-    __catch (exception)
-    {
-        return 0;
-    }
-
-    if ((infoHeader.biSize != sizeof(BITMAPINFOHEADER)) ||
-        (infoHeader.biCompression != BI_RGB) ||
-        (infoHeader.biHeight <= 0) ||
-        (infoHeader.biWidth <= 0))
-    {
-        return 0;
-    }
-
-    dwPaletteCnt = 0;
-    switch (infoHeader.biBitCount)
-    {
-    case 1:
-    case 4:
-    case 8:
-        dwPaletteCnt = (1 << infoHeader.biBitCount);
-        break;
-    case 16:
-    case 24:
-    case 32:
-        break;
-    default:
-        return 0;
-        break;
-    }
-
-    Destroy();
-
-    if (dwPaletteCnt > 0)
-    {
-        m_lpPalette = new Palette[dwPaletteCnt];
-        if (m_lpPalette == NULL)
-        {
-            return 0;
-        }
-        __try
-        {
-            memcpy(m_lpPalette, lpbyDataPtr, dwPaletteCnt * sizeof(Palette));
-            lpbyDataPtr += (dwPaletteCnt * sizeof(Palette));
-        }
-        __catch(exception)
-        {
-            Destroy();
-            return 0;
-        }
-    }
-
-    dwRowSize = (DWORD)((infoHeader.biWidth * infoHeader.biBitCount + 31) / 32 * 4);
-    if (infoHeader.biSizeImage != dwRowSize * infoHeader.biHeight)
-    {
-        infoHeader.biSizeImage = dwRowSize * infoHeader.biHeight;
-    }
-    m_lpbyData = new BYTE[infoHeader.biSizeImage];
-    if (m_lpbyData == NULL)
-    {
-        Destroy();
-        return 0;
-    }
-    __try
-    {
-        memcpy(m_lpbyData, lpbyDataPtr, infoHeader.biSizeImage);
-    }
-    __catch (exception)
-    {
-        Destroy();
-        return 0;
-    }
-
-    m_dwWidth = (DWORD)infoHeader.biWidth;
-    m_dwHeight = (DWORD)infoHeader.biHeight;
-    m_wBitCount = infoHeader.biBitCount;
-    memset(m_sBMPFilePath, 0x00, sizeof(m_sBMPFilePath));
-
-    return (m_dwWidth * m_dwHeight);
-}
-
-ULONG CImageProcessing::GetBGRAInfo(LPBGRAInfo lpBGRA, ULONG ulMaxInfoCnt)
-{
-    ULONG ulBGRCnt = 0;
-
-    if ((lpBGRA == NULL) || (ulMaxInfoCnt == 0))
-    {
-        return (m_dwWidth * m_dwHeight);
-    }
-    if (m_wBitCount == 0)
-    {
-        return 0;
-    }
-
-    if (m_wBitCount <= 8)
-    {
-        ulBGRCnt = GetBGRAInfoWithPalette(lpBGRA, ulMaxInfoCnt);
-    }
-    else
-    {
-        ulBGRCnt = GetBGRAInfoWithoutPalette(lpBGRA, ulMaxInfoCnt);
-    }
-
-    return ulBGRCnt;
-}
-
-ULONG CImageProcessing::ConvertToBinaryData(
-    LPBYTE lpbyData, ULONG ulMaxSize,
-    BOOL bVerticalOrder/* = FALSE*/, BOOL bZeroBlack/* = TRUE*/, BYTE byThreshold/* = 127*/)
-{
-    ULONG ulDataCnt = 0;
-    ULONG ulBGRCnt = 0;
-    int nLuminance = 0;
-    LPBGRAInfo lpBGRA = NULL;
-    ULONG ulIdx1 = 0, ulIdx2 = 0;
-    ULONG ulBGRIdx = 0;
-    DWORD dwCol = 0, dwRaw = 0;
-    DWORD dwX = 0, dwY = 0;
-    BYTE byMask = 0x00;
-    BOOL bSet = FALSE;
-
-    if ((m_dwWidth * m_dwHeight * m_wBitCount == 0) ||
-        ((m_wBitCount <= 8) && (m_lpPalette == NULL)) ||
-        (m_lpbyData == NULL))
-    {
-        Destroy();
-        return 0;
-    }
-
-    if (bVerticalOrder == FALSE)
-    {
-        ulDataCnt = m_dwWidth / 8;
-        if (m_dwWidth % 8 > 0)
-        {
-            ulDataCnt++;
-        }
-        ulDataCnt = ulDataCnt * m_dwHeight;
-    }
-    else
-    {
-        ulDataCnt = m_dwHeight / 8;
-        if (m_dwHeight % 8 > 0)
-        {
-            ulDataCnt++;
-        }
-        ulDataCnt = ulDataCnt * m_dwWidth;
-    }
-    ulBGRCnt = m_dwWidth * m_dwHeight;
-// 	ulDataCnt = ulBGRCnt / 8;
-// 	if (ulBGRCnt % 8 > 0)
-// 	{
-// 		ulDataCnt++;
-// 	}
-
-    if ((lpbyData == NULL) || (ulMaxSize == 0))
-    {
-        return ulDataCnt;
-    }
-
-    memset(lpbyData, 0x00, ulMaxSize);
-    lpBGRA = new BGRAInfo[ulBGRCnt];
-    if (lpBGRA == NULL)
-    {
-        Destroy();
-        return 0;
-    }
-    memset(lpBGRA, 0x00, sizeof(BGRAInfo) * ulBGRCnt);
-    ulBGRCnt = GetBGRAInfo(lpBGRA, ulBGRCnt);
-    if (ulBGRCnt != m_dwWidth * m_dwHeight)
-    {
-        Destroy();
-        delete[] lpBGRA;
-        return 0;
-    }
-
-    ulDataCnt = 0;
-    dwCol = (m_dwWidth + 7) / 8;
-    dwRaw = (m_dwHeight + 7) / 8;
-
-    if (bVerticalOrder == FALSE)
-    {
-        for (dwY = 0; dwY < dwRaw; dwY++)
-        {
-            for (ulIdx2 = 0; ulIdx2 < 8; ulIdx2++)
-            {
-                for (dwX = 0; dwX < dwCol; dwX++)
-                {
-                    byMask = 0x00;
-                    for (ulIdx1 = 0; ulIdx1 < 8; ulIdx1++)
-                    {
-                        byMask <<= 1;
-                        if ((dwX * 8 + ulIdx1 < m_dwWidth) &&
-                            (dwY * 8 + ulIdx2 < m_dwHeight))
-                        {
-                            ulBGRIdx = (dwY * 8 + ulIdx2) * m_dwWidth + (dwX * 8 + ulIdx1);
-                            nLuminance =
-                                ((int)lpBGRA[ulBGRIdx].byBlue * 11 +
-                                 (int)lpBGRA[ulBGRIdx].byGreen * 59 +
-                                 (int)lpBGRA[ulBGRIdx].byRed * 30) / 100;
-                            bSet = (bZeroBlack == FALSE) ?
-                                (nLuminance <= byThreshold) : (nLuminance > byThreshold);
-                            if (bSet != FALSE)
-                            {
-                                byMask |= 0x01;
-                            }
-                        }
-                    }
-                    if (ulDataCnt >= ulMaxSize)
-                    {
-                        delete[] lpBGRA;
-                        return ulDataCnt;
-                    }
-                    lpbyData[ulDataCnt] = byMask;
-                    ulDataCnt++;
-                }
-            }
-        }
-    }
-    else
-    {
-        for (dwX = 0; dwX < dwCol; dwX++)
-        {
-            for (ulIdx1 = 0; ulIdx1 < 8; ulIdx1++)
-            {
-                for (dwY = 0; dwY < dwRaw; dwY++)
-                {
-                    byMask = 0x00;
-                    for (ulIdx2 = 0; ulIdx2 < 8; ulIdx2++)
-                    {
-                        byMask <<= 1;
-                        if ((dwX * 8 + ulIdx1 < m_dwWidth) &&
-                            (dwY * 8 + ulIdx2 < m_dwHeight))
-                        {
-                            ulBGRIdx = (dwY * 8 + ulIdx2) * m_dwWidth + (dwX * 8 + ulIdx1);
-                            nLuminance =
-                                ((int)lpBGRA[ulBGRIdx].byBlue * 11 +
-                                 (int)lpBGRA[ulBGRIdx].byGreen * 59 +
-                                 (int)lpBGRA[ulBGRIdx].byRed * 30) / 100;
-                            bSet = (bZeroBlack == FALSE) ?
-                                (nLuminance <= byThreshold) : (nLuminance > byThreshold);
-                            if (bSet != FALSE)
-                            {
-                                byMask |= 0x01;
-                            }
-                        }
-                    }
-                    if (ulDataCnt >= ulMaxSize)
-                    {
-                        delete[] lpBGRA;
-                        return ulDataCnt;
-                    }
-                    lpbyData[ulDataCnt] = byMask;
-                    ulDataCnt++;
-                }
-            }
-        }
-    }
-    delete[] lpBGRA;
-
-    return ulDataCnt;
-}
-
-ULONG CImageProcessing::GetPixelCount(DWORD* lpdwWidth/* = NULL*/, DWORD* lpdwHeight/* = NULL*/)
-{
-    if (lpdwWidth != NULL)
-    {
-        *lpdwWidth = m_dwWidth;
-    }
-    if (lpdwHeight != NULL)
-    {
-        *lpdwHeight = m_dwHeight;
-    }
-
-    return (m_dwWidth * m_dwHeight);
-}
-
-WORD CImageProcessing::GetPaletteInfo(LPPalette lpPalette, WORD wMaxPaletteCnt)
-{
-    WORD wPaletteCnt = 0;
-
-    if ((m_wBitCount == 0) || (m_lpPalette == NULL))
-    {
-        return 0;
-    }
-    if (m_wBitCount <= 8)
-    {
-        wPaletteCnt = (1 << m_wBitCount);
-        if (m_lpPalette == NULL)
-        {
-            return 0;
-        }
-    }
-
-    if ((lpPalette == NULL) || (wMaxPaletteCnt == 0))
-    {
-        return wPaletteCnt;
-    }
-    if (wPaletteCnt > wMaxPaletteCnt)
-    {
-        wPaletteCnt = wMaxPaletteCnt;
-    }
-    memset(lpPalette, 0x00, sizeof(Palette) * wMaxPaletteCnt);
-    if (m_lpPalette != NULL)
-    {
-        memcpy(lpPalette, m_lpPalette, sizeof(Palette) * wPaletteCnt);
-    }
-
-    return wPaletteCnt;
-}
-
-BOOL CImageProcessing::SaveAs(LPCSTR lpszBMPFilePath)
-{
-    BITMAPFILEHEADER fileHeader;
-    BITMAPINFOHEADER infoHeader;
-
-    if ((lpszBMPFilePath == NULL) || (strlen(lpszBMPFilePath) == 0) ||
-        (m_lpbyData == NULL) ||
-        (m_dwWidth * m_dwHeight * m_wBitCount == 0) ||
-        ((m_wBitCount <= 8) && (m_lpPalette == NULL)))
-    {
-        return FALSE;
-    }
-    if (strcmp(lpszBMPFilePath, m_sBMPFilePath) == 0)
-    {
-        return TRUE;
-    }
-
-    if (GetBMPHeaderInfo(&infoHeader, &fileHeader) == FALSE)
-    {
-        return FALSE;
-    }
-
-    if (SaveToFile(
-        lpszBMPFilePath, &infoHeader, &fileHeader, m_lpbyData, m_lpPalette) == FALSE)
-    {
-        return FALSE;
-    }
-
-    strcpy_s(m_sBMPFilePath, sizeof(m_sBMPFilePath), lpszBMPFilePath);
-
-    return TRUE;
-}
-
-BOOL CImageProcessing::SaveAsBinaryBmp(LPCSTR lpszBMPFilePath, BYTE byThreshold/* = 127*/)
-{
-    BITMAPFILEHEADER fileHeader;
-    BITMAPINFOHEADER infoHeader;
-    LPPalette lpPalette = NULL;
-    LPBYTE lpbyData = NULL;
-    LPBYTE lpbyDataPtr = NULL;
-    LPBGRAInfo lpBGRA = NULL;
-    DWORD dwRowSize = 0;
-    WORD wPaletteCnt = 0;
-    DWORD dwHIdx = 0;
-    DWORD dwWIdx = 0;
-    ULONG ulBGRIdx = 0;
-    BYTE byMask = 0x00;
-    int nLuminance = 0;
-
-    if ((lpszBMPFilePath == NULL) || (strlen(lpszBMPFilePath) == 0) ||
-        (m_lpbyData == NULL) ||
-        (m_dwWidth * m_dwHeight * m_wBitCount == 0) ||
-        ((m_wBitCount <= 8) && (m_lpPalette == NULL)))
-    {
-        return FALSE;
-    }
-
-    if (m_wBitCount == 1)
-    {
-        return SaveAs(lpszBMPFilePath);
-    }
-
-    lpBGRA = new BGRAInfo[m_dwWidth * m_dwHeight];
-    if (lpBGRA == NULL)
-    {
-        return FALSE;
-    }
-    memset(lpBGRA, 0x00, m_dwWidth * m_dwHeight * sizeof(BGRAInfo));
-    if (GetBGRAInfo(lpBGRA, m_dwWidth * m_dwHeight) != m_dwWidth * m_dwHeight)
-    {
-        delete[] lpBGRA;
-        return FALSE;
-    }
-
-    if (GetBMPHeaderInfo(&infoHeader, &fileHeader) == FALSE)
-    {
-        delete[] lpBGRA;
-        return FALSE;
-    }
-    infoHeader.biBitCount = 1;
-
-    dwRowSize = (m_dwWidth * infoHeader.biBitCount + 31) / 32 * 4;
-    if (infoHeader.biBitCount <= 8)
-    {
-        wPaletteCnt = (1 << infoHeader.biBitCount);
-    }
-
-    infoHeader.biClrUsed = wPaletteCnt;
-    infoHeader.biClrImportant = infoHeader.biClrUsed;
-    infoHeader.biSizeImage = m_dwHeight * dwRowSize;
-
-    lpPalette = new Palette[wPaletteCnt];
-    if (lpPalette == NULL)
-    {
-        delete[] lpBGRA;
-        return FALSE;
-    }
-    memset(lpPalette, 0x00, wPaletteCnt * sizeof(Palette));
-    lpPalette[1].byBlue = 0xFF;
-    lpPalette[1].byGreen = 0xFF;
-    lpPalette[1].byRed = 0xFF;
-
-    lpbyData = new BYTE[infoHeader.biSizeImage];
-    if (lpbyData == NULL)
-    {
-        delete[] lpBGRA;
-        delete[] lpPalette;
-        return FALSE;
-    }
-    memset(lpbyData, 0x00, infoHeader.biSizeImage);
-    for (dwHIdx = 0; dwHIdx < m_dwHeight; dwHIdx++)
-    {
-        lpbyDataPtr = lpbyData + dwRowSize * (m_dwHeight - dwHIdx - 1);
-        for (dwWIdx = 0; dwWIdx < m_dwWidth; dwWIdx++)
-        {
-            ulBGRIdx = dwHIdx * m_dwWidth + dwWIdx;
-            byMask = 0x80 >> (dwWIdx % 8);
-            nLuminance =
-                ((int)lpBGRA[ulBGRIdx].byBlue * 11 +
-                 (int)lpBGRA[ulBGRIdx].byGreen * 59 +
-                 (int)lpBGRA[ulBGRIdx].byRed * 30) / 100;
-            if (nLuminance > byThreshold)
-            {
-                *lpbyDataPtr |= byMask;
-            }
-            if ((dwWIdx + 1) % 8 == 0)
-            {
-                lpbyDataPtr++;
-            }
-        }
-    }
-    delete[] lpBGRA;
-
-    if (SaveToFile(
-        lpszBMPFilePath, &infoHeader, &fileHeader, lpbyData, lpPalette) == FALSE)
-    {
-        delete[] lpPalette;
-        delete[] lpbyData;
-        return FALSE;
-    }
-
-    Destroy();
-    strcpy_s(m_sBMPFilePath, sizeof(m_sBMPFilePath), lpszBMPFilePath);
-    m_dwWidth = (DWORD)infoHeader.biWidth;
-    m_dwHeight = (DWORD)infoHeader.biHeight;
-    m_wBitCount = infoHeader.biBitCount;
-    m_lpPalette = lpPalette;
-    m_lpbyData = lpbyData;
-
-    delete[] lpPalette;
-    delete[] lpbyData;
-
-    return TRUE;
-}
-
-
-ULONG CImageProcessing::GetBGRAInfoWithPalette(LPBGRAInfo lpBGRA, ULONG ulMaxInfoCnt)
-{
-    ULONG ulBGRACnt = 0;
-    LPBYTE lpbyDataPtr = NULL;
-    DWORD dwHIdx = 0, dwWIdx = 0;
-    WORD wBitIdx = 0;
-    DWORD dwRowSize = 0;
-    BYTE byPaletteIdx = 0;
-
-    if ((lpBGRA == NULL) || (ulMaxInfoCnt == 0))
-    {
-        return (m_dwWidth * m_dwHeight);
-    }
-    if ((m_dwWidth * m_dwHeight == 0) ||
-        (m_wBitCount > 8) ||
-        (m_lpbyData == NULL) || (m_lpPalette == NULL))
-    {
-        return 0;
-    }
-
-    memset(lpBGRA, 0x00, ulMaxInfoCnt * sizeof(BGRAInfo));
-    ulBGRACnt = 0;
-    dwRowSize = (DWORD)((m_dwWidth * m_wBitCount + 31) / 32 * 4);
-    for (dwHIdx = m_dwHeight - 1; dwHIdx >= 0; dwHIdx--)
-    {
-        lpbyDataPtr = m_lpbyData + (dwRowSize * dwHIdx);
-        for (dwWIdx = 0; dwWIdx < dwRowSize; dwWIdx++)
-        {
-            byPaletteIdx = 0;
-            for (wBitIdx = 0; wBitIdx < 8; wBitIdx++)
-            {
-                byPaletteIdx <<= 1;
-                if ((lpbyDataPtr[dwWIdx] & (0x80 >> wBitIdx)) != 0x00)
-                {
-                    byPaletteIdx |= 0x01;
-                }
-                if ((wBitIdx + 1) % m_wBitCount == 0)
-                {
-                    lpBGRA[ulBGRACnt] = m_lpPalette[byPaletteIdx];
-                    ulBGRACnt++;
-                    byPaletteIdx = 0;
-                    if (ulBGRACnt == ulMaxInfoCnt)
-                    {
-                        return ulBGRACnt;
-                    }
-                    if ((ulBGRACnt % m_dwWidth) == 0)
-                    {
-                        break;
-                    }
-                }
-            }
-            if ((ulBGRACnt % m_dwWidth) == 0)
-            {
-                break;
-            }
-        }
-    }
-
-    return ulBGRACnt;
-}
-
-ULONG CImageProcessing::GetBGRAInfoWithoutPalette(LPBGRAInfo lpBGRA, ULONG ulMaxInfoCnt)
-{
-    ULONG ulBGRACnt = 0;
-    LPBYTE lpbyDataPtr = NULL;
-    DWORD dwHIdx = 0, dwWIdx = 0;
-    DWORD dwRowSize = 0;
-
-    if ((lpBGRA == NULL) || (ulMaxInfoCnt == 0))
-    {
-        return (m_dwWidth * m_dwHeight);
-    }
-    if ((m_dwWidth * m_dwHeight == 0) ||
-        (m_wBitCount <= 8) ||
-        (m_lpbyData == NULL))
-    {
-        return 0;
-    }
-
-    memset(lpBGRA, 0x00, ulMaxInfoCnt * sizeof(BGRAInfo));
-    ulBGRACnt = 0;
-    dwRowSize = (DWORD)((m_dwWidth * m_wBitCount + 31) / 32 * 4);
-    for (dwHIdx = m_dwHeight - 1; dwHIdx >= 0; dwHIdx--)
-    {
-        lpbyDataPtr = m_lpbyData + (dwRowSize * dwHIdx);
-        for (dwWIdx = 0; dwWIdx < m_dwWidth; dwWIdx++)
-        {
-            if (m_wBitCount == 16)
-            {
-                lpBGRA[ulBGRACnt].byBlue = (BYTE)(*((LPWORD)lpbyDataPtr) & 0x001F);
-                lpBGRA[ulBGRACnt].byGreen = (BYTE)((*((LPWORD)lpbyDataPtr) & 0x03E0) >> 5);
-                lpBGRA[ulBGRACnt].byRed = (BYTE)((*((LPWORD)lpbyDataPtr) & 0x7C00) >> 10);
-            }
-            else
-            {
-                memcpy(&lpBGRA[ulBGRACnt], lpbyDataPtr, m_wBitCount / 8);
-            }
-            ulBGRACnt++;
-            if (ulBGRACnt == ulMaxInfoCnt)
-            {
-                return ulBGRACnt;
-            }
-            lpbyDataPtr += (m_wBitCount / 8);
-        }
-    }
-
-    return ulBGRACnt;
-}
-
-BOOL CImageProcessing::GetBMPHeaderInfo(LPBITMAPINFOHEADER lpInfoHeader, LPBITMAPFILEHEADER lpFileHeader)
-{
-    DWORD dwRowSize = 0;
-    WORD wPaletteCnt = 0;
-
-    if ((lpInfoHeader == NULL) && (lpFileHeader == NULL))
-    {
-        return FALSE;
-    }
-    if ((m_lpbyData == NULL) ||
-        (m_dwWidth * m_dwHeight * m_wBitCount == 0) ||
-        ((m_wBitCount <= 8) && (m_lpPalette == NULL)))
-    {
-        return FALSE;
-    }
-
-    dwRowSize = (m_dwWidth * m_wBitCount + 31) / 32 * 4;
-    if (m_wBitCount <= 8)
-    {
-        wPaletteCnt = (1 << m_wBitCount);
-    }
-    if (lpInfoHeader != NULL)
-    {
-        memset(lpInfoHeader, 0x00, sizeof(BITMAPINFOHEADER));
-        lpInfoHeader->biSize = sizeof(BITMAPINFOHEADER);
-        lpInfoHeader->biWidth = (LONG)m_dwWidth;
-        lpInfoHeader->biHeight = (LONG)m_dwHeight;
-        lpInfoHeader->biPlanes = 1;
-        lpInfoHeader->biBitCount = m_wBitCount;
-        lpInfoHeader->biSizeImage = m_dwHeight * dwRowSize;
-        lpInfoHeader->biClrUsed = wPaletteCnt;
-        lpInfoHeader->biClrImportant = lpInfoHeader->biClrUsed;
-    }
-
-    if (lpFileHeader != NULL)
-    {
-        memset(lpFileHeader, 0x00, sizeof(BITMAPFILEHEADER));
-        lpFileHeader->bfType = 0x4d42;
-        lpFileHeader->bfSize =
-            sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) +
-            wPaletteCnt * sizeof(Palette) + m_dwHeight * dwRowSize;
-        lpFileHeader->bfOffBits = lpFileHeader->bfSize - m_dwHeight * dwRowSize;
-    }
-
-    return TRUE;
-}
-
-BOOL CImageProcessing::SaveToFile(LPCSTR lpszBMPFilePath,
-    LPBITMAPINFOHEADER lpInfoHeader, LPBITMAPFILEHEADER lpFileHeader,
-    LPBYTE lpbyData, LPPalette lpPalette/* = NULL*/)
-{
-    FILE* fp = NULL;
-    int err = 0;
-    DWORD dwRowSize = 0;
-    WORD wPaletteCnt = 0;
-
-    if ((lpszBMPFilePath == NULL) || (strlen(lpszBMPFilePath) == 0) ||
-        (lpInfoHeader == NULL) || (lpFileHeader == NULL) || (lpbyData == NULL) ||
-        ((lpInfoHeader->biBitCount <= 8) && (lpPalette == NULL)))
-    {
-        return FALSE;
-    }
-
-    dwRowSize = (lpInfoHeader->biWidth * lpInfoHeader->biBitCount + 31) / 32 * 4;
-    if (lpInfoHeader->biBitCount <= 8)
-    {
-        wPaletteCnt = (1 << lpInfoHeader->biBitCount);
-    }
-    lpInfoHeader->biSizeImage = lpInfoHeader->biHeight * dwRowSize;
-
-    fp = fopen(lpszBMPFilePath, "wb");
-    if (fp == NULL)
-    {
-        return FALSE;
-    }
-    if (fwrite(lpFileHeader, sizeof(BITMAPFILEHEADER), 1, fp) != 1)
-    {
-        fclose(fp);
-        return FALSE;
-    }
-    if (fwrite(lpInfoHeader, sizeof(BITMAPINFOHEADER), 1, fp) != 1)
-    {
-        fclose(fp);
-        return FALSE;
-    }
-
-    if (wPaletteCnt > 0)
-    {
-        if (fwrite(lpPalette, sizeof(Palette), wPaletteCnt, fp) !=
-            wPaletteCnt)
-        {
-            fclose(fp);
-            return FALSE;
-        }
-    }
-    if (fwrite(lpbyData, sizeof(BYTE), lpInfoHeader->biSizeImage, fp) !=
-        lpInfoHeader->biSizeImage)
-    {
-        fclose(fp);
-        return FALSE;
-    }
-    fclose(fp);
-
-    return TRUE;
-}
-
-string CImageProcessing::Decode(const char* Data,int DataByte,int& OutByte)
-{
-    //解码表
-    const char DecodeTable[] =
-    {
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        62, // '+'
-        0, 0, 0,
-        63, // '/'
-        52, 53, 54, 55, 56, 57, 58, 59, 60, 61, // '0'-'9'
-        0, 0, 0, 0, 0, 0, 0,
-        0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
-        13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, // 'A'-'Z'
-        0, 0, 0, 0, 0, 0,
-        26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
-        39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51 // 'a'-'z'
-    };
-    //返回值
-    string strDecode;
-    int nValue;
-    int i= 0;
-    while (i < DataByte)
-    {
-        if (*Data != '\r' && *Data!='\n')
-        {
-            nValue = DecodeTable[*Data++] << 18;
-            nValue += DecodeTable[*Data++] << 12;
-            strDecode+=(nValue & 0x00FF0000) >> 16;
-            OutByte++;
-            if (*Data != '=')
-            {
-                nValue += DecodeTable[*Data++] << 6;
-                strDecode+=(nValue & 0x0000FF00) >> 8;
-                OutByte++;
-                if (*Data != '=')
-                {
-                    nValue += DecodeTable[*Data++];
-                    strDecode+=nValue & 0x000000FF;
-                    OutByte++;
-                }
-            }
-            i += 4;
-        }
-        else// 回车换行,跳过
-        {
-            Data++;
-            i++;
-        }
-    }
-    return strDecode;
-}

+ 0 - 96
DevAdapter/keba/ThermalPrint.keba.1.1/ImageProcessing.h

@@ -1,96 +0,0 @@
-#pragma once
-#include <string>
-#include "wintypes.h"
-#pragma pack(1)
-using namespace std;
-
-typedef struct tag_RGBAInfo
-{
-    BYTE byBlue;
-    BYTE byGreen;
-    BYTE byRed;
-    BYTE byAlpha;
-} BGRAInfo, *LPBGRAInfo, Palette, *LPPalette;
-
-typedef struct tagRGBQUAD {
-        BYTE    rgbBlue;
-        BYTE    rgbGreen;
-        BYTE    rgbRed;
-        BYTE    rgbReserved;
-} RGBQUAD;
-
-typedef struct tagBITMAPINFOHEADER{
-        DWORD      biSize;
-        DWORD       biWidth;
-        DWORD       biHeight;
-        WORD       biPlanes;
-        WORD       biBitCount;
-        DWORD      biCompression;
-        DWORD      biSizeImage;
-        DWORD       biXPelsPerMeter;
-        DWORD       biYPelsPerMeter;
-        DWORD      biClrUsed;
-        DWORD      biClrImportant;
-} BITMAPINFOHEADER, FAR *LPBITMAPINFOHEADER, *PBITMAPINFOHEADER;
-
-typedef struct tagBITMAPFILEHEADER {
-        WORD    bfType;
-        DWORD   bfSize;
-        WORD    bfReserved1;
-        WORD    bfReserved2;
-        DWORD   bfOffBits;
-} BITMAPFILEHEADER, FAR *LPBITMAPFILEHEADER, *PBITMAPFILEHEADER;
-
-typedef struct tagBITMAPINFO {
-    BITMAPINFOHEADER    bmiHeader;
-    RGBQUAD             bmiColors[1];
-} BITMAPINFO, FAR *LPBITMAPINFO, *PBITMAPINFO;
-
-#define BI_RGB        0L
-
-
-class CImageProcessing
-{
-public:
-//	LIB_MODULE_VER_FUNC_DECLARE;
-
-    CImageProcessing(void);
-    CImageProcessing(LPCSTR lpszBMPFilePath);
-    CImageProcessing(LPVOID/*LPBITMAPINFOHEADER*/ lpvBMPData);
-    virtual ~CImageProcessing(void);
-
-    void Destroy();
-    ULONG LoadBmpImage(LPCSTR lpszBMPFilePath);
-    ULONG LoadBmpImage(LPVOID/*LPBITMAPINFOHEADER*/ lpvBMPData);
-
-    ULONG GetBGRAInfo(LPBGRAInfo lpBGRA, ULONG ulMaxInfoCnt);
-    ULONG GetPixelCount(DWORD* lpdwWidth = NULL, DWORD* lpdwHeight = NULL);
-    WORD GetPaletteInfo(LPPalette lpPalette, WORD wMaxPaletteCnt);
-    ULONG ConvertToBinaryData(
-        LPBYTE lpbyData, ULONG ulMaxSize,
-        BOOL bVerticalOrder = FALSE, BOOL bZeroBlack = TRUE, BYTE byThreshold = 127);
-
-    BOOL SaveAs(LPCSTR lpszBMPFilePath);
-    BOOL SaveAsBinaryBmp(LPCSTR lpszBMPFilePath, BYTE byThreshold = 127);
-
-    string Decode(const char* Data,int DataByte,int& OutByte);
-
-protected:
-    ULONG GetBGRAInfoWithPalette(LPBGRAInfo lpBGRA, ULONG ulMaxInfoCnt);
-    ULONG GetBGRAInfoWithoutPalette(LPBGRAInfo lpBGRA, ULONG ulMaxInfoCnt);
-    BOOL GetBMPHeaderInfo(LPBITMAPINFOHEADER lpInfoHeader, LPBITMAPFILEHEADER lpFileHeader);
-    BOOL SaveToFile(LPCSTR lpszBMPFilePath,
-        LPBITMAPINFOHEADER lpInfoHeader, LPBITMAPFILEHEADER lpFileHeader,
-        LPBYTE lpbyData, LPPalette lpPalette = NULL);
-
-
-
-protected:
-    CHAR m_sBMPFilePath[MAX_PATH];
-    DWORD m_dwWidth;
-    DWORD m_dwHeight;
-    WORD m_wBitCount;
-    LPPalette m_lpPalette;
-    LPBYTE m_lpbyData;
-};
-#pragma back(pop)

+ 0 - 1790
DevAdapter/keba/ThermalPrint.keba.1.1/ThermalPrint.cpp

@@ -1,1790 +0,0 @@
-// ThermalPrint.cpp : 定义 DLL 应用程序的导出函数。
-//
-
-#include "stdafx.h"
-#include "ThermalPrint.h"
-#include "ImageProcessing.h"
-#include "log4vendor.h"
-using namespace std;
-
-LOG_EXTERN()
-#define		DEV_CMD_ACTION_RESPONSE_TIMEOUT			3000	//等待动作3秒钟,超时
-#define		MMT0INCH(x)								(x*203)/25.4	//毫米单位转为英寸,DPI
-#define		MMT0INCH2(x,y)							(x*203)/(25.4*y) //毫米单位转为英寸,DPI,x为实际值,y为缩小比例
-extern int GetDllPathLocal(std::string& dllPath);   //在dllmain.cpp
-
-
-DWORD gdwCharSpace = 0;
-DWORD gdwCharSize = 1;
-BYTE gDoubleHW = 0;		//设置倍高倍宽标识记录。
-DeviceCtrl	DeviceTask;
-LPBYTE g_ImageFile = NULL;
-LONG g_size = 0;
-ThermalPrint* g_this = NULL;
-
-
-unsigned long GetTickCount()
-{
-    struct timespec ts;
-
-    clock_gettime(CLOCK_MONOTONIC, &ts);
-
-    return (ts.tv_sec * 1000 + ts.tv_nsec / 1000000);
-}
-
-
-ThermalPrint::ThermalPrint():
-m_bDevOpen(false)
-{
-    //std::string dllPath;
-    memset(m_szErrMsg, 0x00, sizeof(m_szErrMsg));
-    m_nPaperType = PAPER_LABEL;
-    m_paperWidth = 80;
-    bPrintTextFlag = FALSE;
-    int nRet;
-
-    g_this = this;
-    LOG_FUNCTION();
-
-}
-ThermalPrint::~ThermalPrint()
-{
-    LOG_FUNCTION();
-    m_bDevOpen = false;
-
-    //m_handDev有效,则关闭Dev
-    DevClose();
-}
- UINT ThermalPrint::StartProcessThread(LPVOID lpvParam)
-{
-     LOG_FUNCTION();
-     LogM("StartProcessThread() Entry.");
-    for(int i = 1; i <= 100; i++)
-    {
-        LogM("打印第%d张凭条", i);
-        ThermalState devState;
-        if (g_this->GetDevState(devState) != Error_Succeed)
-        {
-            LogM("break for");
-            break;
-        }
-        //BeginPrint(PAPER_CONTINUOUS, 80);
-        g_this->SetParam(COMMON_LEFT_MARGIN, 10);
-        g_this->SetParam(COMMON_PRINTABLE_AREA, 60);
-        g_this->SetParam(COMMON_ROW_SPACE, 4);
-        g_this->SetParam(COMMON_ALIGN, 0);
-        g_this->SetFont(FONT_UNDERLINE, 1);
-        g_this->PrintText(LPBYTE("第一行下划线"), 12);
-        g_this->SetFont(FONT_UNDERLINE, 0);
-        g_this->PrintText(LPBYTE("无下划"), 6);
-        g_this->ControlAction(ACTION_PRINT_ONE_LINE, 1);
-
-        g_this->PrintText(LPBYTE("第二行"), 6);
-        g_this->SetFont(FONT_BOLD, 1);
-        g_this->PrintText(LPBYTE("加粗"), 4);
-        g_this->SetFont(FONT_BOLD, 0);
-        g_this->PrintText(LPBYTE("不加粗"), 6);
-        g_this->ControlAction(ACTION_PRINT_ONE_LINE, 1);
-        g_this->SetFont(FONT_INVERSE, 1);
-        g_this->PrintText(LPBYTE("第三行反白"), 10);
-        g_this->SetFont(FONT_INVERSE, 0);
-        g_this->PrintText(LPBYTE("不反白"), 6);
-        g_this->ControlAction(ACTION_PRINT_ONE_LINE, 1);
-        g_this->PrintText(LPBYTE("第四行"), 6);
-        g_this->SetFont(FONT_ROTATE, 1);
-        g_this->PrintText(LPBYTE("旋转"), 4);
-        g_this->SetFont(FONT_ROTATE, 0);
-        g_this->PrintText(LPBYTE("正常"), 4);
-        g_this->ControlAction(ACTION_PRINT_ONE_LINE, 1);
-        g_this->PrintText(LPBYTE("第五行"), 6);
-        g_this->SetFont(FONT_CUSTOM_SIZE, 6);
-        g_this->PrintText(LPBYTE("字体宽高自定义"), 14);
-        g_this->SetFont(FONT_CUSTOM_SIZE, 0);
-        g_this->PrintText(LPBYTE("正常字体"), 8);
-        g_this->ControlAction(ACTION_PRINT_ONE_LINE, 1);
-        g_this->PrintText(LPBYTE("第七行"), 6);
-        g_this->ControlAction(ACTION_MOVE_TO_POSITION_RELATIVE, 12);
-        g_this->PrintText(LPBYTE("距离(横向)"), 12);
-        g_this->ControlAction(ACTION_PRINT_ONE_LINE, 1);
-        g_this->PrintText(LPBYTE("第一行"), 6);
-        g_this->ControlAction(ACTION_PRINT_ONE_LINE, 1);
-        LogM("打印第1张图片");
-        DeviceTask.SendCommand(SETRASTERBMPPRINT, g_ImageFile, g_size);
-        g_this->PrintImage(g_ImageFile, g_size);
-        g_this->ControlAction(ACTION_PRINT_ONE_LINE, 1);
-        LogM("打印第2张图片");
-        DeviceTask.SendCommand(SETRASTERBMPPRINT, g_ImageFile, g_size);
-        g_this->PrintImage(g_ImageFile, g_size);
-        //ControlAction(ACTION_PRINT_ONE_LINE, 1);
-        LogM("打印第3张图片");
-        DeviceTask.SendCommand(SETRASTERBMPPRINT, g_ImageFile, g_size);
-        g_this->PrintImage(g_ImageFile, g_size);
-        g_this->ControlAction(ACTION_PRINT_ONE_LINE, 1);
-        g_this->ControlAction(ACTION_CUT_ALL, 1);
-        g_this->ControlAction(ACTION_PRINT_MOVEFORWRAD_LINES, 5);
-        //Sleep(2000);
-    }
-
-    if (g_ImageFile != NULL)
-    {
-        delete g_ImageFile;
-        g_ImageFile = NULL;
-        g_size = 0;
-    }
-    return 1;
-}
-
- int getFileVer(char* sFile, short &ch1, short &ch2)
- {
-         ch1 = 0;
-         ch2 = 0;
-         char* pFind = strstr(sFile, ".so");
-         char* pTemp = pFind;
-         while(pTemp)
-         {
-             pFind = pTemp;
-             pTemp = strstr(pFind + 3, ".so");
-         }
-         if(pFind == nullptr) return 0;
-
-         pTemp = pFind - 1;
-         while(isdigit(*pTemp) && pTemp > sFile) pTemp--;
-         if(*pTemp == '.')
-             ch2 = atoi(pTemp + 1);
-
-         pTemp--;
-         while(isdigit(*pTemp) && pTemp > sFile) pTemp--;
-
-         if(*pTemp == '.')
-             ch1 = atoi(pTemp + 1);
-
-         return 1;
- }
-
-ErrorCodeEnum ThermalPrint::GetDevCategory(DevCategoryInfo &devCategory)
-{
-    LOG_FUNCTION();
-    LogM("GetDevCategory() Entry.");
-    memset(devCategory.szType, 0, MAX_DEV_TYPE_LEN);
-    memset(devCategory.szModel, 0, MAX_DEV_MODEL_LEN);
-    memset(devCategory.szVendor, 0, MAX_DEV_VENDOR_LEN);
-
-    memcpy(devCategory.szModel, "FWID=Main Firmware: FV1.010.06", strlen("FWID=Main Firmware: FV1.010.06"));
-    memcpy(devCategory.szType, "PVER=SNBC#MID=BT-NH80M", strlen("PVER=SNBC#MID=BT-NH80M"));
-    memcpy(devCategory.szVendor, "keba", strlen("keba"));
-
-    char sPath[256], sFile[128] = {0};
-    GetCurModulePath(sPath, sFile);
-    short v1,v2;
-    getFileVer(sFile, v1, v2);
-
-    devCategory.version.wMajor = v1;
-    devCategory.version.wMinor = v2;
-
-    devCategory.version.wRevision = 0xffff;
-    devCategory.version.wBuild = 2;
-
-    //_beginthreadex(NULL, 0, StartProcessThread, (LPVOID)0, 0, NULL);
-
-    LogM("GetDevCategory() return:\n\
-                      devCategory.szType = %s, \n\
-                      devCategory.szVendor = %s, \n\
-                      devCategory.eState = %d, \n\
-                      devCategory.version.wMajor = %d, \n\
-                      devCategory.version.wMinor = %d, \n\
-                      devCategory.version.wRevision = %d, \n\
-                      devCategory.version.wBuild= %d, \n\
-                      devCategory..szModel = %s, \n",
-                      devCategory.szType,
-                      devCategory.szVendor,
-                      devCategory.eState,
-                      devCategory.version.wMajor,
-                      devCategory.version.wMinor,
-                      devCategory.version.wRevision,
-                      devCategory.version.wBuild,
-                      devCategory.szModel);
-
-    return Error_Succeed;
-}
-
-//	Reset device.
-//	Do the cleaning work and initialize device again in order to return to
-//	the normal condition.
-ErrorCodeEnum ThermalPrint::Reset()
-{
-    LOG_FUNCTION();
-    LogM("Reset() Entry.");
-
-    DWORD	dwResult = Error_Succeed;
-    BYTE	byStatus[STATUS_BUF_LEN];
-    //Check status
-    if ( !DeviceTask.GetStatus(byStatus) )				//Get status failed
-    {
-        SaveErrorInfo("Connect device is failed!");
-        LogM("Reset(), Connect device is failed!, nRet=%d", Error_DevConnFailed);
-        return Error_DevConnFailed;						//Device offline
-    }
-
-    //Send command
-    // dwResult = DeviceTask.SendCommandSpec(REALTIME_RESET);
-
-    if ( !DeviceTask.Reset() )
-    {
-        SaveErrorInfo("Connect device is failed!");
-        LogM("Reset(), Connect device is failed!, nRet=%d", Error_DevConnFailed);
-        return Error_DevConnFailed;						//Device connection error
-    }
-    LogM("DeviceTask.Reset() sucess.");
-    sleep(1);
-    //Get result status
-    if ( !DeviceTask.GetStatus(byStatus) )				//Get status failed
-    {
-        SaveErrorInfo("Connect device is failed!");
-        LogM("Reset(), Connect device is failed!, nRet=%d", Error_DevConnFailed);
-        return Error_DevConnFailed;						//Device offline
-    }
-    else
-    {	//Device status
-        if ((byStatus[1] & DATA_BIT3) ||
-            (byStatus[1] & DATA_BIT4) ||
-            //(byStatus[1] & DATA_BIT6) ||
-            (byStatus[0] & DATA_BIT5))
-        {
-            SaveErrorInfo("Device has hardware error!");
-            LogM("Reset(), Device has hardware error!, nRet=%d", Error_Hardware);
-            return Error_Hardware;						//Device error
-        }
-        //Media status
-        if (byStatus[1] & DATA_BIT2)
-        {
-            SaveErrorInfo("Paper jammed error!");
-            LogM("Reset(), Paper jammed error!, nRet=%d", Error_DevMedia);
-            return Error_DevMedia;						//Media jammed
-        }
-    }
-    //set read and write timeout
-    //dwResult = DeviceTask.SetTimeOut(BT_COMMAND_WRITE_TIMEOUT,BT_COMMAND_READ_TIMEOUT);
-
-    BYTE byV = 0x00;
-    dwResult = DeviceTask.SendCommand(SETTOPPRTPOS, &byV, 1);
-    if ( dwResult != Error_Succeed )
-    {
-        SaveErrorInfo("Send set line begin position command is failed!");
-        LogM("Reset(), Send set line begin position command is failed!, nRet=%d", Error_DevConnFailed);
-        return Error_DevConnFailed;						//Device connection error
-    }
-    LogM("Reset() 复位模式, 动作成功");
-    return Error_Succeed;
-}
-//
-//	Close device and do the cleaning work.
-//	ex. close connection,close port,release memery and so on
-ErrorCodeEnum ThermalPrint::DevClose()
-{
-    LOG_FUNCTION();
-    LogM("DevClose() Entry.");
-
-    DeviceTask.Close();
-    m_bDevOpen = false;
-    return Error_Succeed;
-}
-//	Get last error the device issued.
-//	Error message must include explanatory memorandum ,the original error
-//	code and anything in favour of location problem.
-ErrorCodeEnum ThermalPrint::GetLastErr(DevErrorInfo &devErrInfo)
-{
-    LOG_FUNCTION();
-    //return Error_NotImpl;
-    devErrInfo.dwErrMsgLen = strlen(m_szErrMsg);
-    memset(devErrInfo.szErrMsg, 0, MAX_DEV_ERROR_MSG_LEN);
-    memcpy(devErrInfo.szErrMsg, m_szErrMsg, MIN(devErrInfo.dwErrMsgLen, MAX_DEV_ERROR_MSG_LEN));
-
-    LogM("GetLastErr() return:\n\
-                        devErrInfo.szErrMsg = %s, \n\
-                        devErrInfo.dwErrMsgLen = %d", devErrInfo.szErrMsg, devErrInfo.dwErrMsgLen);
-
-    return Error_Succeed;
-}
-
-
-// PrinterClass
-//	打开打印机
-ErrorCodeEnum ThermalPrint::DevOpen(BYTE btPort, DWORD dwBaudRate)
-{
-    LOG_FUNCTION();
-    LogM("DevOpen(dwPort = %d, dwBaudRate = %d) Entry.", btPort, dwBaudRate);
-    DWORD dwReturn = Error_Succeed;
-    char cDeviceID[256];
-    sprintf(cDeviceID, "/dev/ttyUSB%d", (int)btPort - 1);
-
-    dwReturn = DeviceTask.Open(cDeviceID, (int)dwBaudRate);
-
-    if ( dwReturn == Error_Succeed )
-    {
-        m_bDevOpen = true;
-        //set read and write timeout
-        //dwReturn = DeviceTask.SetTimeOut(BT_COMMAND_WRITE_TIMEOUT,BT_COMMAND_READ_TIMEOUT);
-
-        BYTE byV = 0x00;
-        dwReturn = DeviceTask.SendCommand(SETTOPPRTPOS, &byV, 1);
-        LogM("DevOpen succeed.");
-        return Error_Succeed;
-    }
-    else if ( dwReturn == LOAD_LIB_ERROR )
-    {
-        SaveErrorInfo("Load driver dll is failed!");
-        LogM("DevOpen Load driver dll is failed!");
-        return Error_DevLoadFileFailed;
-    }
-    else if ( dwReturn == CONNECT_ERROR )
-    {
-        SaveErrorInfo("Connect device is failed!");
-        LogM("DevOpen Connect device is failed!");
-        return Error_DevConnFailed;
-    }
-
-    LogM("DevOpen some unknown error occurred!");
-    SaveErrorInfo("Device open is failed, some unknown error occurred!");
-    return Error_DevNotAvailable;
-}
-
-//	获取打印机实时状态
-ErrorCodeEnum ThermalPrint::GetDevState(ThermalState &devState)
-{
-    LOG_FUNCTION();
-    LogM("GetDevState() Entry.");
-    BYTE byStatus[STATUS_BUF_LEN];
-    memset( byStatus, 0x00, sizeof(byStatus) );
-    memset(&m_stDevErrorInfo, 0, sizeof(DevErrorInfo));
-
-    //CSetupMutex baseMutex(PRINTER_T080PLUS_MUTEX);
-
-    if ( !DeviceTask.GetStatus(byStatus) )				//Get status failed
-    {
-        m_euDevStatus = STATE_OTHER_ERROR;
-        sprintf(m_stDevErrorInfo.szErrMsg, "ErrMsg=%s", "Device is offline or hardware error!");
-        m_stDevErrorInfo.dwErrMsgLen = strlen(m_stDevErrorInfo.szErrMsg);
-        LogE("GetDevStatus GetStatus fail.");
-        return Error_DevConnFailed;
-    }
-    else												//Get status success
-    {
-        m_euDevStatus = STATE_OK;
-        m_euPaperState = PAPER_FULL;
-
-        if ((byStatus[1] & DATA_BIT3) ||
-            (byStatus[1] & DATA_BIT4) ||
-            //(byStatus[1] & DATA_BIT6) ||
-            (byStatus[0] & DATA_BIT5))
-        {
-            m_euDevStatus = STATE_OTHER_ERROR;
-            if (byStatus[0] & DATA_BIT5)
-            {
-                sprintf(m_stDevErrorInfo.szErrMsg, "ErrMsg=%s", "Cover plate is open!");
-                LogM("sprintf_s DATA_BIT5 is called, Cover plate is open!");
-                m_stDevErrorInfo.dwErrMsgLen = strlen(m_stDevErrorInfo.szErrMsg);
-            }
-            if (byStatus[1] & DATA_BIT3)       //Cutter error
-            {
-                sprintf(m_stDevErrorInfo.szErrMsg, "ErrMsg=%s", "Cutter is error!");
-                m_stDevErrorInfo.dwErrMsgLen = strlen(m_stDevErrorInfo.szErrMsg);
-                LogM("sprintf_s DATA_BIT5 is called, Cutter is error!");
-            }
-            if (byStatus[1] & DATA_BIT4)       //Auto Present error(自动上纸错误)
-            {
-                sprintf(m_stDevErrorInfo.szErrMsg, "ErrMsg=%s", "Auto feed error!");
-                m_stDevErrorInfo.dwErrMsgLen = strlen(m_stDevErrorInfo.szErrMsg);
-                LogM("sprintf_s DATA_BIT5 is called, Auto feed error!");
-            }
-            /*if (byStatus[1] & DATA_BIT6)       //有可自动恢复错误
-            {
-                sprintf_s(m_stDevErrorInfo.szErrMsg, "ErrMsg=%s", "Auto recoverable error!");
-                m_stDevErrorInfo.dwErrMsgLen = strlen(m_stDevErrorInfo.szErrMsg);
-                LogM("sprintf_s DATA_BIT6 is called, Auto recoverable error!");
-            }*/
-        }
-        else
-        {
-            m_euDevStatus = STATE_OK;
-            if (byStatus[0] & DATA_BIT0)
-            {
-                m_bDevBusy = TRUE;
-            }
-            else
-            {
-                m_bDevBusy = FALSE;
-            }
-        }
-
-                ////////////////////////////////////////////////////////////////////////////////
-        // 传输->打印机状态2
-        if (byStatus[1] & DATA_BIT2)       //Jammed paper error
-        {
-            //m_euDevStatus = STATE_OTHER_ERROR;
-            m_euPaperState = PAPER_JAMMED;
-        }
-        else
-        {
-            // 传输->打印机状态3
-            if ((byStatus[2] & DATA_BIT2) && (byStatus[2] & DATA_BIT3))      //Paper Out
-            {
-                m_euPaperState = PAPER_EMPTY;
-            }
-            else if ((byStatus[2] & DATA_BIT0) && (byStatus[2] & DATA_BIT1))       //Paper Near End
-            {
-                m_euPaperState = PAPER_LOW;
-            }
-            else
-            {
-                m_euPaperState = PAPER_FULL;
-            }
-        }
-    }
-
-    devState.hardwareState = m_euDevStatus;
-    devState.paperState = m_euPaperState;
-    LogM("GetDevStatus is end.");
-    return Error_Succeed;
-}
-
-//开始打印初始设置:paperWidth一般为80mm和57mm
-ErrorCodeEnum ThermalPrint::BeginPrint(ThermalPaperType eType, int paperWidth)
-{
-    LOG_FUNCTION();
-    LogM("BeginPrint(eType %d, paperWidth %d) is Entry.", eType, paperWidth);
-
-    //全局变理恢复初值
-    gdwCharSpace = 0;
-    gdwCharSize = 1;
-    gDoubleHW = 0;
-    //初始化打印机
-    DWORD dwRet = DeviceTask.SendCommand(INITIALIZ);
-    if (dwRet != Error_Succeed)
-    {
-        SaveErrorInfo("Initialize device failed, check device connection!");
-        LogE("BeginPrint(),Initialize device failed, check device connection!, nRet=%d", Error_Hardware);
-        return Error_Hardware;
-    }
-    dwRet = DeviceTask.SendCommand(SETSTADMODE);
-    BYTE	byCommandBuf[8] = {0};
-    if ( paperWidth >= 0 )
-    {
-        DeviceTask.SetParam( paperWidth );
-        m_paperWidth = paperWidth;
-        if (eType == PAPER_CONTINUOUS)
-        {
-            byCommandBuf[0] = 0;
-            DeviceTask.SendCommand(SETBLACKMARKSUPP, byCommandBuf, 1);
-        }
-        else if (eType == PAPER_LABEL)
-        {
-            byCommandBuf[0] = 1;
-            DeviceTask.SendCommand(SETBLACKMARKSUPP, byCommandBuf, 1);
-        }
-        m_nPaperType = eType;
-    }
-    else
-    {
-        SaveErrorInfo("Paper width is invalid!");
-        LogE("BeginPrint()Paper width is invalid!, nRet=%d", Error_DataCheck);
-        return Error_DataCheck;
-    }
-
-    LogM("BeginPrint(eType %d, paperWidth %d) is Succeed.", eType, paperWidth);
-    return Error_Succeed;
-}
-
-//打印控制指令函数:主要是打印,切纸和控制打印光标指令函数
-//第三个参数是预留参数 暂时无用到
-ErrorCodeEnum ThermalPrint::ControlAction(PrintAction eAction, DWORD dwValue1, DWORD dwValue2)
-{
-    LOG_FUNCTION();
-    DWORD	dwReturn = Error_Succeed;
-    BYTE	byCommandBuf[8];
-
-    memset( byCommandBuf, 0x00, sizeof(byCommandBuf) );
-    LogM("ControlAction( eAction = %d, dwValue1 = %d, dwValue2 = %d.) is Entry.", eAction, dwValue1, dwValue2);
-    if ( eAction == ACTION_PRINT_ONE_LINE )
-    {
-        dwReturn = DeviceTask.SendCommand( FEEDLINEPRINT );
-        if (bPrintTextFlag != FALSE)
-        {
-            bPrintTextFlag = FALSE;
-        }
-    }
-    else if ( eAction == ACTION_PRINT_MOVEFORWRAD_LINES )
-    {
-        byCommandBuf[0] = (BYTE)(dwValue1>255?255:dwValue1);	//MAX 255 line
-        dwReturn = DeviceTask.SendCommand( FEEDMULTPRINT, byCommandBuf, 1 );
-        if (bPrintTextFlag != FALSE)
-        {
-            bPrintTextFlag = FALSE;
-        }
-    }
-    else if ( eAction == ACTION_PRINT_MOVEBACKWRAD_LINES )	//回纸?
-    {
-
-    }
-    else if ( eAction == ACTION_CUT_ALL )	//全切
-    {
-        ThermalState devState;
-        GetDevState(devState);
-        if (devState.paperState == PAPER_EMPTY)
-        {
-            SaveErrorInfo("Device is not media!");
-            LogE("ControlAction ACTION_CUT_ALL fail, Paper emrty, Device is not media!.");
-            return Error_DevMedia;
-        }
-        if (bPrintTextFlag != FALSE)
-        {
-            dwReturn = DeviceTask.SendCommand( FEEDLINEPRINT );
-            bPrintTextFlag = FALSE;
-        }
-        //DeviceTask.bCutPaper();
-        dwReturn = DeviceTask.SendCommand( PAPERDIRCETCUTEX );
-        /*if (m_nPaperType == PAPER_LABEL)
-        {
-            dwReturn = DeviceTask.SendCommand( PAPERFEEDCUT );
-        }
-        else
-        {
-            byCommandBuf[0] = 0x01;
-            DeviceTask.SendCommand(SETBLACKMARKSUPP, byCommandBuf, 1);
-            byCommandBuf[0] = 0x05;
-            dwReturn = DeviceTask.SendCommand( FEEDMULTPRINT, byCommandBuf, 1 );
-            dwReturn = DeviceTask.SendCommand( PAPERDIRCETCUTEX );//全切纸(实际为半切)
-        }*/
-        LogM("SendCommand dwReturn = %d", dwReturn);
-    }
-    else if ( eAction == ACTION_CUT_HALF )	//半切纸
-    {
-        dwReturn = DeviceTask.SendCommand( PAPERDIRCETCUTEX );	//半切纸
-    }
-    else if ( eAction == ACTION_MOVE_TO_POSITION_RELATIVE )
-    {
-        if ((dwValue1 > DeviceTask.m_wPaperWidth) && (DeviceTask.m_wPaperWidth > 0))
-        {
-            SaveErrorInfo("Parameter is over the paper width!");
-            LogE("Parameter is over the paper width!");
-            return Error_Param;
-        }
-        DWORD dwPosV = MMT0INCH(dwValue1);
-        DWORD dwH = dwPosV / 256;
-        switch (dwH)
-        {
-        case 0:
-            {
-                DWORD dwL = dwPosV % 256;
-                byCommandBuf[0] = (BYTE)dwL;
-                byCommandBuf[1] = 0;
-            }
-            break;
-        case 1:
-            {
-                DWORD dwL = dwPosV % 256;
-                byCommandBuf[0] = (BYTE)dwL;
-                byCommandBuf[1] = 1;
-            }
-            break;
-        case 2:
-            {
-                DWORD dwL = dwPosV % 256;
-                byCommandBuf[0] = (BYTE)dwL;
-                byCommandBuf[1] = 2;
-            }
-            break;
-        default:
-            {
-                SaveErrorInfo("Parameter is over valid range!");
-                LogE("Parameter is over valid range!");
-                return Error_Param;
-            }
-            break;
-        }
-
-        dwReturn = DeviceTask.SendCommand( SETHORIRELATEPOS, byCommandBuf, 2);
-    }
-    else if ( eAction == ACTION_MOVE_TO_FORWRAD_LENGTH )
-    {
-        DWORD dwMove = MMT0INCH(dwValue1);
-        if (dwValue1 > 255)
-        {
-            SaveErrorInfo("Parameter is over valid range!");
-            LogE("Parameter is over valid range!");
-            return Error_Param;
-        }
-        byCommandBuf[0] = (BYTE)dwMove;
-        dwReturn = DeviceTask.SendCommand(SETVERIRELATEPOS, byCommandBuf, 1);
-    }
-    else if ( eAction == ACTION_MOVE_TO_BLACKMARK )
-    {
-        dwReturn = DeviceTask.SendCommand( FEEDMARKSTART );
-    }
-    else if ( eAction == ACTION_PRINT_MOVEBACK_TO_LINE )
-    {
-        switch (dwValue1)
-        {
-        case 0:
-            {
-                byCommandBuf[0] = 1;
-                break;
-            }
-        case 1:
-            {
-                byCommandBuf[0] = 0;
-                break;
-            }
-        default:
-            {
-                SaveErrorInfo("Parameter is over valid range!");
-                LogE("Parameter is over valid range!");
-                return Error_Param;
-            }
-        }
-        dwReturn = DeviceTask.SendCommand( SETTOPPRTPOS, byCommandBuf, 1);
-    }
-
-    //Check result
-    if (dwReturn != Error_Succeed)
-    {
-        LogM("ControlAction  Send command failed, make sure device is ok!");
-        SaveErrorInfo("Send command failed, make sure device is ok!");
-        if ( dwReturn == HARDWARE_ERROR )
-        {
-            return Error_Hardware;
-        }
-        else
-        {
-            return Error_DataCheck;
-        }
-    }
-
-    return Error_Succeed;
-}
-
-//打印参数指令函数:
-//第三个参数是预留参数 暂时无用到
-ErrorCodeEnum ThermalPrint::SetParam(CommandType eType, DWORD dwValue1, DWORD dwValue2)
-{
-    LOG_FUNCTION();
-    DWORD	dwReturn = Error_Succeed;
-    BYTE	byCommandBuf[8];
-    LogM("SetParam is called, eType %d, dwValue1 %d, dwValue2 %d.", eType, dwValue1, dwValue2);
-    memset( byCommandBuf, 0x00, sizeof(byCommandBuf) );
-
-    if ( eType == COMMON_ROW_SPACE )
-    {
-        DWORD dwRowSpace = MMT0INCH(dwValue1);
-        if (dwRowSpace > 255)
-        {
-            SaveErrorInfo("Parameter is over valid range!");
-            LogE("Parameter is over valid range!");
-            return Error_Param;
-        }
-        byCommandBuf[0] = (BYTE)dwRowSpace;
-        dwReturn = DeviceTask.SendCommand( SETLINESPACE, byCommandBuf, 1 );
-    }
-    else if ( eType == COMMON_ALIGN )
-    {
-        if ((dwValue1 >= ALIGN_LEFT) && (dwValue1 <= ALIGN_RIGHT))
-        {
-            byCommandBuf[0] = (BYTE)dwValue1;
-            dwReturn = DeviceTask.SendCommand( SETALIGN, byCommandBuf, 1 );
-        }
-        else
-        {
-            SaveErrorInfo("Parameter is over valid range!");
-            LogE("Parameter is over valid range!");
-            return Error_Param;
-        }
-    }
-    else if ( eType == COMMON_REVERSE )
-    {
-        if (dwValue1 > 1)
-        {
-            SaveErrorInfo("Parameter is over valid range!");
-            LogE("Parameter is over valid range!");
-            return Error_Param;
-        }
-        else
-        {
-            byCommandBuf[0] = (BYTE)dwValue1;	//
-            dwReturn = DeviceTask.SendCommand( SETLINEREVERSEPRINT, byCommandBuf, 1 );	//选择或取消倒置打印
-        }
-    }
-    else if ( eType == COMMON_LEFT_MARGIN )
-    {
-        //byCommandBuf[0] = (BYTE)(dwValue1>255?255:dwValue1);	//MAX 255 mm
-        if ((dwValue1 > DeviceTask.m_wPaperWidth) && (DeviceTask.m_wPaperWidth > 0))
-        {
-            SaveErrorInfo("Parameter is over valid range!");
-            LogE("Parameter is over valid range!");
-            return Error_Param;
-        }
-        DWORD dwPosV = MMT0INCH(dwValue1);
-        DWORD dwH = dwPosV / 256;
-        switch (dwH)
-        {
-        case 0:
-            {
-                DWORD dwL = dwPosV % 256;
-                byCommandBuf[0] = (BYTE)dwL;
-                byCommandBuf[1] = 0;
-            }
-            break;
-        case 1:
-            {
-                DWORD dwL = dwPosV % 256;
-                byCommandBuf[0] = (BYTE)dwL;
-                byCommandBuf[1] = 1;
-            }
-            break;
-        case 2:
-            {
-                DWORD dwL = dwPosV % 256;
-                byCommandBuf[0] = (BYTE)dwL;
-                byCommandBuf[1] = 2;
-            }
-            break;
-        default:
-            {
-                SaveErrorInfo("Parameter is over valid range!");
-                return Error_Param;
-            }
-            break;
-        }
-        dwReturn = DeviceTask.SendCommand( SETLEFTMARGIN, byCommandBuf, 2 );	//超过paper宽度同样不执行
-    }
-    else if ( eType == COMMON_PRINTABLE_AREA )
-    {
-        //byCommandBuf[0] = (BYTE)(dwValue1>255?255:dwValue1);
-        if ((dwValue1 > DeviceTask.m_wPaperWidth) && (DeviceTask.m_wPaperWidth > 0))
-        {
-            SaveErrorInfo("Parameter is over valid range!");
-            LogE("Parameter is over valid range!");
-            return Error_Param;
-        }
-        if (dwValue1 > (DeviceTask.m_wPaperWidth - 5))	//修正误差
-        {
-            dwValue1 = DeviceTask.m_wPaperWidth - 3;
-        }
-
-        DWORD dwPosV = MMT0INCH(dwValue1);
-        DWORD dwH = dwPosV / 256;
-        switch (dwH)
-        {
-        case 0:
-            {
-                DWORD dwL = dwPosV % 256;
-                byCommandBuf[0] = (BYTE)dwL;
-                byCommandBuf[1] = 0;
-            }
-            break;
-        case 1:
-            {
-                DWORD dwL = dwPosV % 256;
-                byCommandBuf[0] = (BYTE)dwL;
-                byCommandBuf[1] = 1;
-            }
-            break;
-        case 2:
-            {
-                DWORD dwL = dwPosV % 256;
-                byCommandBuf[0] = (BYTE)dwL;
-                byCommandBuf[1] = 2;
-            }
-            break;
-        default:
-            {
-                SaveErrorInfo("Parameter is over valid range!");
-                LogE("Parameter is over valid range!");
-                return Error_Param;
-            }
-            break;
-        }
-        dwReturn = DeviceTask.SendCommand(SETLINEPRINTAREA, byCommandBuf, 2);
-    }
-
-    //出错返回
-    if (dwReturn != Error_Succeed)
-    {
-        SaveErrorInfo("Send command failed, make sure device is ok!");
-        LogE("Send command failed, make sure device is ok!");
-        return Error_Hardware;
-    }
-
-    return Error_Succeed;
-}
-
-//打印字体指令函数:主要是字体相关饿指令函数
-//第三个参数是预留参数 设置FONT_CUSTOM_SIZE用到,dwValue1表示宽,dwValue2表示长
-//					设置FONT_LEFT_RIGHT_SPACE用到 dwValue1表示左边距 dwValue2表示右边距
-ErrorCodeEnum ThermalPrint::SetFont(FontStyle eType, DWORD dwValue1, DWORD dwValue2)
-{
-// 	SaveErrorInfo("未完成SetFont()开发");
-// 	return Error_NotImpl;
-    DWORD	dwReturn = Error_Succeed;
-    BYTE	byCommandBuf[8] = {0};
-    byCommandBuf[0] = 0x00;
-    BYTE byCHNMod = 0x00;
-    LogM("SetFont is called, eType %d, dwValue1 %d, dwValue2 %d.", eType, dwValue1, dwValue2);
-    if (eType == FONT_UNDERLINE)
-    {
-        if (dwValue1 > 1)	//just 0 or 1
-        {
-            SaveErrorInfo("Parameter is over valid range!");
-            LogE("Parameter is over valid range!");
-            return Error_Param;
-        }
-        if (dwValue1 == 1)
-        {
-            dwValue1 = 2; //加深下划线
-        }
-
-        byCommandBuf[0] = (BYTE)dwValue1;
-        dwReturn = DeviceTask.SendCommand(SETFONTUNDERLINE, byCommandBuf, 1);
-
-    }
-    else if (eType == FONT_BOLD)
-    {
-        if (dwValue1 > 1)	//just 0 or 1
-        {
-            SaveErrorInfo("Parameter is over valid range!");
-            LogE("Parameter is over valid range!");
-            return Error_Param;
-        }
-        byCommandBuf[0] = (BYTE)dwValue1;
-        dwReturn = DeviceTask.SendCommand(SETFONTBOLD, byCommandBuf, 1);
-
-    }
-    else if (eType == FONT_DOUBLEHEIGHT)
-    {
-        switch (dwValue1)
-        {
-        case 0:
-            {
-                gDoubleHW &= 0x10;
-            }
-            break;
-        case 1:
-            {
-                gDoubleHW |= 0x01;
-            }
-            break;
-        default:
-            {
-                SaveErrorInfo("Parameter is over valid range!");
-                LogE("Parameter is over valid range!");
-                return Error_Param;
-            }
-        }
-        byCommandBuf[0] = gDoubleHW;
-        dwReturn = DeviceTask.SendCommand(SETCHARSIZE, byCommandBuf, 1);
-
-    }
-    else if (eType == FONT_DOUBLEWIDE)
-    {
-        switch (dwValue1)
-        {
-        case 0:
-            {
-                gDoubleHW &= 0x01;
-            }
-            break;
-        case 1:
-            {
-                gDoubleHW |= 0x10;
-            }
-            break;
-        default:
-            {
-                SaveErrorInfo("Parameter is over valid range!");
-                LogE("Parameter is over valid range!");
-                return Error_Param;
-            }
-        }
-        byCommandBuf[0] = gDoubleHW;
-        dwReturn = DeviceTask.SendCommand(SETCHARSIZE, byCommandBuf, 1);
-        if (dwValue1 == 1)
-        {
-            if (gdwCharSpace > 0)
-            {
-                DWORD dwCharSpace = MMT0INCH2(gdwCharSpace,2);
-                byCommandBuf[0] = (BYTE)dwCharSpace;
-                dwReturn = DeviceTask.SendCommand(SETCHARSPACE, byCommandBuf, 1);
-            }
-        }
-        else
-        {
-            if (gdwCharSpace > 0)
-            {
-                DWORD dwCharSpace = MMT0INCH(gdwCharSpace);
-                byCommandBuf[0] = (BYTE)dwCharSpace;
-                dwReturn = DeviceTask.SendCommand(SETCHARSPACE, byCommandBuf, 1);
-            }
-        }
-    }
-    else if (eType == FONT_INVERSE)
-    {
-        if (dwValue1 > 1)	//just 0 or 1
-        {
-            SaveErrorInfo("Parameter is over valid range!");
-            LogE("Parameter is over valid range!");
-            return Error_Param;
-        }
-        byCommandBuf[0] = (BYTE)dwValue1;
-        dwReturn = DeviceTask.SendCommand(SETFONTINVERSE, byCommandBuf, 1);
-
-    }
-    else if (eType == FONT_ROTATE)
-    {
-        switch (dwValue1)
-        {
-        case 270:
-            {
-                byCommandBuf[0] = 3;
-            }
-            break;
-        case 90:
-            {
-                byCommandBuf[0] = 1;
-            }
-            break;
-        case 0:
-        default:
-            {
-                byCommandBuf[0] = 0;
-            }
-            break;
-        }
-        dwReturn = DeviceTask.SendCommand(SETFONTROTATE, byCommandBuf, 1);
-    }
-    else if (eType == FONT_CUSTOM_SIZE)
-    {
-        if ((dwValue1 > 6) || (dwValue1 < 1) || (dwValue2 > 6) || (dwValue2 < 1))
-        {
-            SaveErrorInfo("Parameter is over valid range!");
-            LogE("Parameter is over valid range!");
-            return Error_Param;
-        }
-        byCommandBuf[0] = 0;
-        switch (dwValue1)
-        {
-        case 1:
-            byCommandBuf[0] |= 0x00;
-            break;
-        case 2:
-            byCommandBuf[0] |= 0x10;
-            break;
-        case 3:
-            byCommandBuf[0] |= 0x20;
-            break;
-        case 4:
-            byCommandBuf[0] |= 0x30;
-            break;
-        case 5:
-            byCommandBuf[0] |= 0x40;
-            break;
-        case 6:
-        default:
-            {
-                byCommandBuf[0] |= 0x50;
-            }
-            break;
-        }
-        switch (dwValue2)
-        {
-        case 1:
-            byCommandBuf[0] |= 0x00;
-            break;
-        case 2:
-            byCommandBuf[0] |= 0x01;
-            break;
-        case 3:
-            byCommandBuf[0] |= 0x02;
-            break;
-        case 4:
-            byCommandBuf[0] |= 0x03;
-            break;
-        case 5:
-            byCommandBuf[0] |= 0x04;
-            break;
-        case 6:
-        default:
-            {
-                byCommandBuf[0] |= 0x05;
-            }
-            break;
-        }
-
-        dwReturn = DeviceTask.SendCommand(SETCHARSIZE, byCommandBuf, 1);
-        if (dwValue1 > 1)
-        {
-            if (dwValue1 > 6)
-            {
-                dwValue1 = 6;
-            }
-
-            if (gdwCharSpace > 0)
-            {
-                DWORD dwCharSpace = MMT0INCH2(gdwCharSpace,dwValue1);
-                byCommandBuf[0] = (BYTE)dwCharSpace;
-                dwReturn = DeviceTask.SendCommand(SETCHARSPACE, byCommandBuf, 1);
-            }
-        }
-        else
-        {
-            if (gdwCharSpace > 0)
-            {
-                DWORD dwCharSpace = MMT0INCH(gdwCharSpace);
-                byCommandBuf[0] = (BYTE)dwCharSpace;
-                dwReturn = DeviceTask.SendCommand(SETCHARSPACE, byCommandBuf, 1);
-            }
-        }
-        gdwCharSize = dwValue1;
-    }
-    else if (eType == FONT_LEFT_RIGHT_SPACE)
-    {
-        if ((dwValue1 > 36) || (dwValue2 > 36))
-        {
-            SaveErrorInfo("Parameter is over valid range!");
-            LogE("Parameter is over valid range!");
-            return Error_Param;
-        }
-        else
-        {
-            gdwCharSpace = dwValue2;
-            DWORD dwCharSpace = MMT0INCH(dwValue2);
-            if (gdwCharSize > 1)
-            {
-                dwCharSpace = MMT0INCH2(dwValue2,gdwCharSize);
-            }
-            if (dwCharSpace > 255)
-            {
-                dwCharSpace = 255;
-            }
-            byCommandBuf[0] = (BYTE)dwCharSpace;
-            dwReturn = DeviceTask.SendCommand(SETCHARSPACE, byCommandBuf, 1);		//字符右边距
-            dwReturn = DeviceTask.SendCommand(SETFONTLRSPACE, byCommandBuf, 1);		//汉字右边距
-        }
-    }
-    if (dwReturn != Error_Succeed)
-    {
-        SaveErrorInfo("Send command failed, make sure device is ok!");
-        LogE("Send command failed, make sure device is ok!");
-        return Error_Hardware;
-    }
-
-    return Error_Succeed;
-}
-
-//打印文本数据函数
-ErrorCodeEnum ThermalPrint::PrintText(BYTE *pData, DWORD dwDataLen)
-{
-    if ((pData == NULL) || (dwDataLen == 0))
-    {
-        SaveErrorInfo("Parameter is invalid!");
-        LogE("Parameter is invalid!");
-        return Error_Param;
-    }
-
-    CHAR* inputData = new CHAR[dwDataLen+1];
-    memset(inputData, 0x00, dwDataLen+1);
-    memcpy(inputData, pData, dwDataLen);
-    LOG_FUNCTION();
-    LogM("PrintText(pData %s, dwDataLen %d) is called.", pData, dwDataLen);
-
-    char byDate[100] = {0};
-    CDataConvert::StringUTF8toASCII(inputData, byDate, sizeof(byDate));
-    if (strlen(byDate) == 0)
-    {
-        LogE("StringUTF8toASCII fail! strlen(byDate) == 0");
-        return Error_Param;
-    }
-    LogXM(byDate, strlen(byDate), "StringUTF8toASCII result OK");
-
-    DWORD dwRet = DeviceTask.SendData((LPBYTE)byDate, (WORD)strlen(byDate));	//发送打印内容
-    if (dwRet != Error_Succeed)
-    {
-        LogXE(byDate, (WORD)strlen(byDate), "Send");
-        SaveErrorInfo("Send command failed, make sure device is ok!");
-        LogE("Send command failed, make sure device is ok!");
-        return Error_Hardware;
-    }
-    LogM("ThermalPrint::PrintText(%s, %d)", pData, dwDataLen);
-    LogXM(byDate, strlen(byDate), "Send");
-    bPrintTextFlag = TRUE;
-    if (inputData != NULL)
-    {
-        delete[] inputData;
-        inputData = NULL;
-    }
-    return Error_Succeed;
-}
-
-//打印条形码函数
-//dwUnitWidth 条形码基本模块宽度 取值{2..6} 默认2
-//dwHeight 条形码高度 单位mm
-//iHRIPosition hri字符打印位置 见枚举类型HriPosition
-ErrorCodeEnum ThermalPrint::PrintBarCode(BarCodeType eType, BYTE *pData, DWORD dwDataLen, DWORD dwUnitWidth, DWORD dwHeight, HriPosition eHRIPosition)
-{
-    CHAR* inputData = new CHAR[dwDataLen+1];
-    memset(inputData, 0x00, dwDataLen+1);
-    memcpy(inputData, pData, dwDataLen);
-    LOG_FUNCTION();
-    LogM("PrintBarCode is called, eType %d, pData %s, dwDataLen %d, dwUnitWidth %d, dwHeight %d.", eType, pData, dwDataLen, dwUnitWidth, dwHeight);
-    if (inputData != NULL)
-    {
-        delete[] inputData;
-        inputData = NULL;
-    }
-    if ((pData == NULL) || (dwDataLen == 0))
-    {
-        SaveErrorInfo("Parameter is invalid!");
-        LogM("Parameter is invalid!");
-        return Error_Param;
-    }
-    if ((dwUnitWidth < 2) || (dwUnitWidth > 6))
-    {
-        dwUnitWidth = 2;	//default is 2
-    }
-
-    //设置条码类型
-    BYTE byBCType = 0x41;
-    switch (eType)
-    {
-    case CONTENT_BARCODE_UPC_E:
-        {
-            byBCType = 0x42;
-            if ((dwDataLen < 11) || (dwDataLen > 12))
-            {
-                SaveErrorInfo("Parameter data length is over valid range!");
-                LogE("Parameter data length is over valid range!");
-                return Error_Param;
-            }
-        }
-        break;
-    case CONTENT_BARCODE_EAN8:
-        {
-            byBCType = 0x44;
-            if ((dwDataLen < 7) || (dwDataLen > 8))
-            {
-                SaveErrorInfo("Parameter data length is over valid range!");
-                LogE("Parameter data length is over valid range!");
-                return Error_Param;
-            }
-        }
-        break;
-    case CONTENT_BARCODE_EAN13:
-        {
-            if ((dwDataLen < 12) || (dwDataLen > 13))
-            {
-                SaveErrorInfo("Parameter data length is over valid range!");
-                LogE("Parameter data length is over valid range!");
-                return Error_Param;
-            }
-            byBCType = 0x43;
-        }
-        break;
-    case CONTENT_BARCODE_39:
-        {
-            byBCType = 0x45;
-            if ((dwDataLen < 1) || (dwDataLen > 255))
-            {
-                SaveErrorInfo("Parameter data length is over valid range!");
-                LogE("Parameter data length is over valid range!");
-                return Error_Param;
-            }
-        }
-        break;
-    case CONTENT_BARCODE_128:
-        {
-            byBCType = 0x49;
-            if ((dwDataLen < 2) || (dwDataLen > 255))
-            {
-                SaveErrorInfo("Parameter data length is over valid range!");
-                LogE("Parameter data length is over valid range!");
-                return Error_Param;
-            }
-        }
-        break;
-    case CONTENT_BARCODE_UPC_A:
-    default:
-        {
-            if ((dwDataLen < 11) || (dwDataLen > 12))
-            {
-                SaveErrorInfo("Parameter data length is over valid range!");
-                LogE("Parameter data length is over valid range!");
-                return Error_Param;
-            }
-        }
-        break;
-    }
-
-    DWORD dwReturn = Error_Succeed;
-
-    //设置HRI打印位置
-    BYTE byHRIPos = 0;
-    switch (eHRIPosition)
-    {
-    case HRI_POSITION_ABOVE:
-        byHRIPos = 1;
-        break;
-    case HRI_POSITION_BELOW:
-        byHRIPos = 2;
-        break;
-    case HRI_POSITION_BOTH:
-        byHRIPos = 3;
-        break;
-    case HRI_POSITION_NONE:
-    default:
-        break;
-    }
-    dwReturn = DeviceTask.SendCommand(SETHRIPRINTPOS, &byHRIPos, 1);
-    if (dwReturn != Error_Succeed)
-    {
-        SaveErrorInfo("Send command HRI position failed, check device connection!");
-        LogE("Send command HRI position failed, check device connection!");
-        return Error_Hardware;
-    }
-    //设置条码高度,DPI为203,mm 转化为inch
-    //WORD  wHeight = (WORD)(dwHeight * 203 / 25.4);
-    WORD  wHeight = (WORD)MMT0INCH(dwHeight);
-    BYTE byHeight = wHeight>255?255:wHeight;
-    dwReturn = DeviceTask.SendCommand(SETBARCODEHEIGHT, &byHeight, 1);
-    if (dwReturn != Error_Succeed)
-    {
-        SaveErrorInfo("Send command Barcode height failed, check device connection!");
-        LogE("Send command Barcode height failed, check device connection!");
-        return Error_Hardware;
-    }
-
-    //设置条码基本宽度
-    BYTE byWidth = (BYTE)dwUnitWidth;
-    dwReturn = DeviceTask.SendCommand(SETBARCODEWIDTH, &byWidth, 1);
-    if (dwReturn != Error_Succeed)
-    {
-        SaveErrorInfo("Send command Barcode width failed, check device connection!");
-        LogE("Send command Barcode height failed, check device connection!");
-        return Error_Hardware;
-    }
-
-    //打印条码
-    BYTE *pbPrint = NULL;
-    pbPrint = new BYTE[dwDataLen + 3];//
-    memset(pbPrint, 0, dwDataLen + 3);
-    pbPrint[0] = byBCType;
-    pbPrint[1] = (BYTE)dwDataLen;
-    memcpy(&pbPrint[2], pData, dwDataLen);
-    dwReturn = DeviceTask.SendCommand(SETBARCODEPRINT, pbPrint, (WORD)(dwDataLen + 2));
-    if (pbPrint != NULL)
-    {
-        delete [] pbPrint;
-        pbPrint = NULL;
-    }
-    if (dwReturn != Error_Succeed)
-    {
-        SaveErrorInfo("Send command Barcode print failed, check device connection!");
-        LogE("Send command Barcode height failed, check device connection!");
-        return Error_Hardware;
-    }
-
-    return Error_Succeed;
-}
-
-//打印二维码QRCode函数
-//dwUnitWidth 二维码基本元素宽度 取值{1..255} 默认3
-ErrorCodeEnum ThermalPrint::PrintQRCode(BYTE *pData, DWORD dwDataLen, DWORD dwUnitWidth)
-{
-    CHAR* inputData = new CHAR[dwDataLen+1];
-    memset(inputData, 0x00, dwDataLen+1);
-    memcpy(inputData, pData, dwDataLen);
-    LOG_FUNCTION();
-    LogM("PrintText is called, pData %s, dwDataLen %d.", inputData, dwDataLen);
-    if (inputData != NULL)
-    {
-        delete[] inputData;
-        inputData = NULL;
-    }
-    if ((pData == NULL) || (dwDataLen == 0))
-    {
-        SaveErrorInfo("Parameter is invalid!");
-        LogE("Parameter is invalid!");
-        return Error_Param;
-    }
-    if ((dwUnitWidth > 255) || (dwUnitWidth == 0))
-    {
-        dwUnitWidth = 3; //default is 3
-    }
-    BYTE byVal = dwUnitWidth;
-    DWORD dwRet = DeviceTask.SendCommand(SETQRCODEPARAM, &byVal, 1);
-    if (dwRet != Error_Succeed)
-    {
-        SaveErrorInfo("Send QR code para failed,check device connection!");
-        LogE("Send QR code para failed,check device connection!");
-        return Error_Hardware;
-    }
-    //////////////////////////////////////////////////////////////////////////
-    //打印条码
-    BYTE *pbPrint = NULL;
-    pbPrint = new BYTE[dwDataLen + 6];//
-    memset(pbPrint, 0, dwDataLen + 6);
-    pbPrint[0] = 0x4C;					//type : QRCode
-    pbPrint[1] = (BYTE)(dwDataLen + 5);	//len
-    pbPrint[2] = 0x4C;					//纠错等级
-    pbPrint[3] = 0x4D;					//掩模图形参考
-    pbPrint[4] = 0x41;					//数据输入模式:自动(0x41)
-    memcpy(&pbPrint[5], pData, dwDataLen);
-    dwRet = DeviceTask.SendCommand(SETBARCODEPRINT, pbPrint, (WORD)(dwDataLen + 5));
-    if (pbPrint != NULL)
-    {
-        delete [] pbPrint;
-        pbPrint = NULL;
-    }
-    if (dwRet != Error_Succeed)
-    {
-        SaveErrorInfo("Send QR code print failed,check device connection!");
-        LogE("Send QR code para failed,check device connection!");
-        return Error_Hardware;
-    }
-    if (!WaitUntialActFinish())	//用于等待动作完成
-    {
-        SaveErrorInfo("Waiting Print action finish, some unknown error occurred!");
-        LogE("Waiting Print action finish, some unknown error occurred!");
-        return Error_Hardware;
-    }
-    return Error_Succeed;
-}
-
-//打印二维码QRCode函数
-//dwWidth 二维码长度 ,单位mm
-ErrorCodeEnum ThermalPrint::PrintQRCodeByArea(BYTE *pData, DWORD dwDataLen, DWORD dwUnitWidth, DWORD dwWidth)
-{
-    LOG_FUNCTION();
-    SaveErrorInfo("未完成PrintQRCodeByArea()开发");
-    LogM("未完成PrintQRCodeByArea()开发");
-    return Error_NotImpl;
-}
-
-//打印二维码PDF417函数
-//errorLevel pdf417纠错级别 取值{0..8}
-//dwUnitWidth  基本元素宽度 取值{3..90}
-//dwUnitHeight 基本元素长度 取值{1..30}
-//row  pdf417 行数 取值{1..7}
-//lines pdf417 列数 取值{2..25}
-ErrorCodeEnum ThermalPrint::PrintPDF417code(BYTE *pData, DWORD dwDataLen, int errorLevel, DWORD dwUnitWidth, DWORD dwUnitHeight, int rows, int lines)
-{
-
-    CHAR* inputData = new CHAR[dwDataLen+1];
-    memset(inputData, 0x00, dwDataLen+1);
-    memcpy(inputData, pData, dwDataLen);
-    LOG_FUNCTION();
-    LogM("PrintPDF417code is called, pData %s, dwDataLen %d.", inputData, dwDataLen);
-    if (inputData != NULL)
-    {
-        delete[] inputData;
-        inputData = NULL;
-    }
-    if ((pData == NULL) || (dwDataLen == 0))
-    {
-        SaveErrorInfo("Parameter is invalid!");
-        LogE("Parameter is invalid!");
-        return Error_Param;
-    }
-
-    if ((dwDataLen < 1) || (dwDataLen > 255))
-    {
-        SaveErrorInfo("Parameter data length is over range!");
-        LogE("Parameter data length is over range!");
-        return Error_Param;
-    }
-
-    if ((errorLevel < 0) || (errorLevel > 8))
-    {
-        SaveErrorInfo("Parameter error level is over range!");
-        LogE("Parameter data length is over range!");
-        return Error_Param;
-    }
-
-    if ((rows < 3) || (rows > 90))
-    {
-        SaveErrorInfo("Parameter rows is over range!");
-        LogE("Parameter data length is over range!");
-        return Error_Param;
-    }
-
-    if ((lines < 1) || (lines > 30))
-    {
-        SaveErrorInfo("Parameter lines is over range!");
-        LogE("Parameter data length is over range!");
-        return Error_Param;
-    }
-
-    if ((dwUnitWidth < 1) || (dwUnitWidth > 7))
-    {
-        SaveErrorInfo("Parameter unit width is over range!");
-        LogE("Parameter data length is over range!");
-        return Error_Param;
-    }
-
-    if ((dwUnitHeight < 2) || (dwUnitHeight > 25))
-    {
-        SaveErrorInfo("Parameter unit height is over range!");
-        LogE("Parameter data length is over range!");
-        return Error_Param;
-    }
-
-    DWORD dwReturn = Error_Succeed;
-
-    BYTE byErrLevel = 0;
-    byErrLevel = errorLevel;
-    dwReturn = DeviceTask.SendCommand(SETPDF417ERRORLEVEL, &byErrLevel, 1);
-    if (dwReturn != Error_Succeed)
-    {
-        SaveErrorInfo("Send command set error level failed,check device connection!");
-        LogE("Send command set error level failed,check device connection!");
-        return Error_Hardware;
-    }
-
-    BYTE bySetInfo[8] = {0};
-    bySetInfo[0] = 0;
-    bySetInfo[1] = 0;
-    bySetInfo[2] = rows;
-    bySetInfo[3] = lines;
-    bySetInfo[4] = (BYTE)dwUnitWidth;
-    bySetInfo[5] = (BYTE)dwUnitHeight;
-    dwReturn = DeviceTask.SendCommand(SETPDF417INFO, bySetInfo, 6);
-    if (dwReturn != Error_Succeed)
-    {
-        SaveErrorInfo("Send command set PDF417 info failed,check device connection!");
-        LogE("Send command set error level failed,check device connection!");
-        return Error_Hardware;
-    }
-    //打印条码
-    BYTE *pPrint = NULL;
-    pPrint = new BYTE[dwDataLen + 3];
-    memset(pPrint, 0, dwDataLen + 3);
-    pPrint[0] = 0x4B; //PDF417
-    pPrint[1] = (BYTE)dwDataLen;
-    memcpy(&pPrint[2], pData, dwDataLen);
-    dwReturn = DeviceTask.SendCommand(SETBARCODEPRINT, pPrint, (WORD)dwDataLen + 2);
-    if (pPrint != NULL)
-    {
-        delete [] pPrint;
-        pPrint = NULL;
-    }
-    if (dwReturn != Error_Succeed)
-    {
-        SaveErrorInfo("Send command PDF417 print failed,check device connection!");
-        LogE("Send command set error level failed,check device connection!");
-        return Error_Hardware;
-    }
-    if (!WaitUntialActFinish())	//用于等待动作完成
-    {
-        SaveErrorInfo("Waiting Print action finish failed,some unknown error occurred!");
-        LogE("Send command set error level failed,check device connection!");
-        return Error_Hardware;
-    }
-    return Error_Succeed;
-}
-
-//打印二维码PDF417函数
-//errorLevel pdf417纠错级别 取值{0..8}
-//dwWidth  pdf417宽度 单位mm
-//dwHeight pdf417长度 单位mm
-ErrorCodeEnum ThermalPrint::PrintPDF417codeByArea(BYTE *pData,DWORD dwDataLen,int errorLevel,DWORD dwWidth,DWORD dwHeight)
-{
-    LOG_FUNCTION();
-    SaveErrorInfo("未完成PrintPDF417codeByArea()开发");
-    LogE("未完成PrintPDF417codeByArea()开发");
-    return Error_NotImpl;
-// 	if ((pData == NULL) || (dwDataLen == 0))
-// 	{
-// 		return Error_Param;
-// 	}
-//
-// 	if ((dwDataLen < 1) || (dwDataLen > 255))
-// 	{
-// 		return Error_Param;
-// 	}
-//
-// 	if ((errorLevel < 0) || (errorLevel > 8))
-// 	{
-// 		return Error_Param;
-// 	}
-//
-// 	WORD wReturn = Error_Succeed;
-// 	BYTE byErrLevel = 0;
-// 	byErrLevel = errorLevel;
-// 	wReturn = DeviceTask.SendCommand(SETPDF417ERRORLEVeL, &byErrLevel, 1);
-// 	if (wReturn != Error_Succeed)
-// 	{
-// 		return Error_Hardware;
-// 	}
-// 	//设置PDF417的尺寸
-// 	// 	BYTE bySetInfo[8] = {0};
-// 	// 	bySetInfo[0] = 0;
-// 	// 	bySetInfo[1] = 0;
-// 	// 	bySetInfo[2] = 0;
-// 	// 	bySetInfo[3] = 0;
-// 	// 	bySetInfo[4] = 0;
-// 	// 	bySetInfo[5] = 0;
-// 	// 	wReturn = DeviceTask.SendCommand(SETPDF417INFO, bySetInfo, 6);
-// 	// 	if (wReturn != Error_Succeed)
-// 	// 	{
-// 	// 		return Error_Hardware;
-// 	// 	}
-//
-// 	//打印条码
-// 	BYTE *pPrint = NULL;
-// 	pPrint = new BYTE[dwDataLen + 3];
-// 	memset(pPrint, 0, dwDataLen + 3);
-// 	pPrint[0] = 0x4B; //PDF417
-// 	pPrint[1] = dwDataLen;
-// 	memcpy(&pPrint[2], pData, dwDataLen);
-// 	wReturn = DeviceTask.SendCommand(SETBARCODEPRINT, pPrint, dwDataLen + 2);
-// 	if (pPrint != NULL)
-// 	{
-// 		delete [] pPrint;
-// 		pPrint = NULL;
-// 	}
-// 	if (wReturn != Error_Succeed)
-// 	{
-// 		return Error_Hardware;
-// 	}
-// 	return Error_NotImpl;
-}
-
-
-//ErrorCodeEnum ThermalPrint::PrintImage(BYTE *pData, DWORD dwDataLen)
-//{
-//    SaveErrorInfo("未完成PrintImage()开发");
-//    return Error_NotImpl;
-//}
-//打印图像函数:pData是base64编码的数据
-ErrorCodeEnum ThermalPrint::PrintImage(BYTE *pData, DWORD dwDataLen)
-{
-    LOG_FUNCTION();
-    LogM("PrintImage(pData, dwDataLen= %d) Entry.", dwDataLen);
-    LogXM(pData, dwDataLen, "Input pData")
-
-    if ((pData == NULL) || (dwDataLen == 0))
-    {
-        SaveErrorInfo("Parameter is invalid!");
-        LogE("PrintImage(), Parameter is invalid!, nRet=%d", Error_Param);
-        return Error_Param;
-    }
-    ThermalState devState;
-    GetDevState(devState);
-    if (devState.paperState == PAPER_EMPTY)
-    {
-        SaveErrorInfo("Device is not media!");
-        LogE("PrintImage(), Device is not media!, nRet=%d", Error_DevMedia);
-        return Error_DevMedia;
-    }
-    if (bPrintTextFlag != FALSE)
-    {
-        DeviceTask.SendCommand( FEEDLINEPRINT );
-        bPrintTextFlag = FALSE;
-    }
-
-    LPBYTE pImageFileHead = pData;
-    CImageProcessing imagepro;
-    //Base64解码
-    QByteArray Base64Aarray((char*)pData);
-    QByteArray fromBase64Array = QByteArray::fromBase64(Base64Aarray);
-    LogXM(fromBase64Array.data(), fromBase64Array.size(), "fromBase64Array pData");
-    //	fromBase64Array数据格式为:BITMAPFILEHEADER + BITMAPINFOHEADER + 图像实际数据, 相当于BMP文件的16进制内容
-    //		BITMAPFILEHEADER fileHeader;
-    // 		BITMAPINFOHEADER infoHeader;
-
-    QByteArray strImage;
-    if (fromBase64Array.size() > 0)
-    {
-        strImage = fromBase64Array.right(fromBase64Array.size() - sizeof(BITMAPFILEHEADER));
-        //转换位图,以下载到设备RAM中(BITMAPINFOHEADER + 图像实际数据)
-        DWORD dwLen = imagepro.LoadBmpImage((LPVOID)strImage.data());
-
-        ULONG ulDataSize = 0;
-        LPBYTE lpbyPrintImg = NULL;
-        LPBYTE lpbyImgData = NULL;
-        ulDataSize = imagepro.ConvertToBinaryData(lpbyImgData, ulDataSize, FALSE, FALSE);
-        if ((ulDataSize == 0) )
-        {
-            SaveErrorInfo("Get image size failed!");
-            imagepro.Destroy();
-            LogE("PrintImage(), Get image size failed!");
-            return Error_Param;
-        }
-        lpbyImgData = new BYTE[ulDataSize];
-        if (lpbyImgData == NULL)
-        {
-            SaveErrorInfo("Create image save buffer failed!");
-            LogE("PrintImage(), Create image save buffer failed!");
-            imagepro.Destroy();
-            return Error_Null;
-        }
-        else
-        {
-            memset(lpbyImgData, 0x00, ulDataSize);
-            ulDataSize = imagepro.ConvertToBinaryData(lpbyImgData, ulDataSize, FALSE, FALSE);
-            if (ulDataSize == 0)
-            {
-                delete [] lpbyImgData;
-                imagepro.Destroy();
-                SaveErrorInfo("Get image data for device failed!");
-                LogE("PrintImage(), Get image data for device failed!");
-                return Error_Null;
-            }
-
-            DWORD dwColTmp = 0;
-            DWORD dwRowTmp = 0;
-            imagepro.GetPixelCount(&dwColTmp, &dwRowTmp);
-            int lineCnt = ulDataSize / dwRowTmp;
-
-            lpbyPrintImg = new BYTE[ulDataSize + 5];
-
-            memset(lpbyPrintImg, 0, ulDataSize + 5);
-            lpbyPrintImg[0] = (BYTE)(lineCnt % 256);
-            lpbyPrintImg[1] = (BYTE)(lineCnt / 256);;
-            lpbyPrintImg[2] = (BYTE)(dwRowTmp % 256);
-            lpbyPrintImg[3] = (BYTE)(dwRowTmp / 256);
-
-            memcpy(&lpbyPrintImg[4], lpbyImgData, ulDataSize);
-            delete [] lpbyImgData;
-        }
-        DWORD dwRet = Error_Succeed;
-        //光栅方式打印位图
-        dwRet = DeviceTask.SendCommand(SETRASTERBMPPRINT, lpbyPrintImg, ulDataSize + 4);
-        /*if (g_ImageFile == NULL)
-        {
-            g_ImageFile = new BYTE[ulDataSize+5];
-            memset(g_ImageFile, 0x00, ulDataSize+5);
-            g_size = ulDataSize+4;
-            memcpy(g_ImageFile, lpbyPrintImg, ulDataSize+5);
-        }*/
-        if (lpbyPrintImg != NULL)
-        {
-            delete[] lpbyPrintImg;
-            lpbyPrintImg = NULL;
-        }
-        /*if (!WaitUntialActFinish())	//用于等待动作完成
-        {
-            SaveErrorInfo("Waiting Print action finish failed,some unknown error occurred!");
-            imagepro.Destroy();
-            return Error_Hardware;
-        }*/
-    }
-    else
-    {
-        SaveErrorInfo("Decode base64 failed!");
-        imagepro.Destroy();
-        LogE("Decode base64 failed!");
-        return Error_NotImpl;
-    }
-    return Error_Succeed;
-}
-
-//获取打印失败后错误信息和错误状态
-ErrorCodeEnum ThermalPrint::GetLastErrState(ThermalState &devState, DevErrorInfo &devErrInfo)
-{
-    LOG_FUNCTION();
-    LogM("GetLastErrState is called.");
-    memset(&devErrInfo, 0, sizeof(DevErrorInfo));
-    if (GetDevState(devState) == Error_Succeed)
-    {
-        memcpy(&devErrInfo, &m_stDevErrorInfo, sizeof(devErrInfo));
-    }
-    else
-    {
-        devState.hardwareState = m_euDevStatus;
-        devState.paperState = m_euPaperState;
-        memcpy(&devErrInfo, &m_stDevErrorInfo, sizeof(devErrInfo));
-    }
-    return Error_Succeed;
-}
-
-
-//Private
-void ThermalPrint::SaveErrorInfo(CHAR* errMsg, int errCode)
-{
-    LOG_FUNCTION();
-    memset(m_szErrMsg, 0, MAX_DEV_ERROR_MSG_LEN);
-    LogM("ErrMsg=%s, errCode=%d.", errMsg, errCode);
-}
-int ThermalPrint::string_format(std::string &str, const std::string fmt, ...)
-{
-    char *buf;
-    va_list ap;
-
-    va_start(ap, fmt);
-    int len = vprintf (fmt.c_str(), ap) + 1;
-    buf = (char *) malloc (len * sizeof (char));
-    if (!buf)
-    {
-        return -1;
-    }
-    memset(buf, 0, len);
-    int nRet = vsnprintf (buf, len, fmt.c_str(), ap);
-    va_end(ap);
-
-    str = std::string(buf);
-    free(buf);
-
-    return nRet;
-}
-BOOL  ThermalPrint::WaitUntialActFinish()
-{
-    LOG_FUNCTION();
-    LogM("WaitUntialActFinish is Entry.");
-    BOOL bState = FALSE;
-    ThermalState stState;
-    DWORD dwTimeStart = GetTickCount();
-    BOOL bTimeOutFlag = FALSE;
-    BOOL bTimeOutValid = FALSE;
-
-    do
-    {
-        if (!bTimeOutValid)
-        {
-            if ((GetTickCount() - dwTimeStart) > DEV_CMD_ACTION_RESPONSE_TIMEOUT)
-            {
-                bTimeOutFlag = TRUE;
-            }
-        }
-
-        if (Error_Succeed != GetDevState(stState))
-        {
-            return false;
-        }
-        BYTE byStatus[4] = {0};
-        if (DeviceTask.GetStatus(byStatus))
-        {
-            if ((byStatus[0] & DATA_BIT2) == DATA_BIT2)
-            {
-                m_bDevBusy = TRUE;
-            }
-            else
-            {
-                m_bDevBusy = FALSE;
-            }
-        }
-        if (m_bDevBusy)
-        {
-            bTimeOutValid = TRUE;
-            sleep(500);
-        }
-        else
-        {
-            bState = TRUE;
-        }
-    } while ((bState == FALSE) && (bTimeOutFlag == FALSE));
-
-    if (bTimeOutFlag)	//超时
-    {
-        LogE("WaitUntialActFinish is time out end.");
-        return false;
-    }
-    LogM("WaitUntialActFinish is normal end.");
-    return true;
-}

+ 0 - 123
DevAdapter/keba/ThermalPrint.keba.1.1/ThermalPrint.h

@@ -1,123 +0,0 @@
-#ifndef THERMALPRINT_H
-#define THERMALPRINT_H
-
-#include "ThermalPrintClass.h"
-#include "DevCtrl.h"
-
-
-#define PRINTER_T080PLUS_MUTEX  "PrinterT080plusMutex"
-
-enum COMMFUNC_RLT : int
-{
-    RLT_SUCCESS = 0,
-    RLT_ERROR
-};
-class  ThermalPrint :public ThermalPrintClass
-{
-
-public:
-    ThermalPrint();
-    ~ThermalPrint();
-
-    //DeviceBaseClass
-    //
-    //	Get category infomation about device.
-    //
-    virtual ErrorCodeEnum GetDevCategory(DevCategoryInfo &devCategory);
-    //	Reset device.
-    //	Do the cleaning work and initialize device again in order to return to
-    //	the normal condition.
-    virtual ErrorCodeEnum Reset();
-    //
-    //	Close device and do the cleaning work.
-    //	ex. close connection,close port,release memery and so on
-    virtual ErrorCodeEnum DevClose();
-    //	Get last error the device issued.
-    //	Error message must include explanatory memorandum ,the original error
-    //	code and anything in favour of location problem.
-    virtual ErrorCodeEnum GetLastErr(DevErrorInfo &devErrInfo);
-    //	打开打印机
-    virtual ErrorCodeEnum DevOpen(BYTE btPort,DWORD dwBaudRate);
-
-    //	获取打印机实时状态
-    virtual ErrorCodeEnum GetDevState(ThermalState &devState);
-
-    //开始打印初始设置:paperWidth一般为80mm和57mm
-    virtual ErrorCodeEnum BeginPrint(ThermalPaperType eType,int paperWidth);
-
-    //打印控制指令函数:主要是打印,切纸和控制打印光标指令函数
-    //第三个参数是预留参数 暂时无用到
-    virtual ErrorCodeEnum ControlAction(PrintAction eAction,DWORD dwValue1,DWORD dwValue2=0);
-
-    //打印参数指令函数:
-    //第三个参数是预留参数 暂时无用到
-    virtual ErrorCodeEnum SetParam(CommandType eType,DWORD dwValue1,DWORD dwValue2=0);
-
-    //打印字体指令函数:主要是字体相关饿指令函数
-    //第三个参数是预留参数 设置FONT_CUSTOM_SIZE用到,dwValue1表示宽,dwValue2表示长
-    //					设置FONT_LEFT_RIGHT_SPACE用到 dwValue1表示左边距 dwValue2表示右边距
-    virtual ErrorCodeEnum SetFont(FontStyle eType,DWORD dwValue1,DWORD dwValue2=0);
-
-    //打印文本数据函数
-    virtual ErrorCodeEnum PrintText(BYTE *pData,DWORD dwDataLen);
-
-    //打印条形码函数
-    //dwUnitWidth 条形码基本模块宽度 取值{2..6} 默认2
-    //dwHeight 条形码高度 单位mm
-    //iHRIPosition hri字符打印位置 见枚举类型HriPosition
-    virtual ErrorCodeEnum PrintBarCode(BarCodeType eType, BYTE *pData,DWORD dwDataLen,DWORD dwUnitWidth,DWORD dwHeight,HriPosition eHRIPosition);
-
-    //打印二维码QRCode函数
-    //dwUnitWidth 二维码基本元素宽度 取值{1..255} 默认3
-    virtual ErrorCodeEnum PrintQRCode(BYTE *pData,DWORD dwDataLen,DWORD dwUnitWidth);
-
-    //打印二维码QRCode函数
-    //dwWidth 二维码长度 ,单位mm
-    virtual ErrorCodeEnum PrintQRCodeByArea(BYTE *pData,DWORD dwDataLen,DWORD dwUnitWidth,DWORD dwWidth);
-
-    //打印二维码PDF417函数
-    //errorLevel pdf417纠错级别 取值{0..8}
-    //dwUnitWidth  基本元素宽度 取值{3..90}
-    //dwUnitHeight 基本元素长度 取值{1..30}
-    //row  pdf417 行数 取值{1..7}
-    //lines pdf417 列数 取值{2..25}
-    virtual ErrorCodeEnum PrintPDF417code(BYTE *pData,DWORD dwDataLen,int errorLevel,DWORD dwUnitWidth,DWORD dwUnitHeight,int rows,int lines);
-
-    //打印二维码PDF417函数
-    //errorLevel pdf417纠错级别 取值{0..8}
-    //dwWidth  pdf417宽度 单位mm
-    //dwHeight pdf417长度 单位mm
-    virtual ErrorCodeEnum PrintPDF417codeByArea(BYTE *pData,DWORD dwDataLen,int errorLevel,DWORD dwWidth,DWORD dwHeight);
-
-    //打印图像函数:pData是base64编码的数据
-    virtual ErrorCodeEnum PrintImage(BYTE *pData,DWORD dwDataLen);
-
-    //获取打印失败后错误信息和错误状态
-    virtual ErrorCodeEnum GetLastErrState(ThermalState &devState , DevErrorInfo &devErrInfo);
-    static UINT WINAPI StartProcessThread(LPVOID lpvParam);
-
-private:
-    bool m_bDevOpen;
-    CHAR m_szErrMsg[MAX_DEV_ERROR_MSG_LEN];
-    void SaveErrorInfo(CHAR* errMsg, int errCode=95555);
-
-    ThermalHardwareState m_euDevStatus;
-    ThermalPaperState m_euPaperState;
-    DevErrorInfo m_stDevErrorInfo;
-
-    bool m_bDevBusy;
-
-    std::string m_LogFileNamePath;
-    int m_nLogLevel;
-
-    std::string m_strIniPath;
-    int m_nPaperType;
-
-    int m_paperWidth;
-    bool bPrintTextFlag;
-private:
-    int string_format(std::string &str, const std::string fmt, ...);
-    BOOL  WaitUntialActFinish();
-};
-
-#endif // THERMALPRINT_H

+ 0 - 31
DevAdapter/keba/ThermalPrint.keba.1.1/dllmain.cpp

@@ -1,31 +0,0 @@
-// dllmain.cpp : 定义 DLL 应用程序的入口点。
-#include "stdafx.h"
-#include "ThermalPrint.h"
-
-LOG_DECLARE()
-
-// IDCertificate.keba.7.2.cpp : 定义 DLL 应用程序的导出函数。
-ErrorCodeEnum  CreateDevComponent(DeviceBaseClass *&pBaseObj)
-{
-    LOG_INIT("ThermalPrint", "/home/keba/", "/home/keba/keba-ThermalPrint.log");
-    pBaseObj = new ThermalPrint();
-    if (pBaseObj == NULL)
-    {
-        LogM("CreateDevComponent ThermalPrint failed!");
-        return Error_Resource;
-    }
-    LogM("CreateDevComponent ThermalPrint scessufull!");
-    printf("pBaseObj is successfull");
-    return Error_Succeed;
-}
-
-ErrorCodeEnum  ReleaseDevComponent(DeviceBaseClass *&pBaseObj)
-{
-    if (pBaseObj == NULL)
-        return Error_Param;
-    ThermalPrint* pTmp = (ThermalPrint*)(pBaseObj);
-    delete pTmp;
-    pTmp = NULL;
-    pBaseObj = NULL;
-    return Error_Succeed;
-}

+ 0 - 32
DevAdapter/keba/ThermalPrint.keba.1.1/keba.SetupMutex.h

@@ -1,32 +0,0 @@
-#ifndef __SETUP_MUTEX_H
-#define __SETUP_MUTEX_H
-
-#pragma once
-#include "wintypes.h"
-
-class CSetupMutex
-{
-public:
-    CSetupMutex(LPCSTR lpszMutexName = NULL)
-    {
-        if ((hMutex = CreateMutex(NULL, FALSE, lpszMutexName)) != NULL)
-        {
-            WaitForSingleObject(lpszMutexNamehMutex, INFINITE);
-        }
-    }
-
-    ~CSetupMutex(void)
-    {
-        if (hMutex != NULL)
-        {
-            ReleaseMutex(hMutex);
-            CloseHandle(hMutex);
-        }
-    }
-
-private:
-    HANDLE  hMutex;
-
-};
-
-#endif

+ 0 - 31
DevAdapter/keba/ThermalPrint.keba.1.1/stdafx.h

@@ -1,31 +0,0 @@
-// stdafx.h : 标准系统包含文件的包含文件,
-// 或是经常使用但不常更改的
-// 特定于项目的包含文件
-//
-
-#pragma once
-
-
-// TODO: 在此处引用程序需要的其他头文件
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <stdarg.h>
-#include <dlfcn.h>
-#include <fcntl.h>
-#include <stdint.h>
-#include <QByteArray>
-//#include <QFile>
-#include "wintypes.h"
-#include "winfunc.h"
-#include "INIAccess.h"
-#include "DevCtrl.h"
-
-#include "TraceManager.h"
-#include "SerialComm.h"
-#include "CommDef.h"
-#include "DataConvert.h"
-#include "CkLog.h"
-

+ 1 - 1
DevAdapter/keba/Ups.keba.1.1/CkLog.h

@@ -3,7 +3,7 @@
 #define CKLOG_H
 
 #define CMBLOG4            //是否使用招行日志库开关
-#define CKLOG              //是否使用公司日志库开关
+//#define CKLOG              //是否使用公司日志库开关
 
 #include <stdio.h>
 #include <fstream>

+ 1 - 4
DevAdapter/keba/Ups.keba.1.1/UpsClassImpl_East.h

@@ -1,14 +1,11 @@
 #pragma once
 #ifndef UPSCLASSIMPL_EAST_H
 #define UPSCLASSIMPL_EAST_H
-#pragma pack(push,1)
-
-
 
 #include "stdafx.h"
 //编译版本
 #define  FILE_VERSION  1
-
+#pragma pack(push,1)
 struct StDevStatus
 {
     CHAR szV_Input[6]; //输入电压

+ 1 - 1
DevAdapter/keba/WatchDog.keba.1.1/CkLog.h

@@ -3,7 +3,7 @@
 #define CKLOG_H
 
 #define CMBLOG4            //是否使用招行日志库开关
-#define CKLOG              //是否使用公司日志库开关
+//#define CKLOG              //是否使用公司日志库开关
 
 #include <stdio.h>
 #include <fstream>

Some files were not shown because too many files changed in this diff