|
@@ -41,7 +41,7 @@ CardIssuerClassImpl::CardIssuerClassImpl()
|
|
|
//LOG4VTM_FUNCTION();
|
|
|
|
|
|
LOG4VTM(WARN, "<CardIssuerNantian> - "
|
|
|
- << "cardissuer.Nantian.1.1.so - 1.0.0.3");
|
|
|
+ << "cardissuer.Nantian.1.1.so - 1.0.0.5");
|
|
|
FunSum = 0;
|
|
|
if (!LoadNTDRVDLL())
|
|
|
return;
|
|
@@ -99,6 +99,50 @@ bool CardIssuerClassImpl::LoadNTDRVDLL()
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
+int CardIssuerClassImpl::ErrorInfo(int iRet,char * Msg)
|
|
|
+{
|
|
|
+ int ErrIret = Error_Hardware;
|
|
|
+ char ErrorInfo[100]="";
|
|
|
+ memset(m_errorInfo.szErrMsg, 0, sizeof(m_errorInfo.szErrMsg));
|
|
|
+ switch (iRet)
|
|
|
+ {
|
|
|
+ case E_CARDDISPENSER_CARDJAM:
|
|
|
+ strcpy(ErrorInfo, "hardware error,media jamed");
|
|
|
+ break;
|
|
|
+ case E_CARDDISPENSER_SHUTTERFAIL:
|
|
|
+ strcpy(ErrorInfo, "hardware error,shutter error");
|
|
|
+ break;
|
|
|
+ case E_CARDDISPENSER_NOMEDIA:
|
|
|
+ strcpy(ErrorInfo, "Media error(No media)");
|
|
|
+ ErrIret = Error_DevMedia;
|
|
|
+ break;
|
|
|
+ case E_CARDDISPENSER_CARDTOOLONG:
|
|
|
+ strcpy(ErrorInfo, "Media error(Media to long)");
|
|
|
+ ErrIret = Error_DevMedia;
|
|
|
+ break;
|
|
|
+ case E_CARDDISPENSER_CARDTOOSHORT:
|
|
|
+ strcpy(ErrorInfo, "Media error(Media to short)");
|
|
|
+ ErrIret = Error_DevMedia;
|
|
|
+ break;
|
|
|
+ case E_CARDDISPENSER_INVALIDMEDIA:
|
|
|
+ strcpy(ErrorInfo, "Media error(Data lack,unrecognized and so on)");
|
|
|
+ ErrIret = Error_DevMedia;
|
|
|
+ break;
|
|
|
+ case E_CARDDISPENSER_DATAMISSING:
|
|
|
+ strcpy(ErrorInfo, "Media error(Data lack,unrecognized and so on)");
|
|
|
+ ErrIret = Error_DevMedia;
|
|
|
+ break;
|
|
|
+ case E_CARDDISPENSER_RETIANBINFULL:
|
|
|
+ strcpy(ErrorInfo, "RetianBin Full");
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ strcpy(ErrorInfo, "hardware error");
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ sprintf(m_errorInfo.szErrMsg, "FunMsg:%s,ErrorInfo:%s",Msg,ErrorInfo);
|
|
|
+ m_errorInfo.dwErrMsgLen = strlen(m_errorInfo.szErrMsg);
|
|
|
+ return ErrIret;
|
|
|
+}
|
|
|
ErrorCodeEnum CardIssuerClassImpl::GetDevCategory(DevCategoryInfo &devCategory)
|
|
|
{
|
|
|
mtx.lock();
|
|
@@ -137,7 +181,7 @@ ErrorCodeEnum CardIssuerClassImpl::Reset()
|
|
|
//复位设备
|
|
|
char *sReset[10] = {NULL};
|
|
|
char PowerOnFlag[10] = "1";
|
|
|
- char PowerOffFlag[10] = "3";
|
|
|
+ char PowerOffFlag[10] = "1";
|
|
|
sReset[1] = PowerOnFlag;
|
|
|
sReset[2] = PowerOffFlag;
|
|
|
iRet = DRVCardDispenser->ResetDev(3, sReset);
|
|
@@ -145,10 +189,7 @@ ErrorCodeEnum CardIssuerClassImpl::Reset()
|
|
|
{
|
|
|
LOG4VTM(ERROR, "<Reset> - "
|
|
|
<< "ResetDev-return:" << iRet);
|
|
|
- strcpy(m_errorInfo.szErrMsg, "hardware error");
|
|
|
- m_errorInfo.dwErrMsgLen = strlen(m_errorInfo.szErrMsg);
|
|
|
- iRet = Error_Hardware;
|
|
|
- throw(iRet);
|
|
|
+ throw(ErrorInfo(iRet,"ResetDev Error"));
|
|
|
}
|
|
|
iRet = Error_Succeed;
|
|
|
}
|
|
@@ -255,7 +296,7 @@ ErrorCodeEnum CardIssuerClassImpl::DevOpen(DWORD dwPort, DWORD dwBaudRate)
|
|
|
//复位设备
|
|
|
char *sReset[10] = {NULL};
|
|
|
char PowerOnFlag[10] = "1";
|
|
|
- char PowerOffFlag[10] = "3";
|
|
|
+ char PowerOffFlag[10] = "1";
|
|
|
sReset[1] = PowerOnFlag;
|
|
|
sReset[2] = PowerOffFlag;
|
|
|
iRet = DRVCardDispenser->ResetDev(3, sReset);
|
|
@@ -263,10 +304,7 @@ ErrorCodeEnum CardIssuerClassImpl::DevOpen(DWORD dwPort, DWORD dwBaudRate)
|
|
|
{
|
|
|
LOG4VTM(ERROR, "<DevOpen> - "
|
|
|
<< "ResetDev-return:" << iRet);
|
|
|
- strcpy(m_errorInfo.szErrMsg, "hardware error");
|
|
|
- m_errorInfo.dwErrMsgLen = strlen(m_errorInfo.szErrMsg);
|
|
|
- iRet = Error_Hardware;
|
|
|
- throw(iRet);
|
|
|
+ throw(ErrorInfo(iRet,"Open ResetDev Error"));
|
|
|
}
|
|
|
|
|
|
int mSupplyBin = 2, mRetainBin = 1, mHoldBin = 0;
|
|
@@ -469,6 +507,19 @@ ErrorCodeEnum CardIssuerClassImpl::MoveCard(CardPosEnum eCardPos, int hopperNo)
|
|
|
mtx.lock();
|
|
|
|
|
|
int iRet = Error_Succeed;
|
|
|
+
|
|
|
+ //***设备状态查询
|
|
|
+ char sDevice[10] = "";
|
|
|
+ char sMedia[10] = "";
|
|
|
+ char sChipPower[10] = "";
|
|
|
+ char sRetainCount[10] = "";
|
|
|
+ char sShutter[10] = "";
|
|
|
+ char *sStatus[100] = {NULL};
|
|
|
+ sStatus[1] = sDevice;
|
|
|
+ sStatus[2] = sMedia;
|
|
|
+ sStatus[4] = sChipPower;
|
|
|
+ sStatus[8] = sRetainCount;
|
|
|
+ sStatus[16] = sShutter;
|
|
|
try
|
|
|
{
|
|
|
memset(m_errorInfo.szErrMsg, 0, sizeof(m_errorInfo.szErrMsg));
|
|
@@ -483,18 +534,7 @@ ErrorCodeEnum CardIssuerClassImpl::MoveCard(CardPosEnum eCardPos, int hopperNo)
|
|
|
LOG4VTM(WARN, "<MoveCard> - "
|
|
|
<< "MoveCard-eCardPos:" << eCardPos);
|
|
|
|
|
|
- //***设备状态查询
|
|
|
- char sDevice[10] = "";
|
|
|
- char sMedia[10] = "";
|
|
|
- char sChipPower[10] = "";
|
|
|
- char sRetainCount[10] = "";
|
|
|
- char sShutter[10] = "";
|
|
|
- char *sStatus[100] = {NULL};
|
|
|
- sStatus[1] = sDevice;
|
|
|
- sStatus[2] = sMedia;
|
|
|
- sStatus[4] = sChipPower;
|
|
|
- sStatus[8] = sRetainCount;
|
|
|
- sStatus[16] = sShutter;
|
|
|
+ //查询状态
|
|
|
DRVCardDispenser->GetDevStatus(0, sStatus);
|
|
|
if (stoi(sDevice) != CARDDISPENSER_DEVONLINE)
|
|
|
{
|
|
@@ -519,6 +559,10 @@ ErrorCodeEnum CardIssuerClassImpl::MoveCard(CardPosEnum eCardPos, int hopperNo)
|
|
|
iRet = Error_Param;
|
|
|
throw(iRet);
|
|
|
}
|
|
|
+ if ((atoi(sMedia) == CARDDISPENSER_MEDIAENTERING))
|
|
|
+ {
|
|
|
+ throw(Error_Succeed);
|
|
|
+ }
|
|
|
if ((atoi(sMedia) == CARDDISPENSER_MEDIALATCHED) ||
|
|
|
(atoi(sChipPower) == CARDDISPENSER_CHIPONLINE) ||
|
|
|
(atoi(sChipPower) == CARDDISPENSER_CHIPBUSY))
|
|
@@ -539,11 +583,9 @@ ErrorCodeEnum CardIssuerClassImpl::MoveCard(CardPosEnum eCardPos, int hopperNo)
|
|
|
{
|
|
|
LOG4VTM(ERROR, "<MoveCard> - "
|
|
|
<< "EjectCard-return:" << iRet);
|
|
|
- strcpy(m_errorInfo.szErrMsg, "device EjectCard Fail!");
|
|
|
- m_errorInfo.dwErrMsgLen = strlen(m_errorInfo.szErrMsg);
|
|
|
- iRet = Error_Hardware;
|
|
|
- throw(iRet);
|
|
|
+ throw(ErrorInfo(iRet,"Dev EjectCard Error"));
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
break;
|
|
|
//吞卡
|
|
@@ -592,10 +634,7 @@ ErrorCodeEnum CardIssuerClassImpl::MoveCard(CardPosEnum eCardPos, int hopperNo)
|
|
|
goto STARTRETAIN;
|
|
|
}
|
|
|
//m_trace->WriteTrace(CILIXTRACE_L_INFO,"MoveCard","CI_MOVECARD_BACK_NOT_HOLD.tryTime:%d",tryTime);
|
|
|
- strcpy(m_errorInfo.szErrMsg, "device RetainCard Fail!");
|
|
|
- m_errorInfo.dwErrMsgLen = strlen(m_errorInfo.szErrMsg);
|
|
|
- iRet = Error_Hardware;
|
|
|
- throw(iRet);
|
|
|
+ throw(ErrorInfo(iRet,"Dev RetainCard Error"));
|
|
|
}
|
|
|
}
|
|
|
break;
|
|
@@ -614,10 +653,7 @@ ErrorCodeEnum CardIssuerClassImpl::MoveCard(CardPosEnum eCardPos, int hopperNo)
|
|
|
{
|
|
|
LOG4VTM(ERROR, "<MoveCard> - "
|
|
|
<< "Dispense-return:" << iRet);
|
|
|
- strcpy(m_errorInfo.szErrMsg, "device dispenser card error");
|
|
|
- m_errorInfo.dwErrMsgLen = strlen(m_errorInfo.szErrMsg);
|
|
|
- iRet = Error_Hardware;
|
|
|
- throw(iRet);
|
|
|
+ throw(ErrorInfo(iRet,"Dev Dispense Error"));
|
|
|
}
|
|
|
}
|
|
|
break;
|
|
@@ -627,6 +663,37 @@ ErrorCodeEnum CardIssuerClassImpl::MoveCard(CardPosEnum eCardPos, int hopperNo)
|
|
|
{
|
|
|
iRet = eret;
|
|
|
}
|
|
|
+ //方法返回前查询一次状态
|
|
|
+ //查询介质状态
|
|
|
+ memset(sMedia,0,sizeof(sMedia));
|
|
|
+ DRVCardDispenser->GetDevStatus(2, sStatus);
|
|
|
+ switch ((atoi(sMedia)))
|
|
|
+ {
|
|
|
+ case CARDDISPENSER_MEDIALATCHED:
|
|
|
+ case CARDDISPENSER_MEDIAPRESENT:
|
|
|
+ {
|
|
|
+ this->statusCache.eMedia = CI_MEDIA_PRESENT;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case CARDDISPENSER_MEDIANOTPRESENT:
|
|
|
+ {
|
|
|
+ this->statusCache.eMedia = CI_MEDIA_NOTPRESENT;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case CARDDISPENSER_MEDIAJAMMED:
|
|
|
+ this->statusCache.eMedia = CI_MEDIA_JAMMED;
|
|
|
+ break;
|
|
|
+ case CARDDISPENSER_MEDIAENTERING:
|
|
|
+ {
|
|
|
+ this->statusCache.eMedia = CI_MEDIA_ENTERING;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ {
|
|
|
+ this->statusCache.eMedia = CI_MEDIA_NOTPRESENT;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ }
|
|
|
mtx.unlock();
|
|
|
return (ErrorCodeEnum)iRet;
|
|
|
}
|
|
@@ -673,10 +740,7 @@ ErrorCodeEnum CardIssuerClassImpl::SetCardInType(CardInEnum eCardIn)
|
|
|
{
|
|
|
LOG4VTM(ERROR, "<SetCardInType> - "
|
|
|
<< "InsertCard-return:" << iRet);
|
|
|
- strcpy(m_errorInfo.szErrMsg, "hardware error");
|
|
|
- m_errorInfo.dwErrMsgLen = strlen(m_errorInfo.szErrMsg);
|
|
|
- iRet = Error_Hardware;
|
|
|
- throw(iRet);
|
|
|
+ throw(ErrorInfo(iRet,"Dev InsertCard Error"));
|
|
|
}
|
|
|
|
|
|
iRet = Error_Succeed;
|
|
@@ -877,9 +941,7 @@ ErrorCodeEnum CardIssuerClassImpl::SetRetractCounter(DWORD dwCount)
|
|
|
|
|
|
if (ierr < 0)
|
|
|
{
|
|
|
- strcpy(m_errorInfo.szErrMsg, "hardware error");
|
|
|
- m_errorInfo.dwErrMsgLen = strlen(m_errorInfo.szErrMsg);
|
|
|
- iRet = Error_Hardware;
|
|
|
+ return (ErrorCodeEnum)ErrorInfo(iRet,"Dev SetRetainCount Error");
|
|
|
}
|
|
|
}
|
|
|
mtx.unlock();
|
|
@@ -904,15 +966,13 @@ ErrorCodeEnum CardIssuerClassImpl::ActiveICCard()
|
|
|
int iATR = 0;
|
|
|
|
|
|
int ierr = 0;
|
|
|
- iRet = DRVCardDispenser->ICCPower(2, (char *)sATR, &iATR);
|
|
|
+ iRet = DRVCardDispenser->ICCPower(3, (char *)sATR, &iATR);
|
|
|
|
|
|
if (iRet < 0)
|
|
|
{
|
|
|
LOG4VTM(ERROR, "<ActiveICCard> - "
|
|
|
<< "ICCPower-return:" << iRet);
|
|
|
- strcpy(m_errorInfo.szErrMsg, "hardware error");
|
|
|
- m_errorInfo.dwErrMsgLen = strlen(m_errorInfo.szErrMsg);
|
|
|
- iRet = Error_Hardware;
|
|
|
+ return (ErrorCodeEnum)ErrorInfo(iRet,"Dev ICCPower Error");
|
|
|
}
|
|
|
mtx.unlock();
|
|
|
return (ErrorCodeEnum)iRet;
|
|
@@ -937,9 +997,7 @@ ErrorCodeEnum CardIssuerClassImpl::ContactIC()
|
|
|
{
|
|
|
LOG4VTM(ERROR, "<ContactIC> - "
|
|
|
<< "ICCPower-return:" << iRet);
|
|
|
- strcpy(m_errorInfo.szErrMsg, "hardware error");
|
|
|
- m_errorInfo.dwErrMsgLen = strlen(m_errorInfo.szErrMsg);
|
|
|
- iRet = Error_Hardware;
|
|
|
+ return (ErrorCodeEnum)ErrorInfo(iRet,"Dev ICCPower Error");
|
|
|
}
|
|
|
mtx.unlock();
|
|
|
return (ErrorCodeEnum)iRet;
|
|
@@ -960,9 +1018,7 @@ ErrorCodeEnum CardIssuerClassImpl::ReleaseIC()
|
|
|
{
|
|
|
LOG4VTM(ERROR, "<ReleaseIC> - "
|
|
|
<< "ICCPower-return:" << iRet);
|
|
|
- strcpy(m_errorInfo.szErrMsg, "hardware error");
|
|
|
- m_errorInfo.dwErrMsgLen = strlen(m_errorInfo.szErrMsg);
|
|
|
- iRet = Error_Hardware;
|
|
|
+ return (ErrorCodeEnum)ErrorInfo(iRet,"Dev ICCPower Error");
|
|
|
}
|
|
|
mtx.unlock();
|
|
|
return (ErrorCodeEnum)iRet;
|
|
@@ -989,9 +1045,7 @@ ErrorCodeEnum CardIssuerClassImpl::WarmReset()
|
|
|
{
|
|
|
LOG4VTM(ERROR, "<WarmReset> - "
|
|
|
<< "ICCPower-return:" << iRet);
|
|
|
- strcpy(m_errorInfo.szErrMsg, "hardware error");
|
|
|
- m_errorInfo.dwErrMsgLen = strlen(m_errorInfo.szErrMsg);
|
|
|
- iRet = Error_Hardware;
|
|
|
+ return (ErrorCodeEnum)ErrorInfo(iRet,"Dev ICCPower Error");
|
|
|
}
|
|
|
mtx.unlock();
|
|
|
return (ErrorCodeEnum)iRet;
|
|
@@ -1024,10 +1078,7 @@ ErrorCodeEnum CardIssuerClassImpl::ICCommand(CmdInfo sendBuf, CmdInfo &recvBuf)
|
|
|
{
|
|
|
LOG4VTM(ERROR, "<ICCommand> - "
|
|
|
<< "ICCTransmit-return:" << iRet);
|
|
|
- strcpy(m_errorInfo.szErrMsg, "hardware error");
|
|
|
- m_errorInfo.dwErrMsgLen = strlen(m_errorInfo.szErrMsg);
|
|
|
- iRet = Error_Hardware;
|
|
|
- throw(iRet);
|
|
|
+ throw(ErrorInfo(iRet,"Dev ICCTransmit Error"));
|
|
|
}
|
|
|
if (szRecvData[iRecvLength - 2] == 0x61)
|
|
|
{
|
|
@@ -1075,9 +1126,7 @@ ErrorCodeEnum CardIssuerClassImpl::DeactivateICCard()
|
|
|
{
|
|
|
LOG4VTM(ERROR, "<DeactivateICCard> - "
|
|
|
<< "ICCPower-return:" << iRet);
|
|
|
- strcpy(m_errorInfo.szErrMsg, "hardware error");
|
|
|
- m_errorInfo.dwErrMsgLen = strlen(m_errorInfo.szErrMsg);
|
|
|
- iRet = Error_Hardware;
|
|
|
+ return (ErrorCodeEnum)ErrorInfo(iRet,"Dev ICCPower Error");
|
|
|
}
|
|
|
mtx.unlock();
|
|
|
return (ErrorCodeEnum)iRet;
|
|
@@ -1152,7 +1201,7 @@ ErrorCodeEnum CardIssuerClassImpl::DevOpenEx(DWORD dwPort, DWORD dwBaudRate, BYT
|
|
|
//复位设备
|
|
|
char *sReset[10] = {NULL};
|
|
|
char PowerOnFlag[10] = "1";
|
|
|
- char PowerOffFlag[10] = "3";
|
|
|
+ char PowerOffFlag[10] = "1";
|
|
|
sReset[1] = PowerOnFlag;
|
|
|
sReset[2] = PowerOffFlag;
|
|
|
iRet = DRVCardDispenser->ResetDev(3, sReset);
|
|
@@ -1160,10 +1209,7 @@ ErrorCodeEnum CardIssuerClassImpl::DevOpenEx(DWORD dwPort, DWORD dwBaudRate, BYT
|
|
|
{
|
|
|
LOG4VTM(ERROR, "<DevOpenEx> - "
|
|
|
<< "ResetDev-return:" << iRet);
|
|
|
- strcpy(m_errorInfo.szErrMsg, "hardware error");
|
|
|
- m_errorInfo.dwErrMsgLen = strlen(m_errorInfo.szErrMsg);
|
|
|
- iRet = Error_Hardware;
|
|
|
- throw(iRet);
|
|
|
+ throw(ErrorInfo(iRet,"Open ResetDev Error"));
|
|
|
}
|
|
|
int mSupplyBin = 2, mRetainBin = 1, mHoldBin = 0;
|
|
|
|