• 广东明创智慧科技有限公司是中国专业的身份证阅读器供应商,
  • 专注身份证阅读器、指纹采集仪、社保卡读卡器、IC卡读写器的一家身份证应用服务平台
服务热线:400-0020-908 官方微信 产品标签 网站地图 EN

明创智慧

当前位置: 首页 > 服务支持专区 > SDK开发包 > 正文

明创IDR-100U多功能身份证阅读器Windows/Android/Linux开发包下载

来源:www.mingcreate.cn   标签:IDR-100U HID 多功能 开发包 Windows Android Linux   最近更新:2022-2-19

3333.jpg

以下开发包支持明创IDR-100U HID整机、IDR-M10、IDR-M20、IDR-M30等多功能免驱系列身份证阅读器、社保卡读卡器整机和模组等产品,供开发人员适用。


Windows平台开发包,包括BS,C/S,支持USB和串口:

点击这里下载↓



Android平台开发包,包括USB和串口:

点击这里下载↓



Linux平台开发包,包括USB和串口:

点击这里下载↓



串口协议,支持单片机PLC等开发:

点击这里下载↓





本文档描述了明创多功能身份证阅读器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.1.4天线开关

long WINAPI PEU_Reader_RFControl(long ReaderHandle,short type);

//type=0 关闭天线 type=1 打开天线

 

3.2、接触类

3.2.1、CPU卡&社保卡

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表示失败

 

 

读社保卡

函数原型: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

 

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函数获取信息

 

PEU_Reader_ReadIDCardFp(文字+照片+指纹)

函数原型:

long WINAPI PEU_Reader_ReadIDCardFp(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号,16字节字符串

返回值:成功返回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.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” 函数执行成功之后调用,否则获取不到有效信息。

 

 

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.1hexstr字符串转十六进制数组,例如:“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.1    typeACPU 卡操作顺序

1 设置为TypeA卡片

2 请求卡片

3 防碰撞

4 选择卡片

5 上电

6  APDU 命令

3.7.2    typeB 卡操作顺序

1 设置为TypeB卡片

2 上电

3 选卡

4  APDU 命令

3.7.3    M1卡操作顺序

1 请求卡片

2 防碰撞

3 选择卡片

4 认证密钥

读或写

3.7.4    接触CPU卡操作顺序

上电复位

2  APDU 命令

 

3.8 15693

3.8.115693寻卡

函数原型:long WINAPI PEU_Reader_Inventory (long ReaderHandle,unsigned char* Response);

参数:

    ReaderHandle:[IN] EU_Reader_Open函数的返回值

    Response: [OUT] 寻卡得到8字节卡片数据

返回值:成功返回0。

 

3.8.215693获取卡片详细信息

函数原型:long WINAPI PEU_Reader_SystemInfor(long ReaderHandle,unsigned char* Response);

参数:

    ReaderHandle:[IN] EU_Reader_Open函数的返回值

    Response: [OUT] 得到14字节卡片数据

返回值:成功返回0。

 

3.8.315693读卡

函数原型: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.415693写卡

函数原型: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.515693_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.615693_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。










(*由于产品升级或其他原因,明创IDR-100U多功能身份证阅读器Windows/Android/Linux开发包下载产品实际参数有可能变更,以实际产品为准。本文中的所有陈述、信息和建议也不构成任何明示或暗示的担保)