以下开发包支持明创IDR-100U HID整机、IDR-M10、IDR-M20、IDR-M30等多功能免驱系列身份证阅读器、社保卡读卡器整机和模组等产品,供开发人员适用。
Windows平台开发包,包括BS,C/S,支持USB和串口:
Android平台开发包,包括USB和串口:
Linux平台开发包,包括USB和串口:
串口协议,支持单片机PLC等开发:
本文档描述了明创多功能身份证阅读器SDK的函数定义、调用方法、参数以及返回值说明,供开发人员进行二次开发时使用。EU开头的是接触卡,PEU开头的是非接卡。
函数原型:long WINAPI EU_Reader_Open(char* dev_Name);
参数:[IN] dev_Name:固定值 “USB1”.
返回值:连接成功时返回句柄值(大于0),该值需保存作为其他函数的入参。
函数原型:long WINAPI EU_Reader_Close(long ReaderHandle);
参数:ReaderHandle:[IN] EU_Reader_Open函数的返回值
返回值:无
函数原型:long WINAPI EU_PosBeep(long ReaderHandle, unsigned char time);
参数:
ReaderHandle:[IN] EU_Reader_Open函数的返回值
Time:[IN] 蜂鸣时间,0~10
返回值:成功返回0。
3.1.4天线开关
long WINAPI PEU_Reader_RFControl(long ReaderHandle,short type);
//type=0 关闭天线 type=1 打开天线
函数原型:
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表示失败。
函数原型: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表示失败
读社保卡
函数原型: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]社保卡卡号
XM: [OUT]姓名
XB: [OUT]性别
MZ: [OUT]民族
CSRQ: [OUT]出生日期
SHBZHM: [OUT]身份证号
FKRQ: [OUT]发卡日期
FKRQ: [OUT]卡有效期
ErrMsg:[OUT]错误信息
返回值:成功返回0
函数原型: long WINAPI PEU_Reader_SetTypeA(long ReaderHandle);
long WINAPI PEU_Reader_SetTypeB(long ReaderHandle);
参数:
ReaderHandle:[IN] EU_Reader_Open函数的返回值
返回值:成功返回0
函数原型:long WINAPI PEU_Reader_Request(long ReaderHandle);
参数:
ReaderHandle:[IN] EU_Reader_Open函数的返回值
返回值:成功返回0
函数原型:long WINAPI PEU_Reader_anticoll(long ReaderHandle,unsigned char *uid);
参数:
ReaderHandle:[IN] EU_Reader_Open函数的返回值
Uid:[OUT] 卡片物理卡号,4字节
返回值:成功返回0
函数原型:long WINAPI PEU_Reader_Select(long ReaderHandle,unsigned char cardtype);
参数:
ReaderHandle:[IN] EU_Reader_Open函数的返回值
Cardtype:[IN]0x41表示TypeA/M1,0x42表示TypeB
返回值:成功返回0
函数原型:long WINAPI PEU_Reader_PowerOnTypeA(long ReaderHandle,unsigned char* Response);
参数:
ReaderHandle:[IN] EU_Reader_Open函数的返回值
Response:[OUT]上电返回数据(ATS)
返回值:成功返回ATS长度,<= 0表示失败。
函数原型: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表示失败
函数原型: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 带密钥参数
函数原型: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,其它值失败。
函数原型: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,其它值失败。
函数原型:
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
函数原型:
long WINAPI PEU_Reader_ReadIDCard(long ReaderHandle, char * pErrMsg);
参数:
ReaderHandle:[IN] EU_Reader_Open函数的返回值
pErrMsg: [OUT]错误提示,50字节
返回值:读卡成功返回0,读卡成功后可调用下文get函数获取信息
PEU_Reader_ReadIDCardFp(文字+照片+指纹)
函数原型:
long WINAPI PEU_Reader_ReadIDCardFp(long ReaderHandle, char * pErrMsg);
参数:
ReaderHandle:[IN] EU_Reader_Open函数的返回值
pErrMsg: [OUT]错误提示,50字节
返回值:读卡成功返回0,读卡成功后可调用下文get函数获取信息
函数原型:long WINAPI PEU_Reader_ID_ReadUID(long ReaderHandle,unsigned char* UID);
参数:
ReaderHandle:[IN] EU_Reader_Open函数的返回值
Response:[OUT]身份物理ID号,16字节字符串
返回值:成功返回0,其它值失败。
函数原型:long WINAPI PEU_Reader_ID_Request(long ReaderHandle);
参数:
ReaderHandle:[IN] EU_Reader_Open函数的返回值
返回值:成功返回0,其它值失败。
函数 | 获取信息功能 | 包含证件类型 |
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.1 | 0、1、2 |
int WINAPI IsFingerExist(); | 是否含存在指纹信息: 存在时返回512或者1024 不存在时返回0 | 0、2 |
int WINAPIGetFingerprint(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” 函数执行成功之后调用,否则获取不到有效信息。 |
函数原型:long WINAPI EU_Reader_GetSAMID(long ReaderHandle,char *SAMID);
参数:
ReaderHandle:[IN] EU_Reader_Open函数的返回值
SAMID: [OUT]返回的数据
返回值:0表示成功,其它表示失败。
函数原型: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表示成功,其它表示失败。
函数原型:long WINAPI HexToStr(unsigned char *Src,int len,unsigned char *Des );
参数:
Src: [IN]十六进制数组
Len: [IN]数据长度
Des: [OUT]转换好的hexstr格式字符串。
返回值:返回0
函数原型:long WINAPI StrToHex(unsigned char *Src, int len,unsigned char *Des);
参数:
Src: [IN]hexstr格式字符串
Len: [IN]字节长度
Des: [OUT]转换好的数据
返回值:返回转换好的十六进制数据。
1 设置为TypeA卡片
2 请求卡片
3 防碰撞
4 选择卡片
5 上电
6 APDU 命令
1 设置为TypeB卡片
2 上电
3 选卡
4 APDU 命令
1 请求卡片
2 防碰撞
3 选择卡片
4 认证密钥
5 读或写
1 上电复位
2 APDU 命令
函数原型:long WINAPI PEU_Reader_Inventory (long ReaderHandle,unsigned char* Response);
参数:
ReaderHandle:[IN] EU_Reader_Open函数的返回值
Response: [OUT] 寻卡得到8字节卡片数据
返回值:成功返回0。
函数原型:long WINAPI PEU_Reader_SystemInfor(long ReaderHandle,unsigned char* Response);
参数:
ReaderHandle:[IN] EU_Reader_Open函数的返回值
Response: [OUT] 得到14字节卡片数据
返回值:成功返回0。
函数原型: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。
函数原型: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。
函数原型: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。
函数原型: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。
(*由于产品升级或其他原因,明创IDR-100U多功能身份证阅读器Windows/Android/Linux开发包下载产品实际参数有可能变更,以实际产品为准。本文中的所有陈述、信息和建议也不构成任何明示或暗示的担保)