|
@@ -76,7 +76,6 @@ enum EvtType
|
|
|
USER_EVT_EXIT,
|
|
|
USER_EVT_GET_DEVINFO,
|
|
|
USER_EVT_ERROR,
|
|
|
- USER_EVT_WAIT_FETCH_IDCARD_FINISHED,
|
|
|
USER_EVT_INIT_FINISHED,
|
|
|
USER_EVT_TODO_INIT,
|
|
|
USER_EVT_TODO_INIT_FINISHED,
|
|
@@ -115,6 +114,26 @@ struct CtxInfo
|
|
|
LPVOID pCtx;
|
|
|
};
|
|
|
|
|
|
+struct IDCerTextData
|
|
|
+{
|
|
|
+ unsigned char name[1024];
|
|
|
+ unsigned char sex[1024];
|
|
|
+ unsigned char nation[1024];
|
|
|
+ unsigned char birthday[1024];
|
|
|
+ unsigned char address[1024];
|
|
|
+ unsigned char idno[1024];
|
|
|
+ unsigned char department[1024];
|
|
|
+ unsigned char startDate[1024];
|
|
|
+ unsigned char endDate[1024];
|
|
|
+ unsigned char englishName[1024];
|
|
|
+ unsigned char nationality[1024];
|
|
|
+ unsigned char idVersion[1024];
|
|
|
+ unsigned char idType[1024];
|
|
|
+ unsigned char reserved[1024];
|
|
|
+ unsigned char englishNameEx[1024]; //英文名备用字段
|
|
|
+ unsigned char IssuedSN[1024]; //换证次数
|
|
|
+};
|
|
|
+
|
|
|
class CancelReadEvent : public FSMEvent
|
|
|
{
|
|
|
public:
|
|
@@ -167,46 +186,38 @@ public:
|
|
|
class CIDCertFSM : public CCommDevFSM<CIDCertFSM, IDCerClass>
|
|
|
{
|
|
|
public:
|
|
|
- enum {s0,s1,s2,s3,s4,s5};
|
|
|
+ enum {s0,s1,s2,s3};
|
|
|
|
|
|
BEGIN_FSM_STATE(CIDCertFSM)
|
|
|
FSM_STATE_ENTRY(s0,"Normal",s0_on_entry,s0_on_exit,s0_on_event)
|
|
|
FSM_STATE_ENTRY(s1,"Reading",s1_on_entry,s1_on_exit,s1_on_event)
|
|
|
FSM_STATE_ENTRY(s2,"Fail",s2_on_entry,s2_on_exit,s2_on_event)
|
|
|
- FSM_STATE_ENTRY(s3, "Eject", s3_on_entry, s3_on_exit, s3_on_event)
|
|
|
- FSM_STATE_ENTRY(s4, "WaitingFetch", s4_on_entry, s4_on_exit, s4_on_event)
|
|
|
- FSM_STATE_ENTRY(s5, "Init", s5_on_entry, s5_on_exit, s5_on_event)
|
|
|
+ FSM_STATE_ENTRY(s3, "Init", s3_on_entry, s3_on_exit, s3_on_event)
|
|
|
END_FSM_STATE()
|
|
|
|
|
|
- BEGIN_FSM_RULE(CIDCertFSM, s5)
|
|
|
+ BEGIN_FSM_RULE(CIDCertFSM, s3)
|
|
|
FSM_RULE_ENTRY(s0, s2, USER_EVT_ERROR, 0)
|
|
|
FSM_RULE_ENTRY(s0, FSM_STATE_EXIT, USER_EVT_QUIT, 0)
|
|
|
FSM_RULE_ENTRY(s0, s1, USER_EVT_READ_AND_SCAN_UTF8, 0) //ex4
|
|
|
FSM_RULE_ENTRY(s0, s1, USER_EVT_READ_AND_SCAN_UTF8JS, 0) //ex4
|
|
|
- FSM_RULE_ENTRY(s0, s5, USER_EVT_TODO_INIT_FINISHED, 0)
|
|
|
+ FSM_RULE_ENTRY(s0, s3, USER_EVT_TODO_INIT_FINISHED, 0)
|
|
|
FSM_RULE_ENTRY(s1, s0, USER_EVT_READ_AND_SCAN_UTF8_FINISHED, 0)
|
|
|
- FSM_RULE_ENTRY(s1, s2, USER_EVT_READ_AND_SCAN_UTF8_FINISHED, 1)
|
|
|
+ FSM_RULE_ENTRY(s1, s0, USER_EVT_READ_AND_SCAN_UTF8_FINISHED, 1)
|
|
|
FSM_RULE_ENTRY(s1, s0, USER_EVT_READ_AND_SCAN_UTF8_FINISHED, 2)
|
|
|
- FSM_RULE_ENTRY(s1, s0, USER_EVT_READ_AND_SCAN_UTF8_FINISHED, 3)
|
|
|
- FSM_RULE_ENTRY(s1, s4, USER_EVT_READ_AND_SCAN_UTF8_FINISHED, 4)
|
|
|
- FSM_RULE_ENTRY(s1, s5, USER_EVT_READ_AND_SCAN_UTF8_FINISHED, 5)
|
|
|
+ FSM_RULE_ENTRY(s1, s3, USER_EVT_READ_AND_SCAN_UTF8_FINISHED, 3)
|
|
|
FSM_RULE_ENTRY(s1, s0, USER_EVT_READ_AND_SCAN_UTF8JS_FINISHED, 0)
|
|
|
- FSM_RULE_ENTRY(s1, s2, USER_EVT_READ_AND_SCAN_UTF8JS_FINISHED, 1)
|
|
|
- FSM_RULE_ENTRY(s1, s0, USER_EVT_READ_AND_SCAN_UTF8JS_FINISHED, 2)
|
|
|
- FSM_RULE_ENTRY(s1, s0, USER_EVT_READ_AND_SCAN_UTF8JS_FINISHED, 3)
|
|
|
- FSM_RULE_ENTRY(s1, s4, USER_EVT_READ_AND_SCAN_UTF8JS_FINISHED, 4)
|
|
|
- FSM_RULE_ENTRY(s1, s5, USER_EVT_READ_AND_SCAN_UTF8JS_FINISHED, 5)
|
|
|
+ FSM_RULE_ENTRY(s1, s0, USER_EVT_READ_AND_SCAN_UTF8JS_FINISHED, 1)
|
|
|
+ FSM_RULE_ENTRY(s1, s3, USER_EVT_READ_AND_SCAN_UTF8JS_FINISHED, 3)
|
|
|
FSM_RULE_ENTRY(s1, FSM_STATE_EXIT, USER_EVT_QUIT, 0)
|
|
|
FSM_RULE_ENTRY(s1, s0, USER_EVT_CANCEL_READ, 2)
|
|
|
FSM_RULE_ENTRY(s1, s0, USER_EVT_EXIT, 3)
|
|
|
- FSM_RULE_ENTRY(s2, s5, USER_EVT_TODO_INIT_FINISHED, 0)
|
|
|
- FSM_RULE_ENTRY(s4, s0, USER_EVT_WAIT_FETCH_IDCARD_FINISHED, 0)
|
|
|
- FSM_RULE_ENTRY(s5, s0, USER_EVT_INIT_FINISHED, 0)
|
|
|
- FSM_RULE_ENTRY(s5, s2, USER_EVT_INIT_FINISHED, 2)
|
|
|
+ FSM_RULE_ENTRY(s2, s3, USER_EVT_TODO_INIT_FINISHED, 0)
|
|
|
+ FSM_RULE_ENTRY(s3, s0, USER_EVT_INIT_FINISHED, 0)
|
|
|
+ FSM_RULE_ENTRY(s3, s2, USER_EVT_INIT_FINISHED, 2)
|
|
|
END_FSM_RULE()
|
|
|
|
|
|
- CIDCertFSM() :m_bCancelRead(false), m_bReading(false), m_bWaitReadMore(false),
|
|
|
- m_bExit(false), m_testResult(Error_Succeed), m_getDevCategory(Error_Unexpect), m_csMachineType(""), m_terminalNo(""), invalidBreak(false), transImgMsg("")
|
|
|
+ CIDCertFSM() :m_bCancelRead(false), m_bReading(false),
|
|
|
+ m_bExit(false), m_testResult(Error_Succeed), m_getDevCategory(Error_Unexpect), m_csMachineType(""), m_terminalNo(""), transImgMsg("")
|
|
|
{
|
|
|
ZeroMemory(&m_adapterInfo, sizeof(m_adapterInfo));
|
|
|
HARDWARE_ENTITY_RESET_ENTITYID(m_entCode, 0x201);
|
|
@@ -231,18 +242,10 @@ public:
|
|
|
virtual void s3_on_entry();
|
|
|
virtual void s3_on_exit();
|
|
|
virtual unsigned int s3_on_event(FSMEvent* e);
|
|
|
- virtual void s4_on_entry();
|
|
|
- virtual void s4_on_exit();
|
|
|
- virtual unsigned int s4_on_event(FSMEvent* e);
|
|
|
- virtual void s5_on_entry();
|
|
|
- virtual void s5_on_exit();
|
|
|
- virtual unsigned int s5_on_event(FSMEvent* e);
|
|
|
|
|
|
int ReadAndScanUTF8(SpReqAnsContext<IDCert_ReadAndScanUTF8_Req, IDCert_ReadAndScanUTF8_Ans>::Pointer ctx);
|
|
|
int ReadAndScanUTF8JS(SpReqAnsContext<IDCert_ReadAndScanUTF8JS_Req, IDCert_ReadAndScanUTF8JS_Ans>::Pointer ctx);
|
|
|
|
|
|
- int WaitFetchIDCard();
|
|
|
- void SetReadMore(){m_bWaitReadMore = true;}
|
|
|
void SetExitFlag(){m_bExit = true;}
|
|
|
bool GetReadFlag(){return m_bReading;}
|
|
|
ErrorCodeEnum GetDevCatInfo(DevCategoryInfo &devInfo, CSimpleStringA& devType);
|
|
@@ -265,21 +268,30 @@ private:
|
|
|
//Delete bmp file in dep directory, you should just convey fileName only without paths -Joseph
|
|
|
//deleteTiming:0, defalut; deleteTiming:1, delete before Read IDCard; deleteTiming:2, delete after Read IDCard
|
|
|
ErrorCodeEnum DeleteFileIfExisted(LPCTSTR fileName, int deleteTiming = 0);
|
|
|
- BOOL UCS2_to_UTF8(UINT16* ucs2_code, UINT8* utf8_code);
|
|
|
- BOOL GetSexUTF8String(UINT16* in, UINT8* out);
|
|
|
- BOOL GetNationalUTF8String(UINT16* in, UINT8* out);
|
|
|
- BOOL GetDateStandardFormatUTF8(UINT16* in, UINT8* out);
|
|
|
- BOOL RemoveUCS2Blank(UINT16* ucs2_code);
|
|
|
+ void UCS2_to_UTF8(UINT16* ucs2_code, UINT8* utf8_code);
|
|
|
+ void GetSexUTF8String(UINT16* in, UINT8* out);
|
|
|
+ void GetNationalUTF8String(UINT16* in, UINT8* out);
|
|
|
+ void GetDateStandardFormatUTF8(UINT16* in, UINT8* out);
|
|
|
+ void RemoveUCS2Blank(UINT16* ucs2_code);
|
|
|
int GetUCS2ByteLength(UINT16* ucs2_code);
|
|
|
void CheckHanZi(UINT16* ucs2_code);
|
|
|
|
|
|
CSimpleStringA GetFileHashStr(CSimpleStringA filePath);
|
|
|
CSimpleStringA GetFileLastModifyTime(CSimpleStringA filePath);
|
|
|
|
|
|
+ template <typename T>
|
|
|
+ void CopyIDCerDataToCtx(IDCerInfoEx2 idInfoEx2, T& ctx); //兼容JS接口
|
|
|
+ BOOL GetScanImg(IDCerInfoEx2 idInfoEx2, CBlob& frontImg, CBlob& backImg);
|
|
|
+#ifdef RVC_OS_WIN
|
|
|
+ char* GetGBKString(UINT16* ucs2_code); //WIN打印源数据日志或其他中文用途
|
|
|
+#endif
|
|
|
+ //记录身份证相关图片的最近修改时间,用于上送信息调研,后续下掉 - 2025.6.13 CJL
|
|
|
+ void WarnImgCreateTime();
|
|
|
+
|
|
|
public:
|
|
|
std::string checkImgURL;
|
|
|
private:
|
|
|
- bool m_bCancelRead, m_bReading, m_bWaitReadMore, m_bExit;
|
|
|
+ bool m_bCancelRead, m_bReading, m_bExit;
|
|
|
ErrorCodeEnum m_testResult;
|
|
|
ErrorCodeEnum m_getDevCategory;
|
|
|
DevCategoryInfo m_devCatInfo;
|
|
@@ -293,12 +305,17 @@ private:
|
|
|
BOOL supportUCS2; //支持生僻字
|
|
|
BOOL igestionVer; //吸入式设备
|
|
|
BOOL supportNewForeigner; //支持新版外国人永居证 2023.11.10
|
|
|
- CSimpleStringA bkPicPath; //合成背景的图片路径
|
|
|
-
|
|
|
|
|
|
BOOL closeImgCheck;
|
|
|
- bool invalidBreak; //TODO: 只有赋值,没有调用,考虑移除 [Gifur@2025228]
|
|
|
ULLINT m_ullBeginTime, m_ullEndTime;
|
|
|
+ ULLINT OpenRFControlTime;
|
|
|
+ ULLINT CloseRFControlTime;
|
|
|
+ ULLINT IDCerAuthenticateTime;
|
|
|
+ ULLINT IDCerGetDataEx2Time;
|
|
|
+ ULLINT ScanIDAndSaveImageTime;
|
|
|
+ //记录身份证相关图片的最近修改时间,用于上送信息调研,后续下掉 - 2025.6.13 CJL
|
|
|
+ CSimpleStringA headPhotoTimeStr, frontPhotoTimeStr, backPhotoTimeStr;
|
|
|
+ time_t headPhotoTime, frontPhotoTime, backPhotoTime, currentSysTime;
|
|
|
};
|
|
|
|
|
|
struct ReadAndScanUTF8Task : public ITaskSp //ex8
|
|
@@ -331,18 +348,6 @@ struct ReadAndScanUTF8JSTask : public ITaskSp //ex8
|
|
|
}
|
|
|
};
|
|
|
|
|
|
-struct WaitFetchIDCardTask : public ITaskSp
|
|
|
-{
|
|
|
- CIDCertFSM* fsm;
|
|
|
- WaitFetchIDCardTask(CIDCertFSM* f) : fsm(f) {}
|
|
|
-
|
|
|
- void Process()
|
|
|
- {
|
|
|
- FSMEvent *e = new FSMEvent(USER_EVT_WAIT_FETCH_IDCARD_FINISHED);
|
|
|
- e->param1 = fsm->WaitFetchIDCard();
|
|
|
- fsm->PostEventFIFO(e);
|
|
|
- }
|
|
|
-};
|
|
|
struct InitTask : public ITaskSp
|
|
|
{
|
|
|
CIDCertFSM* fsm;
|
|
@@ -355,4 +360,6 @@ struct InitTask : public ITaskSp
|
|
|
fsm->PostEventFIFO(e);
|
|
|
}
|
|
|
};
|
|
|
+
|
|
|
+
|
|
|
#endif //IDCERTFSM_H
|