///////////////////////////////////////////////////////////////////////////////// /// Copyright (c) 2012 China Merchants Bank, all rights reserved /// /// Adapter Interface for Identity Card reader. /// /// /// //////////////////////////////////////////////////////////////////////////////// #ifndef IDCER_CLASS_H #define IDCER_CLASS_H #pragma once #include "DeviceBaseClass.h" const int IDCER_EIGHT_BYTE_SIZE = 8; const int MAX_IDCER_SIMPLE_INFO_SIZE = 32; const int MAX_IDCER_INFO_SIZE = 128; const int MAX_IDCER_PHOTO_PATH = 260; //二代身份证信息结构(需要支持外国人永久居留证请使用IDCerInfoEx) //请务必按照各字段指定格式返回数据 struct IDCerInfo { struct Name{ CHAR data[MAX_IDCER_INFO_SIZE]; DWORD dwSize;}name; struct Sex{ CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE]; DWORD dwSize;}sex; struct Nation{ CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE]; DWORD dwSize;}nation; struct Birthday{//format:1986年10月07日 CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE]; DWORD dwSize;}birthday; struct Address{ CHAR data[MAX_IDCER_INFO_SIZE]; DWORD dwSize;}address; struct Idno{ CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE]; DWORD dwSize;}idno; struct Department{ CHAR data[MAX_IDCER_INFO_SIZE]; DWORD dwSize;}department; struct StartDate{//format:2010.08.09 CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE]; DWORD dwSize;}startDate; struct EndDate{ //format:2020.08.09 CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE]; DWORD dwSize;}endDate; struct NewAddress{ CHAR data[MAX_IDCER_INFO_SIZE]; DWORD dwSize;}newAddress; struct PhotoPath{ CHAR data[MAX_IDCER_PHOTO_PATH]; DWORD dwSize;}photoPath; }; //二代证信息结构(支持外国人永久居留证) //请务必按照各字段指定格式返回数据 struct IDCerInfoEx { struct Name{//中文姓名 CHAR data[MAX_IDCER_INFO_SIZE]; DWORD dwSize; }name; struct Sex{//性别 CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE]; DWORD dwSize; }sex; struct Nation{//民族(二代证专用) CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE]; DWORD dwSize; }nation; struct Birthday{//出生日期,格式:1986年10月07日 CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE]; DWORD dwSize; }birthday; struct Address{//住址(二代证专用) CHAR data[MAX_IDCER_INFO_SIZE]; DWORD dwSize; }address; struct Idno{//证件号码,二代证指身份证号,外国人指永久居留证号 CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE]; DWORD dwSize; }idno; struct Department{//二代证指签发机关,外国人指当次申请受理机关代码 CHAR data[MAX_IDCER_INFO_SIZE]; DWORD dwSize; }department; struct StartDate{//有效期起始日(签发日)格式:2010.08.09 CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE]; DWORD dwSize; }startDate; struct EndDate{ //有效期截止日(终止日)格式:2020.08.09 CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE]; DWORD dwSize; }endDate; struct NewAddress{//最新地址,二代证专用 CHAR data[MAX_IDCER_INFO_SIZE]; DWORD dwSize; }newAddress; struct PhotoPath{ CHAR data[MAX_IDCER_PHOTO_PATH]; DWORD dwSize; }photoPath; struct EnglishName{//英文姓名,外国人专用 CHAR data[MAX_IDCER_INFO_SIZE]; DWORD dwSize; }englishName; struct Nationality{//国籍或地区代码,外国人专用 CHAR data[IDCER_EIGHT_BYTE_SIZE]; DWORD dwSize; }nationality; struct IdVersion{//证件版本号,外国人专用 CHAR data[IDCER_EIGHT_BYTE_SIZE]; DWORD dwSize; }idVersion; struct IdType{//证件类型标识,外国人取值'I',二代证为空 CHAR data[IDCER_EIGHT_BYTE_SIZE]; DWORD dwSize; }idType; struct Reserved{//保留字段,外国人专用 CHAR data[IDCER_EIGHT_BYTE_SIZE]; DWORD dwSize; }reserved; struct TXZCode{//通行证号码(港澳台居住证) CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE]; DWORD dwSize; }txzCode; struct IssuedSN{//签发次数(港澳台居住证) CHAR data[IDCER_EIGHT_BYTE_SIZE]; DWORD dwSize; }issuedSN; struct Reserved2{//备用2(港澳台居住证) CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE]; DWORD dwSize; }reserved2; struct Reserved3{//备用3(港澳台居住证) CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE]; DWORD dwSize; }reserved3; struct Reserved4{//备用4(港澳台居住证) CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE]; DWORD dwSize; }reserved4; struct Reserved5{//备用5(港澳台居住证) CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE]; DWORD dwSize; }reserved5; }; struct IDCerInfoEx2 { struct Name {//中文姓名 CHAR data[MAX_IDCER_INFO_SIZE]; DWORD dwSize; }name; struct Sex {//性别 CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE]; DWORD dwSize; }sex; struct Nation {//民族(二代证专用) CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE]; DWORD dwSize; }nation; struct Birthday {//出生日期,原始格式:19861007 CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE]; DWORD dwSize; }birthday; struct Address {//住址(二代证专用) CHAR data[MAX_IDCER_INFO_SIZE]; DWORD dwSize; }address; struct Idno {//证件号码,二代证指身份证号,外国人指永久居留证号 CHAR data[2 * MAX_IDCER_SIMPLE_INFO_SIZE]; //拓展至64字节 DWORD dwSize; }idno; struct Department {//二代证指签发机关,外国人指当次申请受理机关代码 CHAR data[MAX_IDCER_INFO_SIZE]; DWORD dwSize; }department; struct StartDate {//有效期起始日(签发日)原始格式:20200809 CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE]; DWORD dwSize; }startDate; struct EndDate {//有效期截止日(终止日)原始格式:20200809 CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE]; DWORD dwSize; }endDate; struct NewAddress {//最新地址,二代证专用 CHAR data[MAX_IDCER_INFO_SIZE]; DWORD dwSize; }newAddress; struct PhotoPath { CHAR data[MAX_IDCER_PHOTO_PATH]; DWORD dwSize; }photoPath; struct EnglishName {//英文姓名,外国人专用 CHAR data[MAX_IDCER_INFO_SIZE]; DWORD dwSize; }englishName; struct Nationality {//国籍或地区代码,外国人专用 CHAR data[IDCER_EIGHT_BYTE_SIZE]; DWORD dwSize; }nationality; struct IdVersion {//证件版本号,外国人专用 CHAR data[IDCER_EIGHT_BYTE_SIZE]; DWORD dwSize; }idVersion; struct IdType {//证件类型标识,外国人取值'I',二代证为空 CHAR data[IDCER_EIGHT_BYTE_SIZE]; DWORD dwSize; }idType; struct Reserved {//保留字段,外国人专用 CHAR data[IDCER_EIGHT_BYTE_SIZE]; DWORD dwSize; }reserved; struct TXZCode {//通行证号码(港澳台居住证) CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE]; DWORD dwSize; }txzCode; struct IssuedSN {//签发次数(港澳台居住证) CHAR data[IDCER_EIGHT_BYTE_SIZE]; DWORD dwSize; }issuedSN; struct Reserved2 {//备用2(港澳台居住证) CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE]; DWORD dwSize; }reserved2; struct Reserved3 {//备用3(港澳台居住证) CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE]; DWORD dwSize; }reserved3; struct Reserved4 {//备用4(港澳台居住证) CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE]; DWORD dwSize; }reserved4; struct Reserved5 {//备用5(港澳台居住证) CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE]; DWORD dwSize; }reserved5; }; class IDCerClass : public DeviceBaseClass { public: // // Open device. // if usb device,set dwPort=0 // virtual ErrorCodeEnum DevOpen(DWORD dwPort) = 0; // // Optional. // Open or close RF. // Arguments: // - bControl:true:open RF,false close RF // - 对于吸入式,为true接收身份证插入,为false时弹出身份证并关闭接收身份证插入 // virtual ErrorCodeEnum IDCerRFControl(bool bControl) = 0; // // Optional. // Certificate authentication. // virtual ErrorCodeEnum IDCerAuthenticate() = 0; // 即将废弃,请使用IDCerGetDataEx // Get Identity Card info. // virtual ErrorCodeEnum IDCerGetData(IDCerInfo &idCerInfo) { return Error_NotImpl; } // 获取证件信息,包括二代身份证、外国人永久居留证 // Get Identity Card info. // virtual ErrorCodeEnum IDCerGetDataEx(IDCerInfoEx &idCerInfoEx){return Error_NotImpl;} // 强制弹出身份证等证件 // Force ID Card to eject。 // virtual ErrorCodeEnum ForceIDEject(){return Error_NotImpl;} // 扫描证件并保留扫描文件到默认路径(dep目录下),证件正面使用“idfront.bmp”,证件反面使用“idback.bmp” // Scan ID Card and save the image to the position(dep/),using default name "idfront.bmp" and "idback.bmp"。 // virtual ErrorCodeEnum ScanIDAndSaveImage(){return Error_NotImpl;} // 获取卡片是否插入或者取走 // Query if ID Card have been inserted or fetched。 // pos: // -- 0,未检测到任何证件;1,证件在读卡器内部;2,证件在进卡口 // virtual ErrorCodeEnum QueryCardPos(int &pos){return Error_NotImpl;} //该接口传回身份证原始UCS2编码文字信息,厂商不必进行编码转换 virtual ErrorCodeEnum IDCerGetDataEx2(IDCerInfoEx2& idCerInfoEx2) { return Error_NotImpl; } }; #endif //IDCER_CLASS_H