支持IC卡讀卡器在andriod中應(yīng)用,andriod4.0及以上
目錄
高頻HF讀寫器NFC讀寫器安卓開發(fā)
簡介
NFC讀寫器Android開發(fā)指南
類usbreader
類readerhardware
類iso14443A
類PSam
類id2card
超高頻UHF讀寫器安卓開發(fā)
簡介
NFC讀寫器Android開發(fā)指南
類usbreader
類readerhardware
類G2
隨著Android系統(tǒng)的設(shè)備越來越多,在Andriod設(shè)備上使用NFC讀寫器變得越來越廣泛。為了將NFC讀寫器應(yīng)用android設(shè)備上,友我科技獨(dú)立研發(fā)了NFC讀寫器的android開發(fā)包,使用此開發(fā)包,工程師只需在工程中導(dǎo)入jar包,使用java語言就可以輕松的開發(fā)出Android下的NFC讀寫器應(yīng)用APP。
友我科技NFC讀寫器Android開發(fā)包相關(guān)信息:
| 項(xiàng)目 | 信息 |
|---|---|
| 支持的Android系統(tǒng) | 4.0及以上版本 |
| 讀卡器接口 | USB HID(需OTG數(shù)據(jù)線) |
| jar包及下載 | yoworfidreader.jar |
| 支持的NFC讀寫器 | YW-605HA,YW-607 |
| 獲取NFC讀寫器樣品 | YW-605HA,YW-607 |
| 演示程序 |
掃描下載:
|
在所有API接口中有3種返回值,說明如下:
第一種:void, 無任何返回值
第二種:int,返回整形,>=0為成功,<0為失敗
第三種:byte[], byte數(shù)組, 如果為null則為失敗,只要不為null,就是執(zhí)行成功
首先在工程中導(dǎo)入yoworfidreader.jar接口包,同時(shí)在在order and Export中選中yoworfidreader.jar 包,這樣可以隨著你的應(yīng)用程序一起發(fā)布。


然后再自己的工程中創(chuàng)建usbreader的object,如下所示:
public usbreader rfidreader;
rfidreader = new usbreader();
只要rfidreader!=null,就可以使用了。
類usbreader的屬性:
| 屬性名 | 類型(類名) | 名稱 | 備注 |
|---|---|---|---|
| ReaderHardware | readerhardware | NFC讀卡器硬件操作類 | 可以操作讀卡器的蜂鳴器,LED燈等 |
| ISO14443A | iso14443A | ISO14443A類型卡片操作類 | 讀寫M1卡,CPU卡等卡片 |
| ISO15693 | iso15693 | ISO15693類型卡片操作類 | 讀寫15693卡,包含Tagit,ICode2,MB89R118C等 |
| ID2Card | id2card | 身份證卡片操作類 | 讀取身份證卡的卡號 |
| PSAM | PSam | PSAM卡操作類
|
操作PSAM卡 |
1. void TryUSB(Context context)
TryUSB方法的作用是嘗試連接USB設(shè)備,在android系統(tǒng)下,連接USB設(shè)備會出現(xiàn)權(quán)限的提示窗口,需要此時(shí)點(diǎn)擊是按鈕。
rfidreader.TryUSB(this);
2. boolean Initial(Context context)
Initial方法的作用是初始化 NFC讀寫器,只有經(jīng)過初始化后才能對讀卡器進(jìn)行其他操作。初始化成功返回true,失敗返回false。
rfidreader.Initial(this);
usbreader類有多個(gè)public的屬性,這些屬性分別操作各類IC卡片
1、ReaderHardware,類名:readerhardware,功能:管理讀卡器硬件和切換卡片類型
類readerhardware的屬性:
| 屬性名 | 類型 | 名稱 | 備注 |
|---|---|---|---|
| SEARCHCARDMODE_14443A | byte | A類卡 | 常量,讀寫M1卡,CPU卡等卡片,需要切換此種類型 |
| SEARCHCARDMODE_14443B | byte | B類卡 | 常量,身份證卡切換的類型 |
| SEARCHCARDMODE_15693 | byte | 15693卡 | 常量,15693卡切換的類型 |
1.1 int YW_GetLibVersion()
YW_GetLIBVersion方法獲取jar庫的版本號。如下代碼所示:
int Ver = rfidreader.ReaderHardware.YW_GetLibVersion();
1.2 int YW_GetReaderVersion()
YW_GetReaderVersion方法獲取NFC讀寫器的版本號。如下代碼所示:
int Ver = rfidreader.ReaderHardware.YW_GetReaderVersion();
1.3 byte[] YW_GetReaderSerial()
YW_GetReaderSerial方法獲取NFC讀寫器的序列號。如下代碼所示:
byte[] SerialNo = rfidreader.ReaderHardware.YW_GetReaderSerial();
1.4 byte[] YW_GetReaderNo()
YW_GetReaderSerial方法獲取NFC讀寫器型號。如下代碼所示:
byte[] ModelNo = rfidreader.ReaderHardware.YW_GetReaderNo();
1.5 int YW_Buzzer(int Time_ON, int Time_OFF, int Cycle)
YW_Buzzer方法控制NFC讀寫器的蜂鳴器。參數(shù)如下:
Time_ON: 蜂鳴器鳴叫的時(shí)間(100ms單位)
Time_OFF: 蜂鳴器不響的時(shí)間(100ms單位)
Cycle:上述循環(huán)的次數(shù)
rfidreader.ReaderHardware.YW_Buzzer(5,5,1);
1.6 int YW_Led(int LEDIndex, int Time_ON, int Time_OFF, int Cycle, int LedIndexOn)
YW_Led方法控制NFC讀寫器的LED燈。參數(shù)如下:
LEDIndex:LED燈的序號
Time_ON: 蜂鳴器鳴叫的時(shí)間(100ms單位)
Time_OFF: 蜂鳴器不響的時(shí)間(100ms單位)
Cycle:上述循環(huán)的次數(shù)
LedIndexOn:最后燈亮的LED序號
rfidreader.ReaderHardware.YW_Led(1,5,5,1,1);
1.7 int YW_AntennaStatus(boolean ATStatus)
YW_AntennaStatus方法控制NFC讀寫器天線狀態(tài)。參數(shù)如下:
ATStatus:true為開天線,false為關(guān)天線,默認(rèn)狀態(tài)下天線時(shí)開啟的
rfidreader.ReaderHardware.YW_AntennaStatus(true);
1.8 int YW_SearchCardMode(byte Mode)
YW_SearchCardMode方法控制NFC讀寫器天操作的卡類型。PSAM卡不用切換,參數(shù)如下:
Mode:卡的類型,值分別如下:
SEARCHCARDMODE_14443A,A類卡
SEARCHCARDMODE_14443B,B類卡
SEARCHCARDMODE_15693,15693類卡
rfidreader.ReaderHardware.YW_SearchCardMode(rfidreader.ReaderHardware.SEARCHCARDMODE_14443A);
2、ISO14443A,類名:iso14443A,功能:操作TypeA卡,包括M1卡,CPU卡等
類iso14443A的屬性:
| 屬性名 | 類型(類名) | 名稱 | 備注 |
|---|---|---|---|
| REQUESTMODE_ALL | byte | 尋所有卡 | 常量 |
| REQUESTMODE_ACTIVE | byte | 尋active的卡 | 常量 |
| Key_A | byte | A密鑰 | 常量 |
| Key_B | byte | B密鑰 | 常量 |
| MULTIMODE_ONE | byte | 返回一張卡
|
常量 |
| MULTIMODE_ERR | byte | 返回錯(cuò)誤
|
常量 |
| CardType | short | 卡類型
|
卡類型,執(zhí)行某些函數(shù)后,會改變此值 |
| CardMemery | byte | 卡內(nèi)存代碼
|
卡內(nèi)存,執(zhí)行某些函數(shù)后,會改變此值 |
| ValueBalance | int | 錢包余額
|
錢包余額,讀取錢包余額成功后,改變此值 |
| ATQA | short | ATQA
|
ATQA,執(zhí)行某些函數(shù)后,會改變此值 |
| SAK | byte | SAK
|
SAK,執(zhí)行某些函數(shù)后,會改變此值 |
類iso14443A的方法:
2.1 int YW_RequestCard(byte requestMode)
YW_RequestCard尋卡。參數(shù)如下:
requestMode:尋卡模式,有如下兩種值可用:
REQUESTMODE_ALL:尋所有的卡
REQUESTMODE_ACTIVE:尋激活的卡
int rt = rfidreader.ISO14443A.YW_RequestCard(rfidreader.ISO14443A.REQUESTMODE_ACTIVE);
2.2 byte[] YW_AntiCollide()
防沖撞讀卡號。
byte[] CardNo = rfidreader.ISO14443A.YW_AntiCollide();
2.3 int YW_CardSelect(byte[] CardNo)
根據(jù)卡號選擇一張卡來操作。參數(shù)如下:
CardNo:要操作的卡號
int rt = rfidreader.ISO14443A.YW_CardSelect(CardNo);
2.4 byte[] YW_AntiCollideAndSelect(byte MultiMode)
防沖撞并且選擇一張卡。該函數(shù)集成了YW_AntiCollide和YW_CardSelect兩個(gè)函數(shù) 參數(shù)如下:
MultiMode:遇到多張卡的處理方式,有兩種值可用
MULTIMODE_ONE:返回一張卡
MULTIMODE_ERR:返回錯(cuò)誤
受影響的屬性值:
CardMemery
byte[] CardNo = rfidreader.ISO14443A.YW_AntiCollideAndSelect(rfidreader.ISO14443A.MULTIMODE_ONE);
2.5 int YW_CardHalt()
對當(dāng)前卡片休眠,休眠后無法使用REQUESTMODE_ACTIVE來尋卡。
int rt = rfidreader.ISO14443A.YW_CardHalt();
2.6 int YW_DownLoadKey(int KeyIndex, byte[] Key)
下載密鑰到讀寫器中, 參數(shù)如下:
KeyIndex:密鑰序號,最多可以下載32組密鑰,序號從0到31
Key:密鑰,6字節(jié)
byte[] Key = new byte[6];
for(int i=0;i<6;i++)Key[i]=0xFF;
rfidreader.ISO14443A.YW_DownLoadKey(0,Key);
2.7 int YW_KeyDown_Authorization(byte KeyMode, int BlockAddr, byte KeyIndex)
使用下載的密鑰進(jìn)行認(rèn)證, 參數(shù)如下:
KeyMode:使用A密鑰還是B密鑰認(rèn)證,Key_A為A密鑰,Key_B為B密鑰
BlockAddr:塊序號
KeyIndex:密鑰序號,0到31
int rtAuth= rfidreader.ISO14443A.YW_KeyDown_Authorization(rfidreader.ISO14443A.Key_A,1,0);
2.8 int YW_KeyAuthorization(byte KeyMode, int BlockAddr, byte[] Key)
使用密鑰進(jìn)行認(rèn)證, 參數(shù)如下:
KeyMode:使用A密鑰還是B密鑰認(rèn)證,Key_A為A密鑰,Key_B為B密鑰
BlockAddr:塊序號
Key:密鑰,6字節(jié)
byte[] Key = new byte[6];
for(int i=0;i<6;i++)Key[i]=0xFF;
int rtAuth= rfidreader.ISO14443A.YW_KeyAuthorization(rfidreader.ISO14443A.Key_A,1,Key);
2.9 byte[] YW_ReadaBlock(int BlockAddr)
讀數(shù)據(jù)塊, 參數(shù)如下:
BlockAddr:塊序號
byte[] Data=rfidreader.ISO14443A.YW_ReadaBlock(1);
2.10 int YW_WriteaBlock(int BlockAddr, byte[] BlockData)
寫數(shù)據(jù)塊, 參數(shù)如下:
BlockAddr:塊序號
BlockData:要寫入的數(shù)據(jù),16字節(jié)
byte[] Data = new byte[16];
for(int i=0;i<16;i++)Data[i]=0xAA;
int rt= rfidreader.ISO14443A.YW_WriteaBlock(1,Data);
2.11 int YW_Purse_Initial(int BlockAddr, int Value)
初始化錢包, 參數(shù)如下:
BlockAddr:塊序號
Value:要初始化的值,16字節(jié)
int rtAuth= rfidreader.ISO14443A.YW_Purse_Initial(1,200);
2.12 int YW_Purse_Read(int BlockAddr)
錢包讀余額,返回值不是余額,如果返回成功,余額等于ValueBalance 參數(shù)如下:
BlockAddr:塊序號
int Balance=0;
int rt= rfidreader.ISO14443A.YW_Purse_Read(1);
if(rt>0)Balance=rfidreader.ISO14443A.ValueBalance;
2.13 int YW_Purse_Charge(int BlockAddr, int Value)
錢包充值,參數(shù)如下:
BlockAddr:塊序號
Value:充值的金額
int rt= rfidreader.ISO14443A.YW_Purse_Charge(1,100)
2.14 int YW_Purse_Decrease(int BlockAddr, int Value)
錢包消費(fèi),參數(shù)如下:
BlockAddr:塊序號
Value:消費(fèi)的金額
int rt= rfidreader.ISO14443A.YW_Purse_Decrease(1,100)
2.15 int YW_Transfer(int BlockAddr)
錢包Transfer,參數(shù)如下:
BlockAddr:塊序號
int rt= rfidreader.ISO14443A.YW_Transfer(1);
2.16 int YW_Restore(int BlockAddr)
錢包Restore,參數(shù)如下:
BlockAddr:塊序號
int rt= rfidreader.ISO14443A.Restore(1);
2.17 byte[] YW_RequestAntiandSelect(byte requestMode,byte MultiMode)
尋卡,防沖突和選卡,如果正確,則返回卡號,此函數(shù)相當(dāng)于執(zhí)行了三個(gè)函數(shù),YW_RequestCard, YW_AntiCollide, YW_CardSelect,參數(shù)如下:
requestMode:尋卡模式,有如下兩種值可用:
REQUESTMODE_ALL:尋所有的卡
REQUESTMODE_ACTIVE:尋激活的卡
MultiMode:遇到多張卡的處理方式,有兩種值可用
MULTIMODE_ONE:返回一張卡
MULTIMODE_ERR:返回錯(cuò)誤
受影響的屬性值:
ATQA,SAK
int rt= rfidreader.ISO14443A.YW_RequestAntiandSelect(rfidreader.ISO14443A.REQUESTMODE_ACTIVE, rfidreader.ISO14443A.MULTIMODE_ONE);
2.18 int YW_WriteM1MultiBlock( int StartBlock, int BlockNums, byte[] AllData)
寫多個(gè)數(shù)據(jù)塊,注意必須在同一個(gè)扇區(qū),不能跨扇區(qū), 參數(shù)如下:
StartBlock:開始塊序號
BlockNums:要寫的塊數(shù)量
AllData:要寫入的數(shù)據(jù),BlockNums*16字節(jié)
byte[] Data = new byte[32];
for(int i=0;i<32;i++)Data[i]=0xAA;
int rt= rfidreader.ISO14443A.YW_WriteM1MultiBlock(1,Data);
2.19 byte[] YW_ReadM1MultiBlock( int StartBlock, int BlockNums)
讀多個(gè)數(shù)據(jù)塊,,注意必須在同一個(gè)扇區(qū),不能跨扇區(qū) 參數(shù)如下:
StartBlock:開始塊序號
BlockNums:要讀的塊數(shù)量
byte[] Data=rfidreader.ISO14443A.YW_ReadaBlock(1,2);
2.20 byte[] YW_TypeA_Reset( byte requestMode, byte MultiMode)
CPU卡復(fù)位,復(fù)位成功,返回復(fù)位信息,參數(shù)如下:
requestMode:尋卡模式,有如下兩種值可用:
REQUESTMODE_ALL:尋所有的卡
REQUESTMODE_ACTIVE:尋激活的卡
MultiMode:遇到多張卡的處理方式,有兩種值可用
MULTIMODE_ONE:返回一張卡
MULTIMODE_ERR:返回錯(cuò)誤
byte[] CPUResetData= rfidreader.ISO14443A.YW_TypeA_Reset(rfidreader.ISO14443A.REQUESTMODE_ACTIVE, rfidreader.ISO14443A.MULTIMODE_ONE);
2.21 byte[] YW_TypeA_COS( byte[] COS)
CPU卡執(zhí)行COS指令,返回執(zhí)行COS的結(jié)果,參數(shù)如下:
COS:COS指令byte數(shù)組
byte[] cos=new byte[5];//獲取8字節(jié)隨機(jī)數(shù)
cos[0]=0;
cos[1]=0x84;
cos[2]=0;
cos[3]=0;
cos[4]=8;
byte[] CPUData= rfidreader.ISO14443A.YW_TypeA_COS(cos);
2.22 byte[] YW_UltraLightRead( int BlockID)
UltraLight卡讀數(shù)據(jù)塊, 參數(shù)如下:
BlockID:塊序號
byte[] Data=rfidreader.ISO14443A.YW_UltraLightRead(1);
2.10 int YW_UltraLightWrite( int BlockID, byte[] BlockData)
UltraLight寫數(shù)據(jù)塊, 參數(shù)如下:
BlockID:塊序號
BlockData:要寫入的數(shù)據(jù),4字節(jié)
byte[] Data = new byte[4];
for(int i=0;i<4;i++)Data[i]=0xAA;
int rt= rfidreader.ISO14443A.YW_UltraLightWrite(1,Data);
類:PSam的屬性:
| 屬性名 | 類型(類名) | 名稱 | 備注 |
|---|---|---|---|
| PSamIndex | byte | PSAM卡序號 | 每個(gè)讀卡器最多帶3個(gè)PSAM卡,依次為1,2,3,指定一個(gè)操作 |
類PSam的方法:
3.1 int YW_SAM_Baud(byte BaudIndex)
指定PSAM卡波特率, 參數(shù)如下:
BaudIndex:波特率序號,從0到9
int rt=rfidreader.PSAM.YW_SAM_Baud(0);
3.2 byte[] YW_SAM_Reset()
PSAM卡復(fù)位,成功返回復(fù)位信息:
byte[] PsamReset=rfidreader.PSAM.YW_SAM_Reset();
3.3 byte[] YW_SAM_Reset_Ex(byte SAMVoltage)
含電壓選擇的PSAM卡復(fù)位,成功返回復(fù)位信息,, 參數(shù)如下:
SAMVoltage:SAM卡電壓,0為3.3V, 1為5V
byte[] PsamReset=rfidreader.PSAM.YW_SAM_Reset_Ex(0);
3.4 byte[] YW_SAM_COS(byte[] COS)
PSAM卡執(zhí)行COS,成功返回結(jié)果信息,, 參數(shù)如下:
COS:SAM卡COS指令
byte[] cos=new byte[5];//獲取8字節(jié)隨機(jī)數(shù)
cos[0]=0;
cos[1]=0x84;
cos[2]=0;
cos[3]=0;
cos[4]=8;
byte[] SAMData= rfidreader.PSAM.YW_SAM_COS(cos);
3.5 int YW_SAM_PPSBaud(byte BaudIndex)
指定PSAM卡PPS波特率, 參數(shù)如下:
BaudIndex:波特率序號,從0到9
int rt=rfidreader.PSAM.YW_SAM_PPSBaud(0);
3.6 int YW_SAM_PPSBaud_Ex(byte BaudIndex, byte Protocol))
帶參數(shù)指定PSAM卡PPS波特率, 參數(shù)如下:
BaudIndex:波特率序號,從0到9
Protocol:指定T=0,T=1協(xié)議
int rt=rfidreader.PSAM.YW_SAM_PPSBaud_Ex(0,0);
4、ID2Card,類名:id2card,功能:操作身份證卡
類:id2card的方法:
4.1 byte[] YW_ChinaIDV2_RequestCardNo()
獲取身份證卡的卡號,不是身份證號碼
rfidreader.ReaderHardware.YW_SearchCardMode(rfidreader.ReaderHardware.SEARCHCARDMODE_14443B);
byte [] idcardNo=rfidreader.ID2Card.YW_ChinaIDV2_RequestCardNo();
|
RFID讀寫器,SDK,IC卡讀卡器,開發(fā)包,二次開發(fā),智能卡讀卡器,RFID讀卡器,CPU卡讀寫器,讀卡模塊 微信掃一掃聯(lián)系我們 |
1 |
RFID讀寫器產(chǎn)品手冊下載 |
2 |
讀寫器開發(fā)SDK下載 |
3 |
WEB讀卡器開發(fā)指南 |
4 |
Windows讀卡器開發(fā)指南 |
5 |
Android讀卡器開發(fā)指南 |
6 |
Wince讀卡器開發(fā)指南 |
7 |
PLC讀卡器開發(fā)指南 |
8 |
Linux讀卡器開發(fā)指南 |
9 |
單片機(jī)讀卡器開發(fā)指南 |
10 |
PCSC讀卡器開發(fā)指南 |