|
@@ -1,4 +1,4 @@
|
|
|
-#include "idcertificate.h"
|
|
|
+#include "idcertificate.h"
|
|
|
#include <stdarg.h>
|
|
|
#include "log4vendor.h"
|
|
|
#include "stdafx.h"
|
|
@@ -66,8 +66,10 @@ m_bDevOpen(false)
|
|
|
,m_iCardType(-1)
|
|
|
{
|
|
|
LOG_FUNCTION();
|
|
|
- SecDeviceNum = 0;
|
|
|
+ m_SecDeviceNum = 0xFF;
|
|
|
m_wDevStatus = DEVICE_STATUS_NOT_READY;
|
|
|
+
|
|
|
+ memset(m_szErrMsg, 0x00, MAX_DEV_ERROR_MSG_LEN);
|
|
|
}
|
|
|
|
|
|
IDCerClassImpl::~IDCerClassImpl()
|
|
@@ -75,7 +77,8 @@ IDCerClassImpl::~IDCerClassImpl()
|
|
|
LOG_FUNCTION();
|
|
|
m_bDevOpen = false;
|
|
|
DevClose();
|
|
|
- SecDeviceNum = 0;
|
|
|
+ m_SecDeviceNum = 0xFF;
|
|
|
+ memset(m_szErrMsg, 0x00, MAX_DEV_ERROR_MSG_LEN);
|
|
|
std::string tmpPath = "";
|
|
|
m_wDevStatus = DEVICE_STATUS_NOT_READY;
|
|
|
if( GetDllPathLocal(tmpPath) == Error_Succeed )
|
|
@@ -177,26 +180,6 @@ 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\
|
|
@@ -218,20 +201,20 @@ ErrorCodeEnum IDCerClassImpl::GetDevCategory(DevCategoryInfo &devCategory)
|
|
|
|
|
|
DEVSTATUS m_DeviceStatus;
|
|
|
memset(&m_DeviceStatus, 0x00, sizeof(DEVSTATUS));
|
|
|
- int nRet = m_cBS_ID81IDCImpl.DeviceStatus(SecDeviceNum, &m_DeviceStatus);
|
|
|
+ int nRet = m_cBS_ID81IDCImpl.DeviceStatus(m_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)
|
|
|
+ DevOpen(m_SecDeviceNum);
|
|
|
+ nRet = m_cBS_ID81IDCImpl.DeviceStatus(m_SecDeviceNum, &m_DeviceStatus);
|
|
|
+ if (nRet != IDDIGITALCOPIER_NO_ERROR)
|
|
|
{
|
|
|
- SaveErrorInfo("通讯异常", Error_DevCommFailed);
|
|
|
- LogM("DeviceStatus(), 通讯异常, nRet=%d,line=%d", nRet, __LINE__);
|
|
|
+ SaveErrorInfo(__LINE__, __FUNCTION__);
|
|
|
+ LogM("GetDevCategory->DeviceStatus()失败, nRet=%d,line=%d", nRet, __LINE__);
|
|
|
m_wDevStatus = DEVICE_STATUS_FAULT;
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+ LogM("GetDevCategory() Succeed.");
|
|
|
return Error_Succeed;
|
|
|
}
|
|
|
|
|
@@ -249,17 +232,17 @@ ErrorCodeEnum IDCerClassImpl::Reset()
|
|
|
if (DevOpen(0) != Error_Succeed)
|
|
|
{
|
|
|
m_wDevStatus = DEVICE_STATUS_NOT_READY;
|
|
|
- SaveErrorInfo("设备未打开", Error_DevNotAvailable);
|
|
|
- LogM("Reset(), 设备未打开, nRet=%d,line=%d", Error_DevNotAvailable, __LINE__);
|
|
|
+ SaveErrorInfo("Reset()设备未打开", DEP_DEV_NOT_OPENED, __FUNCTION__, __LINE__);
|
|
|
+ LogM("Reset()设备未打开, nRet=%d,line=%d", Error_DevNotAvailable, __LINE__);
|
|
|
return Error_DevNotAvailable;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- int nRet = m_cBS_ID81IDCImpl.ResetWithAction(SecDeviceNum, 0);//复位模式,0---退卡,1---吞卡,2---退卡并持卡,3---无动作。
|
|
|
+ int nRet = m_cBS_ID81IDCImpl.ResetWithAction(m_SecDeviceNum, 0);//复位模式,0---退卡,1---吞卡,2---退卡并持卡,3---无动作。
|
|
|
if (IDDIGITALCOPIER_NO_ERROR != nRet)
|
|
|
{
|
|
|
m_wDevStatus = DEVICE_STATUS_FAULT;
|
|
|
- SaveErrorInfo("设备通信异常", Error_DevConnFailed);
|
|
|
+ SaveErrorInfo(__LINE__, __FUNCTION__);
|
|
|
LogM("Reset() 复位模式, 0-- 退卡 动作失败,line=%d", __LINE__);
|
|
|
return Error_DevConnFailed;
|
|
|
}
|
|
@@ -276,13 +259,30 @@ ErrorCodeEnum IDCerClassImpl::DevClose()
|
|
|
{
|
|
|
LOG_FUNCTION();
|
|
|
LogM("DevClose() Entry.");
|
|
|
- m_wDevStatus = DEVICE_STATUS_NOT_READY;
|
|
|
- int nRet = m_cBS_ID81IDCImpl.CloseDev(SecDeviceNum);
|
|
|
+// if(!m_bDevOpen)
|
|
|
+// {
|
|
|
+// LogM("DevClose()设备未打开, line=%d", __LINE__);
|
|
|
+// return Error_Succeed;
|
|
|
+// }
|
|
|
|
|
|
+ m_wDevStatus = DEVICE_STATUS_NOT_READY;
|
|
|
+ if (m_SecDeviceNum < 0 || m_SecDeviceNum > 16)
|
|
|
+ {
|
|
|
+ return Error_Succeed;
|
|
|
+ }
|
|
|
+ int nRet = m_cBS_ID81IDCImpl.CloseDev(m_SecDeviceNum);
|
|
|
+ if (IDDIGITALCOPIER_NO_ERROR != nRet)
|
|
|
+ {
|
|
|
+ SaveErrorInfo(__LINE__, __FUNCTION__);
|
|
|
+ LogM("DevClose(m_SecDeviceNum = %d)失败, nRet=%d,line=%d", m_SecDeviceNum, nRet, __LINE__);
|
|
|
+ return Error_DevConnFailed;
|
|
|
+ }
|
|
|
m_bDevOpen = false;
|
|
|
m_bAuthed = false;
|
|
|
m_iCardType = -1;
|
|
|
- LogM("DevClose(SecDeviceNum = %d), nRet=%d,line=%d", SecDeviceNum, nRet, __LINE__);
|
|
|
+ //m_SecDeviceNum = 0xFF;
|
|
|
+
|
|
|
+ LogM("DevClose(m_SecDeviceNum = %d) ok, nRet=%d,line=%d", m_SecDeviceNum, nRet, __LINE__);
|
|
|
return Error_Succeed;
|
|
|
}
|
|
|
|
|
@@ -316,24 +316,47 @@ ErrorCodeEnum IDCerClassImpl::DevOpen(DWORD dwPort)
|
|
|
m_bAuthed = false;
|
|
|
m_iCardType = -1;
|
|
|
|
|
|
- DevClose();
|
|
|
+ if(m_cBS_ID81IDCImpl.m_bLoadLibRet == false)
|
|
|
+ {
|
|
|
+ SaveErrorInfo("DevOpen()动库加载失败", DEP_NO_E_IDCERTIFICATE_TABPAR_NONE, __FUNCTION__, __LINE__);
|
|
|
+ SH_DeleteFileOrDirectory("LogModuleErrMsg.log");
|
|
|
+ SH_DeleteFileOrDirectory("bin\\LogModuleErrMsg.log");
|
|
|
+ SH_DeleteFileOrDirectory("..\\bin\\LogModuleErrMsg.log");
|
|
|
+ LogE("DevOpen()动态库加载失败 nRet=%d,line=%d", Error_DevLoadFileFailed, __LINE__);
|
|
|
+ return Error_DevLoadFileFailed;
|
|
|
+ }
|
|
|
+
|
|
|
+ ErrorCodeEnum nRetCode = DevClose();
|
|
|
+ if (nRetCode != Error_Succeed)
|
|
|
+ {
|
|
|
+ //m_bDevOpen = false;
|
|
|
+ m_wDevStatus = DEVICE_STATUS_NOT_READY;
|
|
|
+ SaveErrorInfo("DevOpen()->DevClose()关闭端口失败", DEP_DEV_NOT_FOUND, __FUNCTION__, __LINE__);
|
|
|
+ SH_DeleteFileOrDirectory("LogModuleErrMsg.log");
|
|
|
+ SH_DeleteFileOrDirectory("bin\\LogModuleErrMsg.log");
|
|
|
+ SH_DeleteFileOrDirectory("..\\bin\\LogModuleErrMsg.log");
|
|
|
+ LogE("DevOpen()->DevClose()关闭端口失败 nRet=%d,line=%d", nRetCode, __LINE__);
|
|
|
+ return nRetCode;
|
|
|
+ }
|
|
|
+
|
|
|
int nRet = m_cBS_ID81IDCImpl.EnumScannerDev(ScannerInfo, &DevNumber);
|
|
|
if (DevNumber <= 0)
|
|
|
{
|
|
|
- m_bDevOpen = false;
|
|
|
+ //m_bDevOpen = false;
|
|
|
m_wDevStatus = DEVICE_STATUS_NOT_READY;
|
|
|
- SaveErrorInfo("未找到设备", Error_DevNotAvailable);
|
|
|
+ SaveErrorInfo("DevOpen()未找到设备", DEP_DEV_NOT_FOUND, __FUNCTION__, __LINE__);
|
|
|
SH_DeleteFileOrDirectory("LogModuleErrMsg.log");
|
|
|
SH_DeleteFileOrDirectory("bin\\LogModuleErrMsg.log");
|
|
|
SH_DeleteFileOrDirectory("..\\bin\\LogModuleErrMsg.log");
|
|
|
+ LogE("DevOpen() 未找到设备 nRet=%d,line=%d", Error_DevNotAvailable, __LINE__);
|
|
|
return Error_DevNotAvailable;
|
|
|
}
|
|
|
|
|
|
for (unsigned int i = 0; i < DevNumber; i++)
|
|
|
{
|
|
|
- SecDeviceNum = ScannerInfo[i].DeviceID;
|
|
|
- printf(" SecDeviceNum=%d", SecDeviceNum);
|
|
|
- nRet = m_cBS_ID81IDCImpl.OpenDev(SecDeviceNum);
|
|
|
+ m_SecDeviceNum = ScannerInfo[i].DeviceID;
|
|
|
+ printf(" m_SecDeviceNum=%d", m_SecDeviceNum);
|
|
|
+ nRet = m_cBS_ID81IDCImpl.OpenDev(m_SecDeviceNum);
|
|
|
if (IDDIGITALCOPIER_NO_ERROR == nRet)
|
|
|
{
|
|
|
m_bDevOpen = true;
|
|
@@ -341,17 +364,17 @@ ErrorCodeEnum IDCerClassImpl::DevOpen(DWORD dwPort)
|
|
|
SH_DeleteFileOrDirectory("LogModuleErrMsg.log");
|
|
|
SH_DeleteFileOrDirectory("bin\\LogModuleErrMsg.log");
|
|
|
SH_DeleteFileOrDirectory("..\\bin\\LogModuleErrMsg.log");
|
|
|
- LogM("DevOpen(), SecDeviceNum = %d, nRet=%d,line=%d", SecDeviceNum, nRet, __LINE__);
|
|
|
+ LogM("DevOpen()成功, m_SecDeviceNum = %d, nRet=%d,line=%d", m_SecDeviceNum, Error_Succeed, __LINE__);
|
|
|
return Error_Succeed;
|
|
|
}
|
|
|
}
|
|
|
- m_bDevOpen = false;
|
|
|
+ //m_bDevOpen = false;
|
|
|
m_wDevStatus = DEVICE_STATUS_NOT_READY;
|
|
|
- SaveErrorInfo("设备通信异常", Error_DevConnFailed);
|
|
|
+ SaveErrorInfo(__LINE__, __FUNCTION__);
|
|
|
SH_DeleteFileOrDirectory("LogModuleErrMsg.log");
|
|
|
SH_DeleteFileOrDirectory("bin\\LogModuleErrMsg.log");
|
|
|
SH_DeleteFileOrDirectory("..\\bin\\LogModuleErrMsg.log");
|
|
|
- LogE("DevOpen, 设备通信异常, nRet = %d,line=%d ", nRet, __LINE__);
|
|
|
+ LogE("DevOpen()设备通信异常, nRet = %d,line=%d ", Error_DevConnFailed, __LINE__);
|
|
|
return Error_DevConnFailed;
|
|
|
}
|
|
|
//
|
|
@@ -364,93 +387,25 @@ ErrorCodeEnum IDCerClassImpl::IDCerRFControl(bool bControl)
|
|
|
{
|
|
|
LOG_FUNCTION();
|
|
|
LogM("IDCerRFControl(), bControl = %d", bControl);
|
|
|
+ if(!m_bDevOpen)
|
|
|
+ {
|
|
|
+ SaveErrorInfo("IDCerRFControl()设备未打开", DEP_DEV_NOT_OPENED, __FUNCTION__, __LINE__);
|
|
|
+ return Error_DevNotAvailable;
|
|
|
+ }
|
|
|
if (bControl)
|
|
|
{
|
|
|
- /*
|
|
|
- //------------2019-07-19--------根据DevTestTool连续测试的指令流程,应在此处检测入卡;
|
|
|
- //IDCerAuthenticate();
|
|
|
- DWORD dwStart = GetTickCount();
|
|
|
- DWORD dwNow = dwStart;
|
|
|
- DEVSTATUS m_DeviceStatus;
|
|
|
- int pos = -1;
|
|
|
- int nRet;
|
|
|
- bool bCard = false;
|
|
|
- while ((dwNow - dwStart) <= 1000)
|
|
|
- {
|
|
|
- pos = -1;
|
|
|
- memset(&m_DeviceStatus, 0x00, sizeof(DEVSTATUS));
|
|
|
- nRet = m_cBS_ID81IDCImpl.DeviceStatus(SecDeviceNum, &m_DeviceStatus);
|
|
|
- if (nRet != IDDIGITALCOPIER_NO_ERROR)
|
|
|
- {
|
|
|
- char err[MAX_DEV_ERROR_MSG_LEN] = {0};
|
|
|
- sprintf(err, "通讯异常%d", nRet);
|
|
|
- SaveErrorInfo(err, Error_DevCommFailed);
|
|
|
- //m_cBS_ID81IDCImpl.ResetDev(SecDeviceNum);
|
|
|
- return Error_DevCommFailed;
|
|
|
- //SaveErrorInfo("通讯异常", Error_DevCommFailed);
|
|
|
- //return Error_DevCommFailed;
|
|
|
- }
|
|
|
- if ((m_DeviceStatus.iStatusInputSensorHaveCard == 1) &&
|
|
|
- (m_DeviceStatus.iStatusMiddleSensorHaveCard == 0) &&
|
|
|
- (m_DeviceStatus.iStatusScanSensorHaveCard ==0))
|
|
|
- {
|
|
|
- pos = 2;
|
|
|
- }
|
|
|
- else if ((m_DeviceStatus.iStatusMiddleSensorHaveCard == 1) ||
|
|
|
- (m_DeviceStatus.iStatusScanSensorHaveCard ==1))
|
|
|
- {
|
|
|
- pos = 1;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- pos = 0;
|
|
|
- }
|
|
|
- if (pos <= 0)
|
|
|
- {
|
|
|
- Sleep(100);
|
|
|
- dwNow = GetTickCount();
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- bCard = true;
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- if (!bCard)
|
|
|
- {
|
|
|
- SaveErrorInfo("未检测到卡", Error_Unexpect);
|
|
|
- return Error_Unexpect;
|
|
|
- }
|
|
|
-
|
|
|
- nRet = m_cBS_ID81IDCImpl.CheckIdCard(SecDeviceNum, 100);
|
|
|
- if ((IDDIGITALCOPIER_TIMEOUT_ERROR == nRet) ||
|
|
|
- (IDDIGITALCOPIER_NO_CARD == nRet))
|
|
|
- {
|
|
|
- //2019-02-28 《可视化柜台设备厂商适配器开发说明文档V1.3.doc》 P12关于身份证读卡器改造说明
|
|
|
- //1. 检测到有卡片插入/放置,但不是身份证时,IDCerAuthenticate返回Error_DevMedia;
|
|
|
- //2. 未检测到卡片插入/放置,IDCerAuthenticate返回Error_Unexpect;
|
|
|
- //3. 检测到身份证且认证成功(注意:部分厂商不做卡认证直接返回成功,需要根据实际情况按照步骤1和2返回对应值),IDCerAuthenticate返回Error_Succeed。
|
|
|
- //SaveErrorInfo("未检测到卡", Error_DevMedia);
|
|
|
- //printf(" SecDeviceNum=%d",SecDeviceNum);
|
|
|
- //return Error_DevMedia;
|
|
|
- SaveErrorInfo("未检测到卡", Error_Unexpect);
|
|
|
- return Error_Unexpect;
|
|
|
- }
|
|
|
- else if (IDDIGITALCOPIER_NO_ERROR != nRet)
|
|
|
- {
|
|
|
- char err[MAX_DEV_ERROR_MSG_LEN] = {0};
|
|
|
- sprintf(err, "通讯失败%d", nRet);
|
|
|
- SaveErrorInfo(err, Error_DevConnFailed);
|
|
|
- //m_cBS_ID81IDCImpl.ResetDev(SecDeviceNum);
|
|
|
- return Error_DevConnFailed;
|
|
|
- }
|
|
|
- */
|
|
|
+
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- ForceIDEject();
|
|
|
+ ErrorCodeEnum nRet = ForceIDEject();
|
|
|
+ if(nRet != Error_Succeed)
|
|
|
+ {
|
|
|
+ LogM("IDCerRFControl->ForceIDEject(), nRet = %d,line=%d", Error_Succeed, __LINE__);
|
|
|
+ return nRet;
|
|
|
+ }
|
|
|
}
|
|
|
- LogM("IDCerRFControl(), nRet = %d,line=%d", Error_Succeed, __LINE__);
|
|
|
+ LogM("IDCerRFControl() success, nRet = %d,line=%d", Error_Succeed, __LINE__);
|
|
|
return Error_Succeed;
|
|
|
}
|
|
|
|
|
@@ -462,10 +417,19 @@ ErrorCodeEnum IDCerClassImpl::IDCerAuthenticate()
|
|
|
{
|
|
|
LOG_FUNCTION();
|
|
|
LogM("IDCerAuthenticate() Entry.");
|
|
|
+ if(!m_bDevOpen)
|
|
|
+ {
|
|
|
+ SaveErrorInfo("IDCerAuthenticate()设备未打开", DEP_DEV_NOT_OPENED, __FUNCTION__, __LINE__);
|
|
|
+ LogM("IDCerAuthenticate()设备未打开, line=%d", __LINE__);
|
|
|
+ return Error_DevNotAvailable;
|
|
|
+ }
|
|
|
int nRet = 0;
|
|
|
ErrorCodeEnum nRetErr =OnCheckCard();
|
|
|
if (nRetErr != Error_Succeed)
|
|
|
{
|
|
|
+ SaveErrorInfo(__LINE__, __FUNCTION__);
|
|
|
+ //SaveErrorInfo("IDCerAuthenticate()->OnCheckCard()未检测到卡", DEP_NO_E_IDCERTIFICATE_NO_CARD, __FUNCTION__, __LINE__);
|
|
|
+ LogM("IDCerAuthenticate()->OnCheckCard()未检测到卡, nRet=%d,line=%d", nRetErr, __LINE__);
|
|
|
return nRetErr;
|
|
|
}
|
|
|
LogM("IDCerAuthenticate():CheckIdCard检测到卡并已吸入, nRet=%d,line=%d", nRetErr, __LINE__);
|
|
@@ -483,29 +447,29 @@ ErrorCodeEnum IDCerClassImpl::IDCerAuthenticate()
|
|
|
memcpy(FileName0, dllPath.c_str(), dllPath.length());
|
|
|
std::string strLog = "IDCerAuthenticate(),PhotoPath=[" + dllPath + "]";
|
|
|
LogM("%s,line=%d",strLog.c_str(), __LINE__);
|
|
|
- nRet = m_cBS_ID81IDCImpl.GetMyIDCardType(SecDeviceNum, &iCardType);
|
|
|
+ nRet = m_cBS_ID81IDCImpl.GetMyIDCardType(m_SecDeviceNum, &iCardType);
|
|
|
if(nRet == IDDIGITALCOPIER_NO_ERROR)
|
|
|
{
|
|
|
|
|
|
}
|
|
|
else if (nRet == IDDIGITALCOPIER_IDDATA_PROCESS_ERROR)
|
|
|
{
|
|
|
- SaveErrorInfo("无效卡", Error_DevMedia);
|
|
|
- LogE("IDCerAuthenticate(),无效卡, nRet=%d,line=%d", Error_DevMedia, __LINE__);
|
|
|
+ SaveErrorInfo("IDCerAuthenticate()->GetMyIDCardType()无效卡", DEP_NO_E_IDCERTIFICATE_INVALID_CARD, __FUNCTION__, __LINE__);
|
|
|
+ LogE("IDCerAuthenticate()->GetMyIDCardType()无效卡, nRet=%d,line=%d", Error_DevMedia, __LINE__);
|
|
|
return Error_DevMedia;
|
|
|
}
|
|
|
else if (IDDIGITALCOPIER_STATUS_PASSAGE_JAM == nRet)
|
|
|
{
|
|
|
char err[MAX_DEV_ERROR_MSG_LEN] = {0};
|
|
|
- sprintf(err, "塞卡%d", nRet);
|
|
|
- SaveErrorInfo(err, Error_Unexpect);
|
|
|
- LogE("IDCerAuthenticate(),塞卡,nRet=%d, SecDeviceNum=%d,line=%d", nRet, SecDeviceNum, __LINE__);
|
|
|
+ sprintf(err, "IDCerAuthenticate()->GetMyIDCardType()塞卡%d", nRet);
|
|
|
+ SaveErrorInfo(err, DEP_NO_E_IDCERTIFICATE_PASSAGE_JAM, __FUNCTION__, __LINE__);
|
|
|
+ LogE("IDCerAuthenticate()->GetMyIDCardType()塞卡,nRet=%d, m_SecDeviceNum=%d,line=%d", nRet, m_SecDeviceNum, __LINE__);
|
|
|
return Error_Unexpect;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- SaveErrorInfo("通讯异常", Error_DevCommFailed);
|
|
|
- LogE("IDCerAuthenticate(),通讯异常%d,nRet=%d,line=%d", nRet, Error_DevCommFailed, __LINE__);
|
|
|
+ SaveErrorInfo(__LINE__, __FUNCTION__);
|
|
|
+ LogE("IDCerAuthenticate()->GetMyIDCardType()异常%d,nRet=%d,line=%d", nRet, Error_DevCommFailed, __LINE__);
|
|
|
m_wDevStatus = DEVICE_STATUS_FAULT;
|
|
|
return Error_DevCommFailed;
|
|
|
}
|
|
@@ -529,12 +493,12 @@ ErrorCodeEnum IDCerClassImpl::IDCerAuthenticate()
|
|
|
}
|
|
|
if (iCardType == 2)
|
|
|
{
|
|
|
- nRet = m_cBS_ID81IDCImpl.GetMyGATIDInfo(SecDeviceNum, &m_IDInfoGAT, FileName0);
|
|
|
+ nRet = m_cBS_ID81IDCImpl.GetMyGATIDInfo(m_SecDeviceNum, &m_IDInfoGAT, FileName0);
|
|
|
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- nRet = m_cBS_ID81IDCImpl.GetAllTypeCardInfo(SecDeviceNum, iCardType, AllTypeInfo, FileName0);
|
|
|
+ nRet = m_cBS_ID81IDCImpl.GetAllTypeCardInfo(m_SecDeviceNum, iCardType, AllTypeInfo, FileName0);
|
|
|
}
|
|
|
|
|
|
|
|
@@ -542,32 +506,29 @@ ErrorCodeEnum IDCerClassImpl::IDCerAuthenticate()
|
|
|
{
|
|
|
LogM("IDCerAuthenticate(),认证成功,line=%d", __LINE__);
|
|
|
}
|
|
|
- else if ((nRet == IDDIGITALCOPIER_NO_ERROR) ||
|
|
|
- (nRet == IDDIGITALCOPIER_IDDATA_PROCESS_ERROR)) //身份证电子信息处理错误
|
|
|
+ else if(nRet == IDDIGITALCOPIER_IDDATA_PROCESS_ERROR) //身份证电子信息处理错误
|
|
|
{
|
|
|
- SaveErrorInfo("无效卡", Error_DevMedia);
|
|
|
+ SaveErrorInfo("IDCerAuthenticate()无效卡", DEP_NO_E_IDCERTIFICATE_UNAUTHED, __FUNCTION__, __LINE__);
|
|
|
LogE("IDCerAuthenticate(),无效卡, nRet=%d,line=%d", Error_DevMedia, __LINE__);
|
|
|
return Error_DevMedia;
|
|
|
}
|
|
|
else if (IDDIGITALCOPIER_STATUS_PASSAGE_JAM == nRet)
|
|
|
{
|
|
|
char err[MAX_DEV_ERROR_MSG_LEN] = {0};
|
|
|
- sprintf(err, "塞卡%d", nRet);
|
|
|
- SaveErrorInfo(err, Error_Unexpect);
|
|
|
- LogE("IDCerAuthenticate(),塞卡,nRet=%d, SecDeviceNum=%d,line=%d", nRet, SecDeviceNum, __LINE__);
|
|
|
+ sprintf(err, "IDCerAuthenticate()塞卡%d", nRet);
|
|
|
+ SaveErrorInfo(err, DEP_NO_E_IDCERTIFICATE_PASSAGE_JAM, __FUNCTION__, __LINE__);
|
|
|
+ LogE("IDCerAuthenticate(),塞卡,nRet=%d, m_SecDeviceNum=%d,line=%d", nRet, m_SecDeviceNum, __LINE__);
|
|
|
return Error_Unexpect;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- char err[MAX_DEV_ERROR_MSG_LEN] = {0};
|
|
|
- sprintf(err, "通讯失败%d", nRet);
|
|
|
- SaveErrorInfo(err, Error_DevConnFailed);
|
|
|
- LogE("IDCerAuthenticate()通讯失败, nRet=%d,line=%d", Error_DevCommFailed, __LINE__);
|
|
|
+ SaveErrorInfo(__LINE__,__FUNCTION__);
|
|
|
+ LogE("IDCerAuthenticate()获取卡片信息失败, nRet=%d,line=%d", Error_DevCommFailed, __LINE__);
|
|
|
m_wDevStatus = DEVICE_STATUS_FAULT;
|
|
|
return Error_DevConnFailed;
|
|
|
}
|
|
|
m_bAuthed = true; // true:认证成功;
|
|
|
- m_iCardType = iCardType; // 认证成功后,卡的类型;
|
|
|
+ m_iCardType = iCardType; //认证成功后,卡的类型;
|
|
|
LogM("IDCerAuthenticate(), nRet=%d,line=%d", Error_Succeed, __LINE__);
|
|
|
return Error_Succeed;
|
|
|
}
|
|
@@ -579,9 +540,17 @@ ErrorCodeEnum IDCerClassImpl::IDCerGetData(IDCerInfo &idCerInfo)
|
|
|
LOG_FUNCTION();
|
|
|
LogM("IDCerGetData() Entry,line=%d", __LINE__);
|
|
|
|
|
|
+ if(!m_bDevOpen)
|
|
|
+ {
|
|
|
+ SaveErrorInfo("IDCerGetData()设备未打开", DEP_DEV_NOT_OPENED, __FUNCTION__, __LINE__);
|
|
|
+ LogM("IDCerGetData()设备未打开, line=%d", __LINE__);
|
|
|
+ return Error_DevNotAvailable;
|
|
|
+ }
|
|
|
+
|
|
|
if (!m_bAuthed)
|
|
|
{
|
|
|
- SaveErrorInfo("未认证成功。", Error_DevMedia);
|
|
|
+ //SaveErrorInfo(__LINE__, __FUNCTION__);
|
|
|
+ SaveErrorInfo("IDCerGetData()未认证成功", DEP_NO_E_IDCERTIFICATE_UNAUTHED, __FUNCTION__, __LINE__);
|
|
|
LogE("IDCerGetData(),未认证成功, nRet=%d,line=%d", Error_DevMedia, __LINE__);
|
|
|
return Error_DevMedia;
|
|
|
}
|
|
@@ -888,7 +857,7 @@ ErrorCodeEnum IDCerClassImpl::IDCerGetData(IDCerInfo &idCerInfo)
|
|
|
else
|
|
|
{
|
|
|
//无效卡(这里包括港澳台居住证,因为未接到招行提出改造此接口要求;)
|
|
|
- SaveErrorInfo("无效卡", Error_DevMedia);
|
|
|
+ SaveErrorInfo("IDCerGetData()无效卡", DEP_NO_E_IDCERTIFICATE_INVALID_CARD, __FUNCTION__, __LINE__);
|
|
|
LogE("IDCerGetData(), 无效卡, nRet=%d", Error_DevMedia);
|
|
|
return Error_DevMedia;
|
|
|
}
|
|
@@ -910,9 +879,17 @@ ErrorCodeEnum IDCerClassImpl::IDCerGetDataEx(IDCerInfoEx &idCerInfoEx)
|
|
|
{
|
|
|
LOG_FUNCTION();
|
|
|
|
|
|
+ if(!m_bDevOpen)
|
|
|
+ {
|
|
|
+ SaveErrorInfo("IDCerGetDataEx()设备未打开", DEP_DEV_NOT_OPENED, __FUNCTION__, __LINE__);
|
|
|
+ LogM("IDCerGetDataEx()设备未打开, line=%d", __LINE__);
|
|
|
+ return Error_DevNotAvailable;
|
|
|
+ }
|
|
|
+
|
|
|
if (!m_bAuthed)
|
|
|
{
|
|
|
- SaveErrorInfo("未认证成功。", Error_DevMedia);
|
|
|
+ //SaveErrorInfo(__LINE__, __FUNCTION__);
|
|
|
+ SaveErrorInfo("未认证成功。", DEP_NO_E_IDCERTIFICATE_UNAUTHED, __FUNCTION__, __LINE__);
|
|
|
LogE("IDCerGetDataEx(),未认证成功, nRet=%d", Error_DevMedia);
|
|
|
return Error_DevMedia;
|
|
|
}
|
|
@@ -1407,7 +1384,7 @@ ErrorCodeEnum IDCerClassImpl::IDCerGetDataEx(IDCerInfoEx &idCerInfoEx)
|
|
|
else
|
|
|
{
|
|
|
//无效卡(这里包括港澳台居住证,因为未接到招行提出改造此接口要求;)
|
|
|
- SaveErrorInfo("无效卡", Error_DevMedia);
|
|
|
+ SaveErrorInfo("IDCerGetDataEx()无效卡", DEP_NO_E_IDCERTIFICATE_INVALID_CARD, __FUNCTION__, __LINE__);
|
|
|
//g_pLog->Print("IDCerGetDataEx(), 无效卡, nRet=%d", Error_DevMedia);
|
|
|
return Error_DevMedia;
|
|
|
}
|
|
@@ -1431,28 +1408,43 @@ ErrorCodeEnum IDCerClassImpl::ForceIDEject()
|
|
|
LOG_FUNCTION();
|
|
|
LogM("ForceIDEject() Entry,line=%d", __LINE__);
|
|
|
|
|
|
+// if(!m_bDevOpen)
|
|
|
+// {
|
|
|
+// SaveErrorInfo("ForceIDEject()设备未打开", DEP_DEV_NOT_OPENED, __FUNCTION__, __LINE__);
|
|
|
+// LogM("ForceIDEject()设备未打开, line=%d", __LINE__);
|
|
|
+// return Error_DevNotAvailable;
|
|
|
+// }
|
|
|
+
|
|
|
int pos = -1;
|
|
|
ErrorCodeEnum nRet = QueryCardPos(pos);
|
|
|
if ((nRet == Error_Succeed) && pos == 0)
|
|
|
{
|
|
|
- SaveErrorInfo("未检测到卡", Error_DevMedia);
|
|
|
+ SaveErrorInfo("ForceIDEject()未检测到卡", DEP_NO_E_IDCERTIFICATE_NO_CARD, __FUNCTION__, __LINE__);
|
|
|
LogM("ForceIDEject(), 未检测到卡, nRet=%d,line=%d", Error_DevMedia, __LINE__);
|
|
|
//return Error_DevMedia;
|
|
|
}
|
|
|
- int bRet = m_cBS_ID81IDCImpl.EjectIdCard(SecDeviceNum);
|
|
|
+ int bRet = m_cBS_ID81IDCImpl.EjectIdCard(m_SecDeviceNum);
|
|
|
if (bRet != IDDIGITALCOPIER_NO_ERROR)
|
|
|
{
|
|
|
- SaveErrorInfo("通讯异常", Error_DevCommFailed);
|
|
|
- LogM("ForceIDEject(), 通讯异常, nRet=%d, SecDeviceNum = %d,line=%d", bRet, SecDeviceNum, __LINE__);
|
|
|
+ SaveErrorInfo(__LINE__, __FUNCTION__);
|
|
|
+ LogM("ForceIDEject(), 异常, nRet=%d, m_SecDeviceNum = %d,line=%d", bRet, m_SecDeviceNum, __LINE__);
|
|
|
return Error_DevCommFailed;
|
|
|
}
|
|
|
- LogM("ForceIDEject(), nRet=%d, SecDeviceNum = %d,line=%d", bRet, SecDeviceNum, __LINE__);
|
|
|
+ LogM("ForceIDEject(), nRet=%d, m_SecDeviceNum = %d,line=%d", bRet, m_SecDeviceNum, __LINE__);
|
|
|
return Error_Succeed;
|
|
|
}
|
|
|
|
|
|
ErrorCodeEnum IDCerClassImpl::ScanIDAndSaveImage()
|
|
|
{
|
|
|
LOG_FUNCTION();
|
|
|
+ LogM("ScanIDAndSaveImage Entry, nRet=%d", Error_Succeed);
|
|
|
+
|
|
|
+// if(!m_bDevOpen)
|
|
|
+// {
|
|
|
+// SaveErrorInfo("ScanIDAndSaveImage()设备未打开", DEP_DEV_NOT_OPENED, __FUNCTION__, __LINE__);
|
|
|
+// LogM("ScanIDAndSaveImage()设备未打开, line=%d", __LINE__);
|
|
|
+// return Error_DevNotAvailable;
|
|
|
+// }
|
|
|
|
|
|
memset(PhotoPath, 0, MAX_FILE_PATH);
|
|
|
std::string dllPath = "";
|
|
@@ -1467,64 +1459,98 @@ ErrorCodeEnum IDCerClassImpl::ScanIDAndSaveImage()
|
|
|
|
|
|
DEVSTATUS m_DeviceStatus;
|
|
|
memset(&m_DeviceStatus, 0x00, sizeof(DEVSTATUS));
|
|
|
- int nRet = m_cBS_ID81IDCImpl.DeviceStatus(SecDeviceNum, &m_DeviceStatus);
|
|
|
+ int nRet = m_cBS_ID81IDCImpl.DeviceStatus(m_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)
|
|
|
+ DevOpen(m_SecDeviceNum);
|
|
|
+ nRet = m_cBS_ID81IDCImpl.DeviceStatus(m_SecDeviceNum, &m_DeviceStatus);
|
|
|
+ if (nRet != IDDIGITALCOPIER_NO_ERROR)
|
|
|
{
|
|
|
- SaveErrorInfo("通讯异常", Error_DevCommFailed);
|
|
|
- LogM("DeviceStatus(), 通讯异常, nRet=%d,line=%d", nRet, __LINE__);
|
|
|
+ SaveErrorInfo(__LINE__, __FUNCTION__);
|
|
|
+ LogM("ScanIDAndSaveImage()->DeviceStatus()失败, nRet=%d,line=%d", nRet, __LINE__);
|
|
|
m_wDevStatus = DEVICE_STATUS_FAULT;
|
|
|
return Error_DevCommFailed;
|
|
|
}
|
|
|
}
|
|
|
- LogM("DeviceStatus()正常, nRet=%d, line=%d", nRet, __LINE__);
|
|
|
- nRet = m_cBS_ID81IDCImpl.StartScan(SecDeviceNum);
|
|
|
+ LogM("ScanIDAndSaveImage()->DeviceStatus()正常, nRet=%d, line=%d", nRet, __LINE__);
|
|
|
+
|
|
|
+ ErrorCodeEnum nRetErr =OnCheckCard();
|
|
|
+ if (nRetErr != Error_Succeed)
|
|
|
+ {
|
|
|
+ SaveErrorInfo(__LINE__, __FUNCTION__);
|
|
|
+ //SaveErrorInfo("ScanIDAndSaveImage()->OnCheckCard()未检测到卡", DEP_NO_E_IDCERTIFICATE_NO_CARD, __FUNCTION__, __LINE__);
|
|
|
+ LogM("ScanIDAndSaveImage()->OnCheckCard()未检测到卡, nRet=%d,line=%d", nRetErr, __LINE__);
|
|
|
+ return nRetErr;
|
|
|
+ }
|
|
|
+ LogM("ScanIDAndSaveImage():CheckIdCard检测到卡并已吸入, nRet=%d,line=%d", nRetErr, __LINE__);
|
|
|
+
|
|
|
+ nRet = m_cBS_ID81IDCImpl.StartScan(m_SecDeviceNum);
|
|
|
if (nRet != IDDIGITALCOPIER_NO_ERROR)
|
|
|
{
|
|
|
m_wDevStatus = DEVICE_STATUS_FAULT;
|
|
|
- SaveErrorInfo("通讯异常", Error_DevCommFailed);
|
|
|
- LogM("StartScan(), 通讯异常, nRet=%d, line=%d", nRet, __LINE__);
|
|
|
+ SaveErrorInfo(__LINE__, __FUNCTION__);
|
|
|
+ LogM("ScanIDAndSaveImage()->StartScan(), 异常, nRet=%d, line=%d", nRet, __LINE__);
|
|
|
return Error_DevCommFailed;
|
|
|
}
|
|
|
- LogM("StartScan()正常, nRet=%d, line=%d", nRet, __LINE__);
|
|
|
+ LogM("ScanIDAndSaveImage()->StartScan()正常, nRet=%d, line=%d", nRet, __LINE__);
|
|
|
int iFrontLen;
|
|
|
int iRearLen;
|
|
|
//--------------改为与厂家DEMO相似,采用NEW方式申请数组空间;
|
|
|
char* cFrontImgBuf = new char[MAX_PICTURE_SIZE];
|
|
|
char* cRearImgBuf = new char[MAX_PICTURE_SIZE];
|
|
|
- nRet=m_cBS_ID81IDCImpl.ReadCard(SecDeviceNum, cFrontImgBuf, cRearImgBuf, &iFrontLen, &iRearLen);
|
|
|
+ nRet=m_cBS_ID81IDCImpl.ReadCard(m_SecDeviceNum, cFrontImgBuf, cRearImgBuf, &iFrontLen, &iRearLen);
|
|
|
+ if(nRet != IDDIGITALCOPIER_NO_ERROR)
|
|
|
+ {
|
|
|
+ SaveErrorInfo(__LINE__, __FUNCTION__);
|
|
|
+ delete []cFrontImgBuf;
|
|
|
+ delete []cRearImgBuf;
|
|
|
+ return Error_DevCommFailed;
|
|
|
+ }
|
|
|
if (iFrontLen > 0)
|
|
|
{
|
|
|
- nRet = m_cBS_ID81IDCImpl.SaveToFile(SecDeviceNum, cFrontImgBuf, iFrontLen, FileNamefront, 1);
|
|
|
+ nRet = m_cBS_ID81IDCImpl.SaveToFile(m_SecDeviceNum, cFrontImgBuf, iFrontLen, FileNamefront, 1);
|
|
|
if (nRet != IDDIGITALCOPIER_NO_ERROR)
|
|
|
{
|
|
|
- SaveErrorInfo("通讯异常", Error_DevCommFailed);
|
|
|
- LogM("SaveToFile(), 通讯异常, nRet=%d,line=%d", Error_DevCommFailed, __LINE__);
|
|
|
+ SaveErrorInfo(__LINE__, __FUNCTION__);
|
|
|
+ LogM("ScanIDAndSaveImage()->SaveToFile(), 异常, nRet=%d,line=%d", Error_DevCommFailed, __LINE__);
|
|
|
delete []cFrontImgBuf;
|
|
|
delete []cRearImgBuf;
|
|
|
return Error_DevCommFailed;
|
|
|
}
|
|
|
- LogM("SaveToFile()正常, nRet=%d, iFrontLen=%d, line=%d", nRet, iFrontLen, __LINE__);
|
|
|
+ LogM("ScanIDAndSaveImage()->SaveToFile()正常, nRet=%d, iFrontLen=%d, line=%d", nRet, iFrontLen, __LINE__);
|
|
|
}
|
|
|
- LogM("ReadCard()正常, nRet=%d, iFrontLen = %d, line=%d", nRet, iFrontLen, __LINE__);
|
|
|
+ else
|
|
|
+ {
|
|
|
+ SaveErrorInfo("保存正面图片失败", DEP_NO_E_IDCERTIFICATE_SAVE_IMAGE_ERROR, __FUNCTION__, __LINE__);
|
|
|
+ SH_DeleteFileOrDirectory(FileNamefront);
|
|
|
+ SH_DeleteFileOrDirectory(FileNameback);
|
|
|
+ delete []cFrontImgBuf;
|
|
|
+ delete []cRearImgBuf;
|
|
|
+ return Error_DevCommFailed;
|
|
|
+ }
|
|
|
+ LogM("ScanIDAndSaveImage()->ReadCard()正常, nRet=%d, iFrontLen = %d, line=%d", nRet, iFrontLen, __LINE__);
|
|
|
if (iRearLen>0)
|
|
|
{
|
|
|
- nRet = m_cBS_ID81IDCImpl.SaveToFile(SecDeviceNum,cRearImgBuf,iRearLen,FileNameback,1);
|
|
|
+ nRet = m_cBS_ID81IDCImpl.SaveToFile(m_SecDeviceNum,cRearImgBuf,iRearLen,FileNameback,1);
|
|
|
if (nRet != IDDIGITALCOPIER_NO_ERROR)
|
|
|
{
|
|
|
- SaveErrorInfo("通讯异常", Error_DevCommFailed);
|
|
|
- LogM("SaveToFile(), 通讯异常, nRet=%d, iRearLen = %d, line=%d", Error_DevCommFailed, iRearLen, __LINE__);
|
|
|
+ SaveErrorInfo(__LINE__, __FUNCTION__);
|
|
|
+ LogM("ScanIDAndSaveImage()->SaveToFile(), 通讯异常, nRet=%d, iRearLen = %d, line=%d", Error_DevCommFailed, iRearLen, __LINE__);
|
|
|
delete []cFrontImgBuf;
|
|
|
delete []cRearImgBuf;
|
|
|
return Error_DevCommFailed;
|
|
|
}
|
|
|
- LogM("SaveToFile()正常, nRet=%d, iRearLen = %d, line=%d", nRet, iRearLen, __LINE__);
|
|
|
+ LogM("ScanIDAndSaveImage()->SaveToFile()正常, nRet=%d, iRearLen = %d, line=%d", nRet, iRearLen, __LINE__);
|
|
|
}
|
|
|
- LogM("ScanIDAndSaveImage(), nRet=%d", Error_Succeed);
|
|
|
+ else
|
|
|
+ {
|
|
|
+ SaveErrorInfo("保存背面图片失败", DEP_NO_E_IDCERTIFICATE_SAVE_IMAGE_ERROR, __FUNCTION__, __LINE__);
|
|
|
+ delete []cFrontImgBuf;
|
|
|
+ delete []cRearImgBuf;
|
|
|
+ return Error_DevCommFailed;
|
|
|
+ }
|
|
|
+ LogM("ScanIDAndSaveImage() OK, nRet=%d", Error_Succeed);
|
|
|
delete []cFrontImgBuf;
|
|
|
delete []cRearImgBuf;
|
|
|
return Error_Succeed;
|
|
@@ -1535,19 +1561,32 @@ ErrorCodeEnum IDCerClassImpl::QueryCardPos(int &pos)
|
|
|
LOG_FUNCTION();
|
|
|
LogM("QueryCardPos() Entry,line=%d", __LINE__);
|
|
|
|
|
|
+// if(!m_bDevOpen)
|
|
|
+// {
|
|
|
+// SaveErrorInfo("QueryCardPos()设备未打开", DEP_DEV_NOT_OPENED, __FUNCTION__, __LINE__);
|
|
|
+// LogM("QueryCardPos()设备未打开, line=%d", __LINE__);
|
|
|
+// return Error_DevNotAvailable;
|
|
|
+// }
|
|
|
+
|
|
|
DEVSTATUS m_DeviceStatus;
|
|
|
memset(&m_DeviceStatus, 0x00, sizeof(DEVSTATUS));
|
|
|
|
|
|
- int nRet = m_cBS_ID81IDCImpl.DeviceStatus(SecDeviceNum, &m_DeviceStatus);
|
|
|
- if (nRet == IDDIGITALCOPIER_PORT_ERROR)
|
|
|
+ int nRet = m_cBS_ID81IDCImpl.DeviceStatus(m_SecDeviceNum, &m_DeviceStatus);
|
|
|
+ if (nRet != IDDIGITALCOPIER_NO_ERROR)
|
|
|
{
|
|
|
sleep(1);
|
|
|
- DevOpen(SecDeviceNum);
|
|
|
- nRet = m_cBS_ID81IDCImpl.DeviceStatus(SecDeviceNum, &m_DeviceStatus);
|
|
|
- if (nRet == IDDIGITALCOPIER_PORT_ERROR)
|
|
|
+ ErrorCodeEnum RetCode = DevOpen(m_SecDeviceNum);
|
|
|
+// if (RetCode != Error_Succeed)
|
|
|
+// {
|
|
|
+// SaveErrorInfo("QueryCardPos()设备未打开", DEP_DEV_NOT_OPENED, __FUNCTION__, __LINE__);
|
|
|
+// LogM("QueryCardPos()设备未打开, line=%d", __LINE__);
|
|
|
+// return Error_DevNotAvailable;
|
|
|
+// }
|
|
|
+ nRet = m_cBS_ID81IDCImpl.DeviceStatus(m_SecDeviceNum, &m_DeviceStatus);
|
|
|
+ if (nRet != IDDIGITALCOPIER_NO_ERROR)
|
|
|
{
|
|
|
- SaveErrorInfo("通讯异常", Error_DevCommFailed);
|
|
|
- LogM("DeviceStatus(), 通讯异常, nRet=%d,line=%d", nRet, __LINE__);
|
|
|
+ SaveErrorInfo(__LINE__, __FUNCTION__);
|
|
|
+ LogM("QueryCardPos()->DeviceStatus()失败, nRet=%d,line=%d", nRet, __LINE__);
|
|
|
m_wDevStatus = DEVICE_STATUS_FAULT;
|
|
|
return Error_DevCommFailed;
|
|
|
}
|
|
@@ -1579,11 +1618,196 @@ ErrorCodeEnum IDCerClassImpl::QueryCardPos(int &pos)
|
|
|
|
|
|
|
|
|
//Private
|
|
|
-void IDCerClassImpl::SaveErrorInfo(CHAR* errMsg, int errCode)
|
|
|
+void IDCerClassImpl::SaveErrorInfo(CHAR* errMsg, int errCode, const CHAR* strFunc, int nLine)
|
|
|
{
|
|
|
- LOG_FUNCTION();
|
|
|
+
|
|
|
+ CHAR chJson[MAX_DEV_ERROR_MSG_LEN] = {0};
|
|
|
+ char chLastStr[MAX_DEV_ERROR_MSG_LEN] = {0};
|
|
|
+ int nErrCode = m_cBS_ID81IDCImpl.LastErrorCode();
|
|
|
+ m_cBS_ID81IDCImpl.LastErrorStr(chLastStr);
|
|
|
+ sprintf(chJson, "Func:%s,Line:%d,Msg:[%d]%s, %s", strFunc, nLine, nErrCode, chLastStr, errMsg);
|
|
|
memset(m_szErrMsg, 0, MAX_DEV_ERROR_MSG_LEN);
|
|
|
- sprintf(m_szErrMsg, "%s[%d]", errMsg, errCode);
|
|
|
+ sprintf(m_szErrMsg, "{\"Errcode\":%d,\"Description\":%s}", errCode,chJson);
|
|
|
+ LogM(m_szErrMsg);
|
|
|
+ sprintf(m_szErrMsg, "{\"Errcode\":%d,\"Description\":%s}", errCode,chJson);
|
|
|
+ /*
|
|
|
+ CHAR chJson[MAX_DEV_ERROR_MSG_LEN] = {0};
|
|
|
+ QJsonObject root_Obj;
|
|
|
+ QJsonDocument root_Doc;
|
|
|
+ char chLastStr[MAX_DEV_ERROR_MSG_LEN] = {0};
|
|
|
+ int nErrCode = m_cBS_ID81IDCImpl.LastErrorCode();
|
|
|
+ m_cBS_ID81IDCImpl.LastErrorStr(chLastStr);
|
|
|
+ sprintf(chJson, "Func:%s,Line:%d,Msg:[%d]%s, %s", strFunc, nLine, nErrCode, chLastStr, errMsg);
|
|
|
+
|
|
|
+ root_Obj.insert("ErrCode", errCode);
|
|
|
+ root_Obj.insert("Description", chJson);
|
|
|
+ root_Doc.setObject(root_Obj);
|
|
|
+ //QByteArray root_str = root_Doc.toJson(QJsonDocument::Compact); //紧凑格式
|
|
|
+ QByteArray root_str = root_Doc.toJson(QJsonDocument::Indented); //标准JSON格式 QString strJson(root_str);
|
|
|
+ QString strJson(root_str);
|
|
|
+ memset(m_szErrMsg, 0, MAX_DEV_ERROR_MSG_LEN);
|
|
|
+ sprintf(m_szErrMsg, strJson.toUtf8().data());
|
|
|
+ LogM(m_szErrMsg);
|
|
|
+ */
|
|
|
+}
|
|
|
+
|
|
|
+void IDCerClassImpl::SaveErrorInfo(int nLine, const char* chFunction)
|
|
|
+{
|
|
|
+ char chJson[MAX_DEV_ERROR_MSG_LEN] = {0};
|
|
|
+ char chLastStr[MAX_DEV_ERROR_MSG_LEN] = {0};
|
|
|
+ memset(m_szErrMsg, 0x00, MAX_DEV_ERROR_MSG_LEN);
|
|
|
+ int nErrCode = m_cBS_ID81IDCImpl.LastErrorCode();
|
|
|
+ short shErrCode;
|
|
|
+ m_cBS_ID81IDCImpl.LastErrorStr(chLastStr);
|
|
|
+
|
|
|
+ switch (nErrCode)
|
|
|
+ {
|
|
|
+ case IDDIGITALCOPIER_NO_ERROR:
|
|
|
+ shErrCode = DEP_SUCCESS;
|
|
|
+ sprintf(chJson, "Func:%s,Line:%d,Msg:[%d]%s, %s", chFunction, nLine, nErrCode, chLastStr, "正常");
|
|
|
+ break;
|
|
|
+ case IDDIGITALCOPIER_NO_DEVICE:
|
|
|
+ shErrCode = DEP_DEV_NOT_FOUND;
|
|
|
+ sprintf(chJson, "Func:%s,Line:%d,Msg:[%d]%s, %s", chFunction, nLine, nErrCode, chLastStr, "无设备");
|
|
|
+ break;
|
|
|
+ case IDDIGITALCOPIER_PORT_ERROR:
|
|
|
+ shErrCode = DEP_INVALID_PORT;
|
|
|
+ sprintf(chJson, "Func:%s,Line:%d,Msg:[%d]%s, %s", chFunction, nLine, nErrCode, chLastStr, "端口错误");
|
|
|
+ break;
|
|
|
+ case IDDIGITALCOPIER_TABPAR_NONE:
|
|
|
+ shErrCode = DEP_NO_E_IDCERTIFICATE_TABPAR_NONE;
|
|
|
+ sprintf(chJson, "Func:%s,Line:%d,Msg:[%d]%s, %s", chFunction, nLine, nErrCode, chLastStr, "参数文件错误");
|
|
|
+ break;
|
|
|
+ case IDDIGITALCOPIER_HAVE_NOT_INIT:
|
|
|
+ shErrCode = DEP_NO_E_IDCERTIFICATE_HAVE_NOT_INIT;
|
|
|
+ sprintf(chJson, "Func:%s,Line:%d,Msg:[%d]%s, %s", chFunction, nLine, nErrCode, chLastStr, "未初始化");
|
|
|
+ break;
|
|
|
+ case IDDIGITALCOPIER_INVALID_ARGUMENT:
|
|
|
+ shErrCode = DEP_INVALID_PARAMETER;
|
|
|
+ sprintf(chJson, "Func:%s,Line:%d,Msg:[%d]%s, %s", chFunction, nLine, nErrCode, chLastStr, "无效参数");
|
|
|
+ break;
|
|
|
+ case IDDIGITALCOPIER_TIMEOUT_ERROR:
|
|
|
+ shErrCode = DEP_TIMEOUT;
|
|
|
+ sprintf(chJson, "Func:%s,Line:%d,Msg:[%d]%s, %s", chFunction, nLine, nErrCode, chLastStr, "超时错误");
|
|
|
+ break;
|
|
|
+ case IDDIGITALCOPIER_STATUS_COVER_OPENED:
|
|
|
+ shErrCode = DEP_NO_E_IDCERTIFICATE_COVER_OPENED;
|
|
|
+ sprintf(chJson, "Func:%s,Line:%d,Msg:[%d]%s, %s", chFunction, nLine, nErrCode, chLastStr, "上盖打开");
|
|
|
+ break;
|
|
|
+ case IDDIGITALCOPIER_STATUS_PASSAGE_JAM:
|
|
|
+ shErrCode = DEP_NO_E_IDCERTIFICATE_PASSAGE_JAM;
|
|
|
+ sprintf(chJson, "Func:%s,Line:%d,Msg:[%d]%s, %s", chFunction, nLine, nErrCode, chLastStr, "塞卡");
|
|
|
+ break;
|
|
|
+ case IDDIGITALCOPIER_OUT_OF_MEMORY:
|
|
|
+ shErrCode = DEP_BUFFER_LIMIT_EXCEEDED;
|
|
|
+ sprintf(chJson, "Func:%s,Line:%d,Msg:[%d]%s, %s", chFunction, nLine, nErrCode, chLastStr, "内存溢出");
|
|
|
+ break;
|
|
|
+ case IDDIGITALCOPIER_NO_ID_DATA:
|
|
|
+ shErrCode = DEP_NO_E_IDCERTIFICATE_NO_ID_DATA;
|
|
|
+ sprintf(chJson, "Func:%s,Line:%d,Msg:[%d]%s, %s", chFunction, nLine, nErrCode, chLastStr, "没有二代证数据");
|
|
|
+ break;
|
|
|
+ case IDDIGITALCOPIER_NO_IMAGE_DATA:
|
|
|
+ shErrCode = DEP_NO_E_IDCERTIFICATE_NO_IMAGE_DATA;
|
|
|
+ sprintf(chJson, "Func:%s,Line:%d,Msg:[%d]%s, %s", chFunction, nLine, nErrCode, chLastStr, "没有图像数据");
|
|
|
+ break;
|
|
|
+ case IDDIGITALCOPIER_IMAGE_PROCESS_ERROR:
|
|
|
+ shErrCode = DEP_NO_E_IDCERTIFICATE_IMAGE_PROCESS_ERROR;
|
|
|
+ sprintf(chJson, "Func:%s,Line:%d,Msg:[%d]%s, %s", chFunction, nLine, nErrCode, chLastStr, "图像处理错误");
|
|
|
+ break;
|
|
|
+ case IDDIGITALCOPIER_IMAGE_JUDGE_DIRECTION_ERROR:
|
|
|
+ shErrCode = DEP_NO_E_IDCERTIFICATE_JUDGE_DIRECTION_ERROR;
|
|
|
+ sprintf(chJson, "Func:%s,Line:%d,Msg:[%d]%s, %s", chFunction, nLine, nErrCode, chLastStr, "判断图像方向错误");
|
|
|
+ break;
|
|
|
+ case IDDIGITALCOPIER_CLOSE_FAILED:
|
|
|
+ shErrCode = DEP_NO_E_IDCERTIFICATE_CLOSE_FAILED;
|
|
|
+ sprintf(chJson, "Func:%s,Line:%d,Msg:[%d]%s, %s", chFunction, nLine, nErrCode, chLastStr, "关闭端口失败");
|
|
|
+ break;
|
|
|
+ case IDDIGITALCOPIER_IDDATA_PROCESS_ERROR:
|
|
|
+ shErrCode = DEP_NO_E_IDCERTIFICATE_IDDATA_PROCESS_ERROR;
|
|
|
+ sprintf(chJson, "Func:%s,Line:%d,Msg:[%d]%s, %s", chFunction, nLine, nErrCode, chLastStr, "身份证电子信息处理错误");
|
|
|
+ break;
|
|
|
+ case IDDIGITALCOPIER_SENSORVALIDATE:
|
|
|
+ shErrCode = DEP_NO_E_IDCERTIFICATE_SENSORVALIDATE;
|
|
|
+ sprintf(chJson, "Func:%s,Line:%d,Msg:[%d]%s, %s", chFunction, nLine, nErrCode, chLastStr, "传感器校验错误");
|
|
|
+ break;
|
|
|
+ case IDDIGITALCOPIER_VOLTAGE_LOW:
|
|
|
+ shErrCode = DEP_NO_E_IDCERTIFICATE_VOLTAGE_LOW;
|
|
|
+ sprintf(chJson, "Func:%s,Line:%d,Msg:[%d]%s, %s", chFunction, nLine, nErrCode, chLastStr, "电压低");
|
|
|
+ break;
|
|
|
+ case IDDIGITALCOPIER_CIS_CORRECTION_ERROR:
|
|
|
+ shErrCode = DEP_NO_E_IDCERTIFICATE_CIS_CORRECTION_ERROR;
|
|
|
+ sprintf(chJson, "Func:%s,Line:%d,Msg:[%d]%s, %s", chFunction, nLine, nErrCode, chLastStr, "校正错误");
|
|
|
+ break;
|
|
|
+ case IDDIGITALCOPIER_NO_CARD:
|
|
|
+ shErrCode = DEP_NO_E_IDCERTIFICATE_NO_CARD;
|
|
|
+ sprintf(chJson, "Func:%s,Line:%d,Msg:[%d]%s, %s", chFunction, nLine, nErrCode, chLastStr, "无卡");
|
|
|
+ break;
|
|
|
+ case IDDIGITALCOPIER_FIRMWARE_ERROR:
|
|
|
+ shErrCode = DEP_NO_E_IDCERTIFICATE_FIRMWARE_ERROR;
|
|
|
+ sprintf(chJson, "Func:%s,Line:%d,Msg:[%d]%s, %s", chFunction, nLine, nErrCode, chLastStr, "未知错误固件错误");
|
|
|
+ break;
|
|
|
+ case IDDIGITALCOPIER_SAVE_IMAGE_ERROR:
|
|
|
+ shErrCode = DEP_NO_E_IDCERTIFICATE_SAVE_IMAGE_ERROR;
|
|
|
+ sprintf(chJson, "Func:%s,Line:%d,Msg:[%d]%s, %s", chFunction, nLine, nErrCode, chLastStr, "保存位图错误");
|
|
|
+ break;
|
|
|
+ case IDDIGITALCOPIER_POWER_OFF:
|
|
|
+ shErrCode = DEP_NO_E_IDCERTIFICATE_POWER_OFF;
|
|
|
+ sprintf(chJson, "Func:%s,Line:%d,Msg:[%d]%s, %s", chFunction, nLine, nErrCode, chLastStr, "掉电错误");
|
|
|
+ break;
|
|
|
+ case IDDIGITALCOPIER_INPUT_BOOT:
|
|
|
+ shErrCode = DEP_NO_E_IDCERTIFICATE_INPUT_BOOT;
|
|
|
+ sprintf(chJson, "Func:%s,Line:%d,Msg:[%d]%s, %s", chFunction, nLine, nErrCode, chLastStr, "BOOT错误");
|
|
|
+ break;
|
|
|
+ case IDDIGITALCOPIER_BUTTON_UP:
|
|
|
+ shErrCode = DEP_NO_E_IDCERTIFICATE_BUTTON_UP;
|
|
|
+ sprintf(chJson, "Func:%s,Line:%d,Msg:[%d]%s, %s", chFunction, nLine, nErrCode, chLastStr, "按键抬起");
|
|
|
+ break;
|
|
|
+ case IDDIGITALCOPIER_RECOGNISE_FAILED:
|
|
|
+ shErrCode = DEP_NO_E_IDCERTIFICATE_RECOGNISE_FAILED;
|
|
|
+ sprintf(chJson, "Func:%s,Line:%d,Msg:[%d]%s, %s", chFunction, nLine, nErrCode, chLastStr, "识别错误");
|
|
|
+ break;
|
|
|
+ case IDDIGITALCOPIER_SCAN_ERROR:
|
|
|
+ shErrCode = DEP_NO_E_IDCERTIFICATE_SCAN_ERROR;
|
|
|
+ sprintf(chJson, "Func:%s,Line:%d,Msg:[%d]%s, %s", chFunction, nLine, nErrCode, chLastStr, "扫描错误");
|
|
|
+ break;
|
|
|
+ case IDDIGITALCOPIER_FEED_ERROR:
|
|
|
+ shErrCode = DEP_NO_E_IDCERTIFICATE_FEED_ERROR;
|
|
|
+ sprintf(chJson, "Func:%s,Line:%d,Msg:[%d]%s, %s", chFunction, nLine, nErrCode, chLastStr, "走卡错误");
|
|
|
+ break;
|
|
|
+ case IDDIGITALCOPIER_MAX_CODE:
|
|
|
+ shErrCode = DEP_NO_E_IDCERTIFICATE_MAX_CODE;
|
|
|
+ sprintf(chJson, "Func:%s,Line:%d,Msg:[%d]%s, %s", chFunction, nLine, nErrCode, chLastStr, "最大错误码");
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ shErrCode = DEP_COMMUNICATION_FAILED;
|
|
|
+ sprintf(chJson, "Func:%s,Line:%d,Msg:[%d]%s, %s", chFunction, nLine, nErrCode, chLastStr, "通讯异常");
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ sprintf(m_szErrMsg, "{\"Errcode\":%d,\"Description\":%s}", shErrCode,chJson);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /*
|
|
|
+ try
|
|
|
+ {
|
|
|
+ QJsonObject root_Obj;
|
|
|
+ QJsonDocument root_Doc;
|
|
|
+ root_Obj.insert("ErrCode", shErrCode);
|
|
|
+ root_Obj.insert("Description", chJson);
|
|
|
+ root_Doc.setObject(root_Obj);
|
|
|
+ //QByteArray root_str = root_Doc.toJson(QJsonDocument::Compact); //紧凑格式
|
|
|
+ QByteArray root_str = root_Doc.toJson(QJsonDocument::Indented); //标准JSON格式 QString strJson(root_str);
|
|
|
+ QString strJson(root_str);
|
|
|
+ memset(m_szErrMsg, 0, MAX_DEV_ERROR_MSG_LEN);
|
|
|
+ sprintf(m_szErrMsg, strJson.toUtf8().data());
|
|
|
+ LogM(m_szErrMsg);
|
|
|
+ }
|
|
|
+ catch (std::exception &ex)
|
|
|
+ {
|
|
|
+ sprintf(m_szErrMsg, "{\"Errcode\":%d,\"Description\":%s}", shErrCode,chJson);
|
|
|
+ }
|
|
|
+ LogM(m_szErrMsg);
|
|
|
+ */
|
|
|
}
|
|
|
|
|
|
int IDCerClassImpl::string_format(std::string &str, const std::string fmt, ...)
|
|
@@ -1651,43 +1875,56 @@ ErrorCodeEnum IDCerClassImpl::OnCheckCard()
|
|
|
DEVSTATUS m_DeviceStatus;
|
|
|
|
|
|
memset(&m_DeviceStatus, 0x00, sizeof(DEVSTATUS));
|
|
|
- nRet = m_cBS_ID81IDCImpl.DeviceStatus(SecDeviceNum, &m_DeviceStatus);
|
|
|
+ nRet = m_cBS_ID81IDCImpl.DeviceStatus(m_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)
|
|
|
+ DevOpen(m_SecDeviceNum);
|
|
|
+ nRet = m_cBS_ID81IDCImpl.DeviceStatus(m_SecDeviceNum, &m_DeviceStatus);
|
|
|
+ if (nRet != IDDIGITALCOPIER_NO_ERROR)
|
|
|
{
|
|
|
- SaveErrorInfo("通讯异常", Error_DevCommFailed);
|
|
|
- LogM("DeviceStatus(), 通讯异常, nRet=%d", nRet);
|
|
|
+ SaveErrorInfo(__LINE__, __FUNCTION__);
|
|
|
+ LogM("OnCheckCard()->DeviceStatus()失败, nRet=%d", nRet);
|
|
|
m_wDevStatus = DEVICE_STATUS_FAULT;
|
|
|
return Error_DevCommFailed;
|
|
|
}
|
|
|
}
|
|
|
- nRet = m_cBS_ID81IDCImpl.CheckIdCard(SecDeviceNum, 3000);
|
|
|
+ nRet = m_cBS_ID81IDCImpl.CheckIdCard(m_SecDeviceNum, 3000);
|
|
|
if ((IDDIGITALCOPIER_TIMEOUT_ERROR == nRet) ||
|
|
|
(IDDIGITALCOPIER_NO_CARD == nRet))
|
|
|
{
|
|
|
- SaveErrorInfo("未检测到卡", Error_Unexpect);
|
|
|
- LogE("IDCerAuthenticate(),未检测到卡, nRet=%d, SecDeviceNum=%d", nRet, SecDeviceNum);
|
|
|
+ SaveErrorInfo("IDCerAuthenticate()->CheckIdCard()未检测到卡", DEP_NO_E_IDCERTIFICATE_NO_CARD, __FUNCTION__, __LINE__);
|
|
|
+ LogE("IDCerAuthenticate()->CheckIdCard(),未检测到卡, nRet=%d, m_SecDeviceNum=%d", nRet, m_SecDeviceNum);
|
|
|
return Error_Unexpect;
|
|
|
}
|
|
|
else if (IDDIGITALCOPIER_STATUS_PASSAGE_JAM == nRet)
|
|
|
{
|
|
|
char err[MAX_DEV_ERROR_MSG_LEN] = {0};
|
|
|
- sprintf(err, "塞卡%d", nRet);
|
|
|
- SaveErrorInfo(err, Error_Unexpect);
|
|
|
- m_cBS_ID81IDCImpl.ResetWithAction(SecDeviceNum, 3);
|
|
|
- LogE("IDCerAuthenticate(),塞卡后软复位,nRet=%d, SecDeviceNum=%d,line=%d", nRet, SecDeviceNum, __LINE__);
|
|
|
+ sprintf(err, "IDCerAuthenticate()->CheckIdCard()塞卡%d", nRet);
|
|
|
+ SaveErrorInfo(err, DEP_NO_E_IDCERTIFICATE_PASSAGE_JAM, __FUNCTION__, __LINE__);
|
|
|
+ sleep(1);
|
|
|
+ nRet = m_cBS_ID81IDCImpl.ResetWithAction(m_SecDeviceNum, 3);
|
|
|
+ if(IDDIGITALCOPIER_STATUS_PASSAGE_JAM == nRet)
|
|
|
+ {
|
|
|
+ sleep(1);
|
|
|
+ m_cBS_ID81IDCImpl.ResetWithAction(m_SecDeviceNum, 2);
|
|
|
+ nRet = m_cBS_ID81IDCImpl.CheckIdCard(m_SecDeviceNum, 3000);
|
|
|
+ LogE("IDCerAuthenticate(),塞卡后软复位重新check,nRet=%d, m_SecDeviceNum=%d,line=%d", nRet, m_SecDeviceNum, __LINE__);
|
|
|
+ if(nRet == IDDIGITALCOPIER_NO_ERROR)
|
|
|
+ return Error_Succeed;
|
|
|
+ else {
|
|
|
+ SaveErrorInfo(__LINE__, __FUNCTION__);
|
|
|
+ sleep(1);
|
|
|
+ m_cBS_ID81IDCImpl.ResetWithAction(m_SecDeviceNum, 0);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ SaveErrorInfo(__LINE__, __FUNCTION__);
|
|
|
return Error_Unexpect;
|
|
|
}
|
|
|
else if (IDDIGITALCOPIER_NO_ERROR != nRet)
|
|
|
{
|
|
|
- char err[MAX_DEV_ERROR_MSG_LEN] = {0};
|
|
|
- sprintf(err, "通讯失败%d", nRet);
|
|
|
- SaveErrorInfo(err, Error_DevConnFailed);
|
|
|
- LogE("IDCerAuthenticate(),通讯失败,nRet=%d, SecDeviceNum=%d,line=%d", nRet, SecDeviceNum, __LINE__);
|
|
|
+ SaveErrorInfo(__LINE__, __FUNCTION__);
|
|
|
+ LogE("IDCerAuthenticate(),通讯失败,nRet=%d, m_SecDeviceNum=%d,line=%d", nRet, m_SecDeviceNum, __LINE__);
|
|
|
return Error_DevConnFailed;
|
|
|
}
|
|
|
return Error_Succeed;
|