以下開發(fā)包支持明創(chuàng)IDR-100U HID整機(jī)、IDR-M10、IDR-M20、IDR-M30等多功能免驅(qū)系列身份證閱讀器、社??ㄗx卡器整機(jī)和模組等產(chǎn)品,供開發(fā)人員適用。
Windows平臺(tái)開發(fā)包,包括BS,C/S,支持USB和串口:
Android平臺(tái)開發(fā)包,包括USB和串口:
Linux平臺(tái)開發(fā)包,包括USB和串口:
串口協(xié)議,支持單片機(jī)PLC等開發(fā):
本文檔描述了明創(chuàng)多功能身份證閱讀器SDK的函數(shù)定義、調(diào)用方法、參數(shù)以及返回值說明,供開發(fā)人員進(jìn)行二次開發(fā)時(shí)使用。EU開頭的是接觸卡,PEU開頭的是非接卡。
函數(shù)原型:long WINAPI EU_Reader_Open(char* dev_Name);
參數(shù):[IN] dev_Name:固定值 “USB1”.
返回值:連接成功時(shí)返回句柄值(大于0),該值需保存作為其他函數(shù)的入?yún)ⅰ?/span>
函數(shù)原型:long WINAPI EU_Reader_Close(long ReaderHandle);
參數(shù):ReaderHandle:[IN] EU_Reader_Open函數(shù)的返回值
返回值:無
函數(shù)原型:long WINAPI EU_PosBeep(long ReaderHandle, unsigned char time);
參數(shù):
ReaderHandle:[IN] EU_Reader_Open函數(shù)的返回值
Time:[IN] 蜂鳴時(shí)間,0~10
返回值:成功返回0。
3.1.4天線開關(guān)
long WINAPI PEU_Reader_RFControl(long ReaderHandle,short type);
//type=0 關(guān)閉天線 type=1 打開天線
函數(shù)原型:
long WINAPI EU_Reader_pre_PowerOn(long ReaderHandle,unsigned char EU_Slot_No,unsigned char* Response);
參數(shù):
ReaderHandle:[IN] EU_Reader_Open函數(shù)的返回值
EU_Slot_No:[IN]卡座號(hào)(如下)
0x01:大卡座
0x11~0x14:SAM1~SAM4卡座
Response:[OUT]上電返回的ATR
返回值:成功返回ATR的長(zhǎng)度,<= 0表示失敗。
函數(shù)原型: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);
參數(shù):
ReaderHandle: [IN] EU_Reader_Open函數(shù)的返回值
EU_Slot_No: [IN]卡座號(hào),同上電復(fù)位
Lenth_of_Command_APDU: [IN]APDU命令長(zhǎng)度
Command_APDU: [IN]APDU命令
Response_APDU: [OUT]響應(yīng)數(shù)據(jù)
返回值:
成功返回響應(yīng)數(shù)據(jù)的長(zhǎng)度,<= 0表示失敗
讀社保卡
函數(shù)原型: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);
參數(shù):
ReaderHandle:[IN] Open函數(shù)的返回值
SBKH: [OUT]社??ㄌ?hào)
XM: [OUT]姓名
XB: [OUT]性別
MZ: [OUT]民族
CSRQ: [OUT]出生日期
SHBZHM: [OUT]身份證號(hào)
FKRQ: [OUT]發(fā)卡日期
FKRQ: [OUT]卡有效期
ErrMsg:[OUT]錯(cuò)誤信息
返回值:成功返回0
函數(shù)原型: long WINAPI PEU_Reader_SetTypeA(long ReaderHandle);
long WINAPI PEU_Reader_SetTypeB(long ReaderHandle);
參數(shù):
ReaderHandle:[IN] EU_Reader_Open函數(shù)的返回值
返回值:成功返回0
函數(shù)原型:long WINAPI PEU_Reader_Request(long ReaderHandle);
參數(shù):
ReaderHandle:[IN] EU_Reader_Open函數(shù)的返回值
返回值:成功返回0
函數(shù)原型:long WINAPI PEU_Reader_anticoll(long ReaderHandle,unsigned char *uid);
參數(shù):
ReaderHandle:[IN] EU_Reader_Open函數(shù)的返回值
Uid:[OUT] 卡片物理卡號(hào),4字節(jié)
返回值:成功返回0
函數(shù)原型:long WINAPI PEU_Reader_Select(long ReaderHandle,unsigned char cardtype);
參數(shù):
ReaderHandle:[IN] EU_Reader_Open函數(shù)的返回值
Cardtype:[IN]0x41表示TypeA/M1,0x42表示TypeB
返回值:成功返回0
函數(shù)原型:long WINAPI PEU_Reader_PowerOnTypeA(long ReaderHandle,unsigned char* Response);
參數(shù):
ReaderHandle:[IN] EU_Reader_Open函數(shù)的返回值
Response:[OUT]上電返回?cái)?shù)據(jù)(ATS)
返回值:成功返回ATS長(zhǎng)度,<= 0表示失敗。
函數(shù)原型:long WINAPI PEU_Reader_Application(long ReaderHandle, long Lenth_of_Command_APDU,unsigned char* Command_APDU, unsigned char* Response_APDU);
參數(shù):
ReaderHandle:[IN] EU_Reader_Open函數(shù)的返回值
Lenth_of_Command_APDU: [IN]APDU命令長(zhǎng)度
Command_APDU: [IN]APDU命令
Response_APDU: [OUT]響應(yīng)數(shù)據(jù)
返回值:
成功返回響應(yīng)數(shù)據(jù)的長(zhǎng)度,<= 0表示失敗
函數(shù)原型:long WINAPI PEU_Reader_Authentication_Pass(long ReaderHandle,unsigned char Mode, unsigned char SecNr,unsigned char *PassWord);
參數(shù):
ReaderHandle:[IN] EU_Reader_Open函數(shù)的返回值
Mode: [IN]要認(rèn)證的Key類型,0x60表示KeyA,0x61表示KeyB。
Secnr: [IN]扇區(qū)號(hào),S50卡范圍:0~15、S70卡范圍0~63
Key: [IN]秘鑰,6字節(jié)
返回值:返回0表示成功,其他值失敗。
//備用函數(shù)
long WINAPI PEU_Reader_Authentication_PassHEX(long ReaderHandle,unsigned char Mode, unsigned char SecNr,char *PassWord);//認(rèn)證密鑰M1 帶密鑰參數(shù)
函數(shù)原型:long WINAPI PEU_Reader_Read(long ReaderHandle,unsigned char Addr,unsigned char *Data);
參數(shù):
ReaderHandle:[IN] EU_Reader_Open函數(shù)的返回值
Addr: [IN]塊地址S50卡:0~63、S70卡:0~255
Response: [OUT]讀出的卡數(shù)據(jù),16字節(jié)
返回值:成功返回0,其它值失敗。
函數(shù)原型:long WINAPI PEU_Reader_Write(long ReaderHandle,unsigned char Addr,unsigned char *Data);
參數(shù):
ReaderHandle:[IN] EU_Reader_Open函數(shù)的返回值
Addr: [IN]塊地址S50卡:0~63、S70卡:0~255
Data: [IN]待寫入的卡數(shù)據(jù),16字節(jié)
返回值:成功返回0,其它值失敗。
函數(shù)原型:
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);
參數(shù):
ReaderHandle:[IN] EU_Reader_Open函數(shù)的返回值
pBmpFile: [IN]要生成照片的路徑,例:”D:\\zp.bmp”
pName: [OUT]姓名,50字節(jié)
pSex: [OUT]性別,10字節(jié)
pNation: [OU]民族,10字節(jié)
pBirth: [OUT]出生日期,30字節(jié)
pAddress: [OUT]家庭住址,100字節(jié)
pIDNo: [OUT]身份號(hào),50字節(jié)
pDepartment: [OUT]簽發(fā)機(jī)關(guān),50
pEffectDate: [OUT]有效起始日期,30字節(jié)
pExpireDate: [OUT]有效截止日期,30字節(jié)
pErrMsg: [OUT]錯(cuò)誤提示,50字節(jié)
返回值:讀卡成功返回0
函數(shù)原型:
long WINAPI PEU_Reader_ReadIDCard(long ReaderHandle, char * pErrMsg);
參數(shù):
ReaderHandle:[IN] EU_Reader_Open函數(shù)的返回值
pErrMsg: [OUT]錯(cuò)誤提示,50字節(jié)
返回值:讀卡成功返回0,讀卡成功后可調(diào)用下文get函數(shù)獲取信息
PEU_Reader_ReadIDCardFp(文字+照片+指紋)
函數(shù)原型:
long WINAPI PEU_Reader_ReadIDCardFp(long ReaderHandle, char * pErrMsg);
參數(shù):
ReaderHandle:[IN] EU_Reader_Open函數(shù)的返回值
pErrMsg: [OUT]錯(cuò)誤提示,50字節(jié)
返回值:讀卡成功返回0,讀卡成功后可調(diào)用下文get函數(shù)獲取信息
函數(shù)原型:long WINAPI PEU_Reader_ID_ReadUID(long ReaderHandle,unsigned char* UID);
參數(shù):
ReaderHandle:[IN] EU_Reader_Open函數(shù)的返回值
Response:[OUT]身份物理ID號(hào),16字節(jié)字符串
返回值:成功返回0,其它值失敗。
函數(shù)原型:long WINAPI PEU_Reader_ID_Request(long ReaderHandle);
參數(shù):
ReaderHandle:[IN] EU_Reader_Open函數(shù)的返回值
返回值:成功返回0,其它值失敗。
函數(shù) | 獲取信息功能 | 包含證件類型 |
int WINAPI GetCardType(); | 獲取證件類型 0:居民身份證 1:外國人永久居留證 2:港澳臺(tái)居民居住證 | |
int WINAPI GetName(char* pName); | 姓名(類型為1時(shí)表示:外國人中文姓名) | 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); | 公民身份證號(hào)碼(類型為1時(shí)表示:外國人居留證號(hào)碼) | 0、1、2 |
int WINAPI GetDepartemt(char* pDepartemt); | 簽發(fā)機(jī)關(guān) | 0、2 |
intWINAPI GetEffectDate(char* pEffectDate); | 有效起始日期 | 0、1、2 |
int WINAPI GetExpireDate(char* pExpireDate); | 有效截止日期 | 0、1、2 |
int WINAPI GetBmpFileData(char* pBmpFileData); | bmp格式照片數(shù)據(jù) | 0、1、2 |
int WINAPIGetBmpFile(char* pBmpfilepath); | 生成照片,入?yún)⒖嘉闹?.4.1 | 0、1、2 |
int WINAPI IsFingerExist(); | 是否含存在指紋信息: 存在時(shí)返回512或者1024 不存在時(shí)返回0 | 0、2 |
int WINAPIGetFingerprint(unsigned char* fpInfo); | 獲取指紋數(shù)據(jù): 成功時(shí)返回獲取到的字節(jié)長(zhǎng)度 | 0、2 |
int WINAPI GetEnName(char* pEnName); | 外國人英文姓名 | 1 |
int WINAPI GetNationalityCode(char* pNationalityCode); | 外國人國籍代碼,符合GB/T2659-2000規(guī)定 | 1 |
int WINAPI GetTXZHM(char* pTXZHM); | 港澳臺(tái)通行證號(hào)碼 | 2 |
int WINAPI GetTXZQFCS(char* pTXZQFCS); | 港澳臺(tái)通行證簽發(fā)次數(shù) | 2 |
注:以上函數(shù)須在 “PEU_Reader_ReadIDCard” 函數(shù)執(zhí)行成功之后調(diào)用,否則獲取不到有效信息。 |
函數(shù)原型:long WINAPI EU_Reader_GetSAMID(long ReaderHandle,char *SAMID);
參數(shù):
ReaderHandle:[IN] EU_Reader_Open函數(shù)的返回值
SAMID: [OUT]返回的數(shù)據(jù)
返回值:0表示成功,其它表示失敗。
函數(shù)原型:long WINAPI Rcard(long ReaderHandle,unsigned char ctime,int track,unsigned char *rlen,unsigned char *getdata);
參數(shù):
ReaderHandle:[IN] EU_Reader_Open函數(shù)的返回值
ctime: [IN]超時(shí)時(shí)間,單位:秒
track: [IN]磁道(1~3)磁道1~~磁道3,track=4時(shí)表示全軌一次性刷出,返回?cái)?shù)據(jù)為TLV格式,例如:010101020201020303010203
rlen: [OUT]返回?cái)?shù)據(jù)的長(zhǎng)度
data: [OUT]返回的數(shù)據(jù)
返回值:0表示成功,其它表示失敗。
函數(shù)原型:long WINAPI HexToStr(unsigned char *Src,int len,unsigned char *Des );
參數(shù):
Src: [IN]十六進(jìn)制數(shù)組
Len: [IN]數(shù)據(jù)長(zhǎng)度
Des: [OUT]轉(zhuǎn)換好的hexstr格式字符串。
返回值:返回0
函數(shù)原型:long WINAPI StrToHex(unsigned char *Src, int len,unsigned char *Des);
參數(shù):
Src: [IN]hexstr格式字符串
Len: [IN]字節(jié)長(zhǎng)度
Des: [OUT]轉(zhuǎn)換好的數(shù)據(jù)
返回值:返回轉(zhuǎn)換好的十六進(jìn)制數(shù)據(jù)。
1 設(shè)置為TypeA卡片
2 請(qǐng)求卡片
3 防碰撞
4 選擇卡片
5 上電
6 APDU 命令
1 設(shè)置為TypeB卡片
2 上電
3 選卡
4 APDU 命令
1 請(qǐng)求卡片
2 防碰撞
3 選擇卡片
4 認(rèn)證密鑰
5 讀或?qū)?/span>
1 上電復(fù)位
2 APDU 命令
函數(shù)原型:long WINAPI PEU_Reader_Inventory (long ReaderHandle,unsigned char* Response);
參數(shù):
ReaderHandle:[IN] EU_Reader_Open函數(shù)的返回值
Response: [OUT] 尋卡得到8字節(jié)卡片數(shù)據(jù)
返回值:成功返回0。
函數(shù)原型:long WINAPI PEU_Reader_SystemInfor(long ReaderHandle,unsigned char* Response);
參數(shù):
ReaderHandle:[IN] EU_Reader_Open函數(shù)的返回值
Response: [OUT] 得到14字節(jié)卡片數(shù)據(jù)
返回值:成功返回0。
函數(shù)原型:long WINAPI PEU_Reader_15693_Read (long ReaderHandle, unsigned char blk_add, unsigned char* Response);
參數(shù):
ReaderHandle:[IN] EU_Reader_Open函數(shù)的返回值
blk_add:[IN] 塊地址
Response: [OUT] 得到4字節(jié)卡片數(shù)據(jù)
返回值:成功返回0。
函數(shù)原型:long WINAPI PEU_Reader_15693_Write(long ReaderHandle, unsigned char blk_add, unsigned char* Response);
參數(shù):
ReaderHandle:[IN] EU_Reader_Open函數(shù)的返回值
blk_add:[IN] 塊地址
Response: [IN] 要寫入的4字節(jié)卡片數(shù)據(jù)
返回值:成功返回0。
函數(shù)原型:long WINAPI PEU_Reader_AFI(long ReaderHandle, unsigned char* data, unsigned char* Response);
參數(shù):
ReaderHandle:[IN] EU_Reader_Open函數(shù)的返回值
data:[IN] data[0] 為0表示寫AFI,為1則表示鎖AFI,
data[0]為0時(shí) data[1]為有效AFI值。
Response: [OUT] NULL.
返回值:成功返回0。
函數(shù)原型:long WINAPI PEU_Reader_DSFID(long ReaderHandle, unsigned char* data, unsigned char* Response);
參數(shù):
ReaderHandle:[IN] EU_Reader_Open函數(shù)的返回值
data:[IN] data[0] 為0表示寫DSFID,為1則表示鎖AFI,
data[0]為0時(shí) data[1]為有效DSFID值。
Response: [OUT] NULL.
返回值:成功返回0。
(*由于產(chǎn)品升級(jí)或其他原因,明創(chuàng)IDR-100U多功能身份證閱讀器Windows/Android/Linux開發(fā)包下載產(chǎn)品實(shí)際參數(shù)有可能變更,以實(shí)際產(chǎn)品為準(zhǔn)。本文中的所有陳述、信息和建議也不構(gòu)成任何明示或暗示的擔(dān)保)