東信EST-100/EST-100GS/EST-J13X系列Windows開發包(含身份證、社???、CPU、M1、磁條卡、銀行卡等卡)
東信EST系列多功能身份證社??ㄗx卡器接口文檔,支持東信EST-100、EST-100GS、EST-J13X、EST-100G等機型,僅供開發人員和測試人員使用。
Windows平臺開發包下載地址:
東信EST系列多功能讀卡器接口文檔
目錄
讀卡器接口文檔1
一、接口文檔維護記錄2
二、讀卡器SDK簡介2
三、函數說明3
3.1、設備類3
3.1.1、連接讀卡器3
3.1.2、斷開連接3
3.1.3、蜂鳴器3
3.2、接觸類3
3.2.1、CPU卡&社???span style="white-space:pre">3
3.3、非接類5
3.3.1、非接卡前置步驟(必須)5
3.3.2、非接CPU卡(TypeA)6
3.3.2.1、TypeA卡上電復位6
3.3.2.2、TypeA卡執行APDU命令6
3.3.3、Mifare One(M1卡) 系列6
3.3.3.1、認證秘鑰6
3.3.3.2、讀卡7
3.3.3.3、寫卡7
3.4、身份證7
3.4.1、讀身份證信息(文字+照片)7
3.4.2、讀身份證信息(文字+照片+指紋)8
3.4.3、讀身份證物理ID號8
3.4.4、查詢天線區域有無身份證8
3.4.5 get函數9
3.4.6 獲取SAMID10
3.5、磁條10
3.6、輔助函數10
3.6.1、十六進制數組轉hexstr字符串,例如:0x11,0x22 “1122”10
3.6.1、hexstr字符串轉十六進制數組,例如:“1122” 0x11,0x2211
3.7、卡片操作要點11
3.7.1typeACPU 卡操作順序11
3.7.2typeB 卡操作順序11
3.7.3M1卡操作順序11
3.7.4接觸CPU卡操作順序12
3.8、 15693卡12
3.8.1、15693尋卡12
3.8.2、15693獲取卡片詳細信息12
3.8.3、15693讀卡12
3.8.4、15693寫卡13
3.8.5、15693_AFI操作13
3.8.6、15693_DSFID操作13
3.9、狀態碼13
一、接口文檔維護記錄
修改、更新記錄
版本變更事項變更人時間
V1.0.0.1
二、讀卡器SDK簡介
本文檔描述了廣東東信智能科技有限公司EST系列讀寫器SDK的函數定義、調用方法、參數以及返回值說明,供開發人員進行二次開發時使用。EU開頭的是接觸卡,PEU開頭的是非接卡。
三、函數說明
3.1、設備類
3.1.1、連接讀卡器
函數原型:long WINAPI EU_Reader_Open(char* dev_Name);
參數:[IN] dev_Name:固定值 “USB1”.
返回值:連接成功時返回句柄值(大于0),該值需保存作為其他函數的入參。
3.1.2、斷開連接
函數原型:long WINAPI EU_Reader_Close(long ReaderHandle);
參數:ReaderHandle:[IN] EU_Reader_Open函數的返回值
返回值:無
3.1.3、蜂鳴器
函數原型:long WINAPI EU_PosBeep(long ReaderHandle, unsigned char time);
參數:
ReaderHandle:[IN] EU_Reader_Open函數的返回值
Time:[IN] 蜂鳴時間,0~10
返回值:成功返回0。
3.2、接觸類
3.2.1、CPU卡&社???/p>
3.2.1.1、CPU卡上電復位
函數原型:
long WINAPI EU_Reader_pre_PowerOn(long ReaderHandle,unsigned char EU_Slot_No,unsigned char* Response);
參數:
ReaderHandle:[IN] EU_Reader_Open函數的返回值
EU_Slot_No:[IN]卡座號(如下)
0x01:大卡座
0x11~0x14:SAM1~SAM4卡座
Response:[OUT]上電返回的ATR
返回值:成功返回ATR的長度,<= 0表示失敗。
3.2.1.2、CPU卡執行APDU命令
函數原型:long WINAPI EU_Reader_Application(long ReaderHandle,unsigned char EU_Slot_No, long Lenth_of_Command_APDU,unsigned char* Command_APDU, unsigned char* Response_APDU);
參數:
ReaderHandle:[IN] EU_Reader_Open函數的返回值
EU_Slot_No:[IN]卡座號,同上電復位
Lenth_of_Command_APDU:[IN]APDU命令長度
Command_APDU:[IN]APDU命令
Response_APDU:[OUT]響應數據
返回值:
成功返回響應數據的長度,<= 0表示失敗
讀社???/p>
函數原型:long WINAPI PEU_Reader_SICARD(long ReaderHandle, char* SBKH, char *XM, char *XB, char *MZ, char *CSRQ, char *SHBZHM, char *FKRQ, char *KYXQ,char* ErrMsg);
參數:
ReaderHandle:[IN] Open函數的返回值
SBKH:[OUT]社??ㄌ?/p>
XM:[OUT]姓名
XB:[OUT]性別
MZ:[OUT]民族
CSRQ:[OUT]出生日期
SHBZHM:[OUT]身份證號
FKRQ:[OUT]發卡日期
FKRQ:[OUT]卡有效期
ErrMsg:[OUT]錯誤信息
返回值:成功返回0
3.3、非接類
3.3.1、非接卡前置步驟(必須)
3.3.1.1、設置為TypeA/B
函數原型:long WINAPI PEU_Reader_SetTypeA(long ReaderHandle);
long WINAPI PEU_Reader_SetTypeB(long ReaderHandle);
參數:
ReaderHandle:[IN] EU_Reader_Open函數的返回值
返回值:成功返回0
3.3.1.2、請求卡片
函數原型:long WINAPI PEU_Reader_Request(long ReaderHandle);
參數:
ReaderHandle:[IN] EU_Reader_Open函數的返回值
返回值:成功返回0
3.3.1.3、防碰撞
函數原型:long WINAPI PEU_Reader_anticoll(long ReaderHandle,unsigned char *uid);
參數:
ReaderHandle:[IN] EU_Reader_Open函數的返回值
Uid:[OUT] 卡片物理卡號,4字節
返回值:成功返回0
3.3.1.4、選擇卡片
函數原型:long WINAPI PEU_Reader_Select(long ReaderHandle,unsigned char cardtype);
參數:
ReaderHandle:[IN] EU_Reader_Open函數的返回值
Cardtype:[IN]0x41表示TypeA/M1,0x42表示TypeB
返回值:成功返回0
3.3.2、非接CPU卡(TypeA)
3.3.2.1、TypeA卡上電復位
函數原型:long WINAPI PEU_Reader_PowerOnTypeA(long ReaderHandle,unsigned char* Response);
參數:
ReaderHandle:[IN] EU_Reader_Open函數的返回值
Response:[OUT]上電返回數據(ATS)
返回值:成功返回ATS長度,<= 0表示失敗。
3.3.2.2、TypeA卡執行APDU命令
函數原型:long WINAPI PEU_Reader_Application(long ReaderHandle, long Lenth_of_Command_APDU,unsigned char* Command_APDU, unsigned char* Response_APDU);
參數:
ReaderHandle:[IN] EU_Reader_Open函數的返回值
Lenth_of_Command_APDU:[IN]APDU命令長度
Command_APDU:[IN]APDU命令
Response_APDU:[OUT]響應數據
返回值:
成功返回響應數據的長度,<= 0表示失敗
3.3.3、Mifare One(M1卡) 系列
3.3.3.1、認證秘鑰
函數原型:long WINAPI PEU_Reader_Authentication_Pass(long ReaderHandle,unsigned char Mode, unsigned char SecNr,unsigned char *PassWord);
參數:
ReaderHandle:[IN] EU_Reader_Open函數的返回值
Mode:[IN]要認證的Key類型,0x60表示KeyA,0x61表示KeyB。
Secnr:[IN]扇區號,S50卡范圍:0~15、S70卡范圍0~63
Key:[IN]秘鑰,6字節
返回值:返回0表示成功,其他值失敗。
//備用函數
long WINAPI PEU_Reader_Authentication_PassHEX(long ReaderHandle,unsigned char Mode, unsigned char SecNr,char *PassWord);//認證密鑰M1 帶密鑰參數
3.3.3.2、讀卡
函數原型:long WINAPI PEU_Reader_Read(long ReaderHandle,unsigned char Addr,unsigned char *Data);
參數:
ReaderHandle:[IN] EU_Reader_Open函數的返回值
Addr:[IN]塊地址S50卡:0~63、S70卡:0~255
Response:[OUT]讀出的卡數據,16字節
返回值:成功返回0,其它值失敗。
3.3.3.3、寫卡
函數原型:long WINAPI PEU_Reader_Write(long ReaderHandle,unsigned char Addr,unsigned char *Data);
參數:
ReaderHandle:[IN] EU_Reader_Open函數的返回值
Addr:[IN]塊地址S50卡:0~63、S70卡:0~255
Data:[IN]待寫入的卡數據,16字節
返回值:成功返回0,其它值失敗。
3.4、身份證
3.4.1、讀身份證信息(文字+照片)
函數原型:
long WINAPI PEU_Reader_ReadIDMsg(long ReaderHandle,
const char* pBmpFile,
char *pName,
char *pSex,
char *pNation,
char *pBirth,
char *pAddress,
char *pCertNo,
char *pDepartment ,
char *pEffectData,
char *pExpire,
char * pErrMsg);
參數:
ReaderHandle:[IN] EU_Reader_Open函數的返回值
pBmpFile:[IN]要生成照片的路徑,例:”D:\\zp.bmp”
pName:[OUT]姓名,50字節
pSex:[OUT]性別,10字節
pNation:[OU]民族,10字節
pBirth:[OUT]出生日期,30字節
pAddress:[OUT]家庭住址,100字節
pIDNo:[OUT]身份號,50字節
pDepartment:[OUT]簽發機關,50
pEffectDate:[OUT]有效起始日期,30字節
pExpireDate:[OUT]有效截止日期,30字節
pErrMsg:[OUT]錯誤提示,50字節
返回值:讀卡成功返回0
3.4.2、讀身份證信息(文字+照片+指紋)
函數原型:
long WINAPI PEU_Reader_ReadIDCard(long ReaderHandle, char * pErrMsg);
參數:
ReaderHandle:[IN] EU_Reader_Open函數的返回值
pErrMsg:[OUT]錯誤提示,50字節
返回值:讀卡成功返回0,讀卡成功后可調用下文get函數獲取信息
3.4.3、讀身份證物理ID號
函數原型:long WINAPI PEU_Reader_ID_ReadUID(long ReaderHandle,unsigned char* UID);
參數:
ReaderHandle:[IN] EU_Reader_Open函數的返回值
Response:[OUT]身份物理ID號,8字節
返回值:成功返回0,其它值失敗。
3.4.4、查詢天線區域有無身份證
函數原型:long WINAPI PEU_Reader_ID_Request(long ReaderHandle);
參數:
ReaderHandle:[IN] EU_Reader_Open函數的返回值
返回值:成功返回0,其它值失敗。
3.4.5 get函數
函數獲取信息功能包含證件類型
int WINAPI GetCardType();獲取證件類型
0:居民身份證
1:外國人永久居留證
2:港澳臺居民居住證
int WINAPI GetName(char* pName);姓名(類型為1時表示:外國人中文姓名)0、1、2
int WINAPI GetSex(char* pSex);性別0、1、2
int WINAPI GetNation(char* pNation);民族0
int WINAPI GetBirth(char* pBirth);出生日期0、1、2
int WINAPI GetAddress(char* pAddress);住址0、2
int WINAPI GetCertNo(char* pCertNo);公民身份證號碼(類型為1時表示:外國人居留證號碼)0、1、2
int WINAPI GetDepartemt(char* pDepartemt);簽發機關0、2
intWINAPI GetEffectDate(char* pEffectDate);有效起始日期0、1、2
int WINAPI GetExpireDate(char* pExpireDate);有效截止日期0、1、2
int WINAPI GetBmpFileData(char* pBmpFileData);bmp格式照片數據0、1、2
int WINAPIGetBmpFile(char* pBmpfilepath);生成照片,入參參考文中3.4.10、1、2
int WINAPI IsFingerExist();是否含存在指紋信息:
存在時返回512或者1024
不存在時返回00、2
intWINAPIGetFingerprint(unsigned char* fpInfo);獲取指紋數據:
成功時返回獲取到的字節長度0、2
int WINAPI GetEnName(char* pEnName);外國人英文姓名1
int WINAPI GetNationalityCode(char* pNationalityCode);外國人國籍代碼,符合GB/T2659-2000規定1
int WINAPI GetTXZHM(char* pTXZHM);港澳臺通行證號碼2
int WINAPI GetTXZQFCS(char* pTXZQFCS);港澳臺通行證簽發次數2
注:以上函數須在 “PEU_Reader_ReadIDCard” 函數執行成功之后調用,否則獲取不到有效信息。
3.4.6 獲取SAMID
函數原型:long WINAPI EU_Reader_GetSAMID(long ReaderHandle,char *SAMID);
參數:
ReaderHandle:[IN] EU_Reader_Open函數的返回值
SAMID:[OUT]返回的數據
返回值:0表示成功,其它表示失敗。
3.5、磁條
函數原型:long WINAPI Rcard(long ReaderHandle,unsigned char ctime,int track,unsigned char *rlen,unsigned char *getdata);
參數:
ReaderHandle:[IN] EU_Reader_Open函數的返回值
ctime:[IN]超時時間,單位:秒
track:[IN]磁道(1~3)磁道1~~磁道3,track=4時表示全軌一次性刷出,返回數據為TLV格式,例如:010101020201020303010203
rlen:[OUT]返回數據的長度
data:[OUT]返回的數據
返回值:0表示成功,其它表示失敗。
3.6、輔助函數
3.6.1、十六進制數組轉hexstr字符串,例如:0x11,0x22 “1122”
函數原型:long WINAPI HexToStr(unsigned char *Src,int len,unsigned char *Des );
參數:
Src:[IN]十六進制數組
Len:[IN]數據長度
Des:[OUT]轉換好的hexstr格式字符串。
返回值:返回0
3.6.1、hexstr字符串轉十六進制數組,例如:“1122” 0x11,0x22
函數原型:long WINAPI StrToHex(unsigned char *Src, int len,unsigned char *Des);
參數:
Src:[IN]hexstr格式字符串
Len:[IN]字節長度
Des:[OUT]轉換好的數據
返回值:返回轉換好的十六進制數據。
3.7、卡片操作要點
3.7.1typeACPU 卡操作順序
1 設置為TypeA卡片
2 請求卡片
3 防碰撞
4 選擇卡片
5 上電
6 APDU 命令
3.7.2typeB 卡操作順序
1 設置為TypeB卡片
2 上電
3 選卡
4 APDU 命令
3.7.3M1卡操作順序
1 請求卡片
2 防碰撞
3 選擇卡片
4 認證密鑰
5 讀或寫
3.7.4接觸CPU卡操作順序
1 上電復位
2 APDU 命令
3.8、 15693卡
3.8.1、15693尋卡
函數原型:long WINAPI PEU_Reader_Inventory (long ReaderHandle,unsigned char* Response);
參數:
ReaderHandle:[IN] EU_Reader_Open函數的返回值
Response: [OUT] 尋卡得到8字節卡片數據
返回值:成功返回0。
3.8.2、15693獲取卡片詳細信息
函數原型:long WINAPI PEU_Reader_SystemInfor(long ReaderHandle,unsigned char* Response);
參數:
ReaderHandle:[IN] EU_Reader_Open函數的返回值
Response: [OUT] 得到14字節卡片數據
返回值:成功返回0。
3.8.3、15693讀卡
函數原型:long WINAPI PEU_Reader_15693_Read (long ReaderHandle, unsigned char blk_add, unsigned char* Response);
參數:
ReaderHandle:[IN] EU_Reader_Open函數的返回值
blk_add:[IN] 塊地址
Response: [OUT] 得到4字節卡片數據
返回值:成功返回0。
3.8.4、15693寫卡
函數原型:long WINAPI PEU_Reader_15693_Write(long ReaderHandle, unsigned char blk_add, unsigned char* Response);
參數:
ReaderHandle:[IN] EU_Reader_Open函數的返回值
blk_add:[IN] 塊地址
Response: [IN] 要寫入的4字節卡片數據
返回值:成功返回0。
3.8.5、15693_AFI操作
函數原型:long WINAPI PEU_Reader_AFI(long ReaderHandle, unsigned char* data, unsigned char* Response);
參數:
ReaderHandle:[IN] EU_Reader_Open函數的返回值
data:[IN] data[0] 為0表示寫AFI,為1則表示鎖AFI,
data[0]為0時 data[1]為有效AFI值。
Response: [OUT] NULL.
返回值:成功返回0。
3.8.6、15693_DSFID操作
函數原型:long WINAPI PEU_Reader_DSFID(long ReaderHandle, unsigned char* data, unsigned char* Response);
參數:
ReaderHandle:[IN] EU_Reader_Open函數的返回值
data:[IN] data[0] 為0表示寫DSFID,為1則表示鎖AFI,
data[0]為0時 data[1]為有效DSFID值。
Response: [OUT] NULL.
返回值:成功返回0。
3.9、狀態碼
0操作成功
-2身份證尋卡/選卡失敗
-4身份讀卡失敗
-11讀卡器連接錯
-12未建立連接(沒有執行打開設備函數)
-13(動態庫)不支持該命令
-14發給動態庫的)命令參數錯