DONSEE东信智能 - 中国领先的身份证社保卡智能终端应用服务商

eastcoms@qq.com
400-6722-705
首页 > 服务支持专区 > 产品支持 > SDK和软件下载

东信EST-100系列Android开发包(含身份证、社保卡、CPU、M1、磁条卡、银行卡等卡)

来源:www.eastcoms.com   标签:开发包 安卓 Android EST-100 东信   发布时间: 2019-8-10 16:03:25

东信EST-100系列Android开发包(含身份证、社保卡、CPU、M1、磁条卡、银行卡等卡)

东信EST-100系列Android开发包(含身份证、社保卡、CPU、M1、磁条卡、银行卡等卡),USB版本

东信EST-100系列Android开发包(含身份证、社保卡、CPU、M1、磁条卡、银行卡等卡)

提取码:f4qk

版本:V2019.05.27

EST-100多合一读卡器SDK简介

本文档描述了EST-100型号读写器SDK的函数定义、调用方法、参数以及返回值说明,供开发人员进行二次开发时使用。

三、函数说明

3.1、设备类

3.1.1、连接读卡器

函数原型:boolean  openDevice();

参数:无

返回值:连接成功返回true。

3.1.2、断开连接

函数原型:void  closeDevice();

参数:无

返回值:无 

3.1.3、蜂鸣器

函数原型:boolean  demoBeepOn();

参数:无

返回值:成功返回true。


3.2、接触类

3.2.1、CPU卡

3.2.1.1、CPU卡上电复位

函数原型:

int ICC_Reader_pre_PowerOn(byteICC_Slot_No,byte[] Response);

参数:

ICC_Slot_No:[IN]卡座号(如下)

0x01:主卡座

0x11~0x14:SAM1~SAM4卡座

Response:[OUT]上电返回的ATR


返回值:成功返回ATR的长度,<= 0表示失败。


3.2.1.2、CPU卡执行APDU命令

函数原型:int ICC_Reader_Application(byteICC_Slot_No,

 IntLenth_of_Command_APDU,

 byte[]Command_APDU,

byte[]Response_APDU);

参数:

ICC_Slot_No:[IN]卡座号,同上电复位

Lenth_of_Command_APDU:[IN]APDU命令长度

Command_APDU:[IN]APDU命令

Response_APDU:[OUT]响应数据

返回值:

成功返回响应数据的长度,<= 0表示失败

3.3、非接类

3.3.1、非接卡前置步骤(必须)

3.3.1.1、设置为TypeA

函数原型:int PICC_Reader_SetTypeA();

参数:无

返回值:成功返回0

3.3.1.2、请求卡片

函数原型:int PICC_Reader_Request();

参数:无

返回值:成功返回0

3.3.1.3、防碰撞

函数原型:int PICC_Reader_anticoll(byte[] uid);

参数:

Uid:[OUT] 卡片物理卡号,4字节

返回值:成功返回长度

3.3.1.4、选择卡片

函数原型:int PICC_Reader_Select(byte cardtype);

参数:

Cardtype:[IN]0x41表示TypeA/M1,0x42表示TypeB

返回值:成功返回0

3.3.2、非接CPU卡(TypeA)

3.3.2.1、TypeA卡上电复位

函数原型:int PICC_Reader_PowerOnTypeA(byte[] Response);

参数:

Response:[OUT]上电返回数据(ATS)

返回值:成功返回ATS长度,<= 0表示失败。

3.3.2.2、TypeA卡执行APDU命令

函数原型:int PICC_Reader_Application(IntLenth_of_Command_APDU,

 byte[]Command_APDU,

byte[]Response_APDU);

参数: 

Lenth_of_Command_APDU:[IN]APDU命令长度

Command_APDU:[IN]APDU命令

Response_APDU:[OUT]响应数据

返回值:

成功返回响应数据的长度,<= 0表示失败


3.3.3、Mifare One(M1卡) 系列

3.3.3.1、认证秘钥

函数原型:int PICC_Reader_Authentication_Pass(byte mode, byte secnr, byte[] Key);

参数:

Mode:[IN]要认证的Key类型,0x60表示KeyA,0x61表示KeyB。

Secnr:[IN]扇区号,S50卡范围:0~15(绝大多数)、S70卡范围0~63

Key:[IN]秘钥,6字节

返回值:返回0表示成功,其他值失败。

3.3.3.2、读卡

函数原型:int PICC_Reader_Reead(byte addr, byte[] Response);

参数:

Addr:[IN]块地址S50卡:0~63、S70卡:0~255

Response:[OUT]读出的卡数据,16字节

返回值:成功返回0,其它值失败。

3.3.3.3、写卡

函数原型:int PICC_Reader_Write(byte addr, byte[] Data);

参数:

Addr:[IN]块地址S50卡:0~63、S70卡:0~255

Data:[IN]待写入的卡数据,16字节

返回值:成功返回0,其它值失败。


3.4、身份证、港澳台居民居住证、外国人永久居留证

3.4.1、读身份证信息(文字+照片,仅支持身份证)

函数原型:

(1)int PICC_Reader_ReadID();//文字+照片,不含指纹信息

(2)int PICC_Reader_ReadIDFp(); //文字+照片,含指纹信息

参数:无

返回值:成功返回0.

操作提示:成功后调用 get函数获取居民身份证的各项信息即可。

3.4.2、读卡(身份证+居住证+永居证)

函数原型:

(1)int PICC_ReadIDCardMsg (String pkName); //文字+照片,不含指纹信息

(2)int PICC_ReadIDCardMsgFp (String pkName); //文字+照片,含指纹信息

参数:

pkName:[IN]包名,例如: String  pkName=this.getPackageName(); 


返回值:读卡成功返回0

操作提示:成功后,先获取证件类型,得到证件类型之后再获取对应的信息。

3.4.3、读身份证物理ID号

函数原型:int PICC_Reader_ID_ReadUID(byte[] Response);

参数:

Response:[OUT]身份物理ID号,16字节

返回值:成功返回长度,其它值失败。


3.4.4、查询天线区域有无身份证

函数原型:int PICC_Reader_ID_Request();


参数:无

返回值:成功返回0,其它值失败。

3.4.5 get函数

函数名

(返回数据类型:String,红色标记的为int 型)

获取信息功能包含证件类型

GetCardType根据返回值判断:

0:居民身份证

1:外国人永久居留证

2:港澳台居民居住证

getName姓名(类型为1时表示:外国人中文姓名)0、1、2

getSex性别0、1、2

getNation民族0

getBirth出生日期0、1、2

getAddress住址0、2

getIDNo公民身份证号码(类型为1时表示:外国人居留证号码)0、1、2

getDepartment签发机关0、2

getEffectDate有效起始日期0、1、2

getExpireDate有效截止日期0、1、2

getBitmapbmp照片0、1、2

IsFingerExist根据返回值判断:

0:无指纹信息

512:一根手指数据长度

1024:两根手指数据长度0、2

getFingerPrint指纹数据0、2

getEnName外国人英文姓名1

getNationalityCode外国人国籍代码,符合GB/T2659-2000规定1

getTXZHM港澳台通行证号码2

getTXZQFCS港澳台通行证签发次数2


注: 以上函数须在 “PICC_ReadIDCardMsg” 函数执行成功之后调用,否则获取不到有效信息。





3.5、磁条

函数原型:int  Rcard(int ctime, int track, int[] rlen, byte[] data);

参数:

ctime:[IN]超时时间,单位:秒

track:[IN]磁道(1~3)磁道1~~磁道3.

rlen:[OUT]返回数据的长度

data:[OUT]返回的数据

返回值:0表示成功,其它表示失败。


3.6、辅助函数

3.6.1、btyes数组转hexstr字符串,例如:0x11,0x22   “1122”

函数原型:String arrayByteToString(byte[] Src, int len);

参数:

Src:[IN]bytes array

Len:[IN]数据长度

返回值:返回转换好的hexstr格式字符串。

3.6.1、hexstr字符串转btyes数组,例如:“1122”    0x11,0x22

函数原型:byte[] HexString2Bytes(String src);

参数:

Src:[IN]hexstr格式字符串


返回值:返回转换好的bytes数据。


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、读社保卡

函数原型:int iReadSiCard(byte[] kh, byte[] xm, byte[] sfzh, byte[] csrq);

参数:

kh:[OUT]社保卡卡号 

xm:[OUT]姓名

sfzh:[OUT]身份证号

csrq:[OUT]出生日期


返回值:成功返回0。


3.9、读银行卡号

函数原型:String readBankCardNo( byte iType );

参数:

iType:[IN] 读卡方式,1=插卡式,2=感应式

返回值:

成功返回银行卡号,失败返回”NULL”。


4.0、 15693卡

4.0.1、15693寻卡

函数原型:int PICC_Reader_Inventory (byte[] Response);

参数:

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

返回值:成功返回数据长度。


4.0.2、15693获取卡片详细信息

函数原型:int PICC_Reader_SystemInfor(byte[] Response);

参数:

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

返回值:成功返回数据长度。


4.0.3、15693读卡

函数原型:int PICC_Reader_15693_Read (byte blk_add, byte[] Response);

参数:

blk_add:[IN] 块地址

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

返回值:成功返回数据长度。


4.0.4、15693写卡

函数原型:int PICC_Reader_15693_Write(byte blk_add, byte[] Response);

参数:

blk_add:[IN] 块地址

Response: [IN] 要写入的4字节卡片数据

返回值:成功返回0。


4.0.5、15693_AFI操作

函数原型:int PICC_Reader_AFI(byte bysType, byte data);

参数:

bysType:[IN] bysType=0表示写AFI,=1表示锁AFI。

data:[IN] AFI值, bysType为0时有效。

返回值:成功返回0。


4.0.6、15693_DSFID操作

函数原型:int PICC_Reader_DSFID(byte bysType, byte data);

参数:

bysType:[IN] bysType=0表示写DSFID,=1表示锁DSFID。

data:[IN] DSFID值, bysType为0时有效。

返回值:成功返回0。


4.0.7、15693_锁定块

函数原型:int PICC_Reader_LockDataBlock(byte blk_add);

参数: 

blk_add:[IN] 块地址 

返回值:成功返回0。


 

 
QQ在线咨询