東信EST-100/EST-100GS/EST-J13X系列Android開發包(含身份證、社???、CPU、M1、磁條卡、銀行卡等卡)
東信EST-100系列Android開發包(含身份證、社???、CPU、M1、磁條卡、銀行卡等卡),支持東信EST-100、EST-100G、EST-J13X、EST-100GS等機型,僅供開發人員和測試人員使用,包括armeabi/armeabi-v7a/armeabi-v8a/x86/x64等安卓處理器使用。
開發包分為Android Studio編譯和Eclipse兩種編譯環境,請根據實際需要選擇對應的版本下載。
Arm Android平臺開發包下載地址:
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、讀社???/p>
函數原型:int iReadSiCard(byte[] kh, byte[] xm, byte[] sfzh, byte[] csrq);
參數:
kh:[OUT]社??ㄌ?nbsp;
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。