国产偷亚洲偷欧美偷精品_亚洲成a人无码亚洲成www牛牛_广东少妇大战黑人34厘米视频_国产仑乱无码内谢_亚洲性无码一区二区三区

您現(xiàn)在的位置:包裝印刷網(wǎng)>技術(shù)首頁>技術(shù)動(dòng)態(tài)

北京友我科技有限公司

企業(yè)直播推薦

更多>
食品溫度計(jì)SI-692

食品溫度計(jì)SI-692回放

開播時(shí)間03-16 09:30

產(chǎn)品推薦

更多>

IC卡讀卡器開發(fā)指南

2025
01-04

07:01:25

分享:
14
來源:北京友我科技有限公司

IC卡讀卡器開發(fā)指南

1 概述

隨著社會(huì)的發(fā)展和科技的進(jìn)步,IC卡應(yīng)用越來越廣泛。會(huì)員卡,學(xué)生卡,社保卡,公交卡,金融卡等已得到大量的應(yīng)用,可以說IC卡在我們身邊無處不在。IC卡的普及一方面取決于各個(gè)組織的大力推廣,另外也得力于無數(shù)程序員的辛苦工作,將IC卡讀卡器和IC卡融合到各個(gè)系統(tǒng)中。本文將著重介紹IC卡讀卡器在實(shí)際應(yīng)用中編程的流程和步驟,使得IC卡的開發(fā)簡單明了,更縮短我們的開發(fā)周期。

2 非接觸IC卡介紹

非接觸IC卡是IC卡中的一種,由于非接觸IC卡沒有物理磨損,壽命更長,價(jià)格更便宜,使得非接觸IC卡的使用越來越多,有代表性的非接觸IC卡就是M1卡及其兼容卡。下面將以M1卡為例,來介紹M1的內(nèi)部結(jié)構(gòu)。
M1卡有1k和4k之分,內(nèi)部結(jié)構(gòu)基本差不多,以M1卡1K為例:
該IC卡共有16個(gè)扇區(qū),每個(gè)扇區(qū)4個(gè)塊,每塊16字節(jié),所以總共有字節(jié)數(shù)16*4*16=1024個(gè)字節(jié)。
第15扇區(qū)
第63塊
密鑰塊
第62塊
數(shù)據(jù)塊
第61塊
數(shù)據(jù)塊
第60塊
數(shù)據(jù)塊
.
.
.
第1扇區(qū)
第7塊
密鑰塊
第6塊
數(shù)據(jù)塊
第5塊
數(shù)據(jù)塊
第4塊
數(shù)據(jù)塊
第0扇區(qū)
第3塊
密鑰塊
第2塊
數(shù)據(jù)塊
第1塊
數(shù)據(jù)塊
第0塊
存卡號(hào),只讀
每個(gè)扇區(qū)塊用來保存密鑰,故不能當(dāng)作數(shù)據(jù)來使用。第0塊由于是只讀的,也不能用來存取數(shù)據(jù),所以此卡實(shí)際可用的內(nèi)存為(16*3-1)*16= 752字節(jié)。
在讀寫某個(gè)數(shù)據(jù)塊之前,必須首行密鑰認(rèn)證,如果密鑰認(rèn)證失敗,則不能讀寫,只有認(rèn)證成功,方可進(jìn)行讀寫等操作。每個(gè)扇區(qū)共用一組密鑰,所以一個(gè)扇區(qū)只要認(rèn)證成功一次,就可以讀寫此扇區(qū)中的四個(gè)數(shù)據(jù)塊。
每個(gè)可用的數(shù)據(jù)塊可以初始化為整形值或者原始數(shù)據(jù)。原始數(shù)據(jù)可以當(dāng)作普通內(nèi)存使用,整形值可以當(dāng)作錢包等具有加減功能數(shù)字使用。

3 IC卡讀卡器介紹

IC卡讀卡器的種類繁多,這里以性價(jià)比較高的YW-605系列讀卡器來作介紹。
YW-605系列讀卡器具有多種接口,外觀簡潔,美觀大方,可以讀寫市面上大部分非接觸IC卡。

4 IC卡讀卡器API函數(shù)介紹

YW-605系列讀卡器提供二次開發(fā)功能,用戶可以在我們的DLL的基礎(chǔ)上調(diào)用相應(yīng)的函數(shù)開發(fā)應(yīng)用程序,我們提供Delphi,C++Builder,VB,VC等的調(diào)用例程和相關(guān)函數(shù)聲明單元,或者按照讀卡器的通信協(xié)議直接開發(fā)應(yīng)用程序。
庫函數(shù),C++語言版,其它語言見相應(yīng)的函數(shù)聲明文件。
動(dòng)態(tài)庫及讀寫器相關(guān)函數(shù)
1. 讀取庫函數(shù)內(nèi)部版本號(hào)
函數(shù)原形:int stdcall YW_GetDLLVersion(void);
參數(shù)列表:無
返 回 值:大于0為版本號(hào),小于0為錯(cuò)誤
2. DES加解密函數(shù)
函數(shù)原形:int stdcall DES(unsigned char cModel, unsigned char *pkey, unsigned char *in, unsigned char *out);
參數(shù)列表:
參數(shù)
類型
含義
cModel
unsigned char
加解密方向,0為加密,1為解密
pkey
unsigned char*
加解密秘鑰,8個(gè)字節(jié)
in
unsigned char*
原始數(shù)據(jù),8個(gè)字節(jié)
out
unsigned char*
加解密后的數(shù)據(jù),8個(gè)字節(jié)
返 回 值:無意義
3. 3DES加解密函數(shù)
函數(shù)原形:int stdcall DES3(unsigned char cModel, unsigned char *pKey, unsigned char *In, unsigned char *Out);
參數(shù)列表:
參數(shù)
類型
含義
cModel
unsigned char
加解密方向,0為加密,1為解密
pkey
unsigned char*
加解密秘鑰,16個(gè)字節(jié)
in
unsigned char*
原始數(shù)據(jù),8個(gè)字節(jié)
out
unsigned char*
加解密后的數(shù)據(jù),8個(gè)字節(jié)
返 回 值:無意義
4. 帶向量的3DES加解密函數(shù)
函數(shù)原形:int stdcall DES3_CBC(unsigned char cModel, unsigned char *pKey,unsigned char *In, unsigned char *Out, unsigned char *pIV);
參數(shù)列表:
參數(shù)
類型
含義
cModel
unsigned char
加解密方向,0為加密,1為解密
pkey
unsigned char*
加解密秘鑰,16個(gè)字節(jié)
in
unsigned char*
原始數(shù)據(jù),8個(gè)字節(jié)
out
unsigned char*
加解密后的數(shù)據(jù),8個(gè)字節(jié)
pIV
unsigned char*
加解密向量,8個(gè)字節(jié)
返 回 值:無意義
5. 初始化串口
函數(shù)原形:int stdcall YW_ComInitial(int PortIndex, int Baud);
參數(shù)列表:
參數(shù)
類型
含義
PortIndex
int
串口號(hào),1--255
Baud
int
通信波特率,2400—115200,默認(rèn)為19200
返 回 值:1成功,0失敗
6. 釋放串口
函數(shù)原形:int stdcall YW_ComFree(void);
參數(shù)列表:無
返 回 值:1成功,0失敗
7. USB無驅(qū)讀寫器,初始化USB
函數(shù)原形:int stdcall YW_USBHIDInitial(void);
參數(shù)列表:無
返 回 值:1成功,0失敗
8. USB無驅(qū)讀寫器,釋放USB
函數(shù)原形:int stdcall YW_USBHIDFree(void);
參數(shù)列表:無
返 回 值:1成功,0失敗
9. 修改讀寫器串口波特率
函數(shù)原形:int stdcall YW_ComNewBound(int ReaderID ,int NewBound);
參數(shù)列表:
參數(shù)
類型
含義
ReaderID
int
所要獲取的設(shè)備標(biāo)示ID,范圍0x0000-0xFFFF,如果未知,則ReaderID=0
NewBound
int
新的波特率
0x01->9600bps
0x02->14400bps
0x03->19200bps
0x04->28800bps
0x05->38400bps
0x06->57600bps
0x07->115200bps
返 回 值:1成功,0失敗
10. 設(shè)置設(shè)備標(biāo)識(shí)
函數(shù)原形:int stdcall YW_SetReaderID(int OldID, int NewID);
參數(shù)列表:
參數(shù)
類型
含義
OldID
int
老的設(shè)備標(biāo)示ID,范圍0x0000-0xFFFF
NewID
int
修改成新的設(shè)備標(biāo)示ID,范圍0x0000-0xFFFF
返 回 值:1成功,0失敗
11. 查詢?cè)O(shè)備標(biāo)識(shí)
函數(shù)原形:int stdcall YW_GetReaderID(int ReaderID);
參數(shù)列表:
參數(shù)
類型
含義
ReaderID
int
所要獲取的設(shè)備標(biāo)示ID,范圍0x0000-0xFFFF,如果未知,則ReaderID=0
返 回 值:>=0成功,并且為所獲取的設(shè)備標(biāo)示,<0失敗
12. 讀取讀卡器內(nèi)部版本號(hào)
函數(shù)原形:int stdcall YW_GetReaderVersion(int ReaderID);
參數(shù)列表:
參數(shù)
類型
含義
ReaderID
int
所要獲取的設(shè)備標(biāo)示ID,范圍0x0000-0xFFFF,如果未知,則ReaderID=0
返 回 值:大于0為版本號(hào),小于0為錯(cuò)誤
13. 查詢讀寫器產(chǎn)品序列號(hào)
函數(shù)原形:int stdcall YW_GetReaderSerial(int ReaderID, char *ReaderSerial);
參數(shù)列表:
參數(shù)
類型
含義
ReaderID
int
所要獲取的設(shè)備標(biāo)示ID,范圍0x0000-0xFFFF,如果未知,則ReaderID=0
ReaderSerial
Char *
讀取的產(chǎn)品序列號(hào),長度為8個(gè)字節(jié)
返 回 值:大于0為成功,小于0為失敗
14. 蜂鳴器控制函數(shù)
函數(shù)原形:int stdcall YW_Buzzer(int ReaderID,int Time_ON, int Time_OFF, int Cycle);
參數(shù)列表:
參數(shù)
類型
含義
ReaderID
int
所要獲取的設(shè)備標(biāo)示ID,范圍0x0000-0xFFFF,如果未知,則ReaderID=0
Time_ON
int
蜂鳴器鳴叫時(shí)間,單位:秒
Time_OFF
int
蜂鳴器時(shí)間,單位:秒
Cycle
int
把Time_ON和Time_OFF作為一個(gè)周期,則此參數(shù)為執(zhí)行此周期的次數(shù)。
返 回 值:大于0為命令發(fā)送成功,小于0為命令發(fā)送失敗
15. LED指示燈控制
函數(shù)原形:int stdcall YW_Led(int ReaderID,int LEDIndex, int Time_ON, int Time_OFF, int Cycle, int LedIndexOn);
參數(shù)列表:
參數(shù)
類型
含義
ReaderID
int
所要獲取的設(shè)備標(biāo)示ID,范圍0x0000-0xFFFF,如果未知,則ReaderID=0
LEDIndex
int
LED燈序號(hào)
01:紅燈
02:綠燈
04:黃燈
Time_ON
int
LED燈亮?xí)r間,單位:秒
Time_OFF
int
LED燈滅時(shí)間,單位:秒
Cycle
int
把Time_ON和Time_OFF作為一個(gè)周期,則此參數(shù)為執(zhí)行此周期的次數(shù)。
LedIndexOn
int
最后要亮的燈:
00:全滅
01:紅燈
02:綠燈
04:黃燈
返 回 值:大于0為命令發(fā)送成功,小于0為命令發(fā)送失敗
16. 設(shè)置LED顯示器顯示的內(nèi)容
函數(shù)原形:int stdcall YW_LEDDisplay(int ReaderID,int Alignment,char *LEDText);
參數(shù)列表:
參數(shù)
類型
含義
ReaderID
int
所要獲取的設(shè)備標(biāo)示ID,范圍0x0000-0xFFFF,如果未知,則ReaderID=0
Alignment
int
顯示時(shí)的對(duì)齊方式:
1:左對(duì)齊
2:居中對(duì)齊
3:右對(duì)齊
LEDText
Char *
要顯示的字符串。
可顯示的字符如下:
AbCdEF.-
返 回 值:大于0為命令發(fā)送成功,小于0為命令發(fā)送失敗
17. 設(shè)置天線的狀態(tài)
函數(shù)原形:int stdcall YW_AntennaStatus(int ReaderID,bool Status);
參數(shù)列表:
參數(shù)
類型
含義
ReaderID
int
所要獲取的設(shè)備標(biāo)示ID,范圍0x0000-0xFFFF,如果未知,則ReaderID=0
Status
bool
True: 開天線
False:關(guān)天線
返 回 值:大于0為命令發(fā)送成功,小于0為命令發(fā)送失敗
18. 設(shè)置尋卡模式
函數(shù)原形:int stdcall YW_SearchCardMode(int ReaderID,int SearchMode);
參數(shù)列表:
參數(shù)
類型
含義
ReaderID
int
所要獲取的設(shè)備標(biāo)示ID,范圍0x0000-0xFFFF,如果未知,則ReaderID=0
SearchMode
char
卡類型
0x41-----ISO14443A
0x42----- ISO14443B
0x31----- ISO15693
0x53------ST系列卡
0x52------AT88RF020等
返 回 值:大于0為命令發(fā)送成功,小于0為命令發(fā)送失敗
ISO14443A相關(guān)函數(shù)
19. 尋卡
函數(shù)原形:int stdcall YW_RequestCard(int ReaderID,char RequestMode , unsigned short *CardType);
參數(shù)列表:
參數(shù)
類型
含義
ReaderID
int
所要獲取的設(shè)備標(biāo)示ID,范圍0x0000-0xFFFF,如果未知,則ReaderID=0
RequestMode
char
尋卡的模式
0x52----- 所有卡
0x26----- 激活卡
CardType
unsigned short *
返回卡的類型
0x4400 = Ultralight/UltraLight C /MifarePlus(7Byte UID)
0x0400 = Mifare Mini/Mifare 1K (S50) /MifarePlus(4Byte UID)
0x0200 = Mifare_4K(S70)/ MifarePlus(4Byte UID)
0x0800 = Mifare_Pro
0x0403 = Mifare_ProX
0x4403 ->Mifare_DESFire
0x4200 -> MifarePlus(7Byte UID)
返 回 值:大于0為命令發(fā)送成功,小于0為命令發(fā)送失敗
20. Type A卡訪沖突
函數(shù)原形:int stdcall YW_AntiCollide(int ReaderID,unsigned char *LenSNO, unsigned char *SNO)
參數(shù)列表:
參數(shù)
類型
含義
ReaderID
int
所要獲取的設(shè)備標(biāo)示ID,范圍0x0000-0xFFFF,如果未知,則ReaderID=0
LenSNO
unsigned char*
訪沖突獲得卡號(hào)的長度
SNO
unsigned char *
訪沖突獲得卡號(hào)
返 回 值:大于0為命令發(fā)送成功,小于0為命令發(fā)送失敗
21. Type A選卡
函數(shù)原形:int stdcall YW_CardSelect(int ReaderID,char LenSNO, unsigned char *SNO)
參數(shù)列表:
參數(shù)
類型
含義
ReaderID
int
所要獲取的設(shè)備標(biāo)示ID,范圍0x0000-0xFFFF,如果未知,則ReaderID=0
LenSNO
unsigned char
選擇卡的卡號(hào)長度
SNO
unsigned char *
要選擇的卡號(hào)
返 回 值:大于0為命令發(fā)送成功,小于0為命令發(fā)送失敗
22. 訪沖撞讀卡序列號(hào)并且選定一張卡
函數(shù)原形:int stdcall YW_AntiCollideAndSelect(int ReaderID, unsigned char MultiCardMode, unsigned char *CardMem, int *SNLen, unsigned char *SN);
參數(shù)列表:
參數(shù)
類型
含義
ReaderID
int
所要獲取的設(shè)備標(biāo)示ID,范圍0x0000-0xFFFF,如果未知,則ReaderID=0
MultiCardMode
unsigned char
對(duì)多張卡的處理方式
0: 多張卡返回錯(cuò)誤
1:返回一張卡號(hào)
CardMem
unsigned char *
卡片容量代碼
SNLen
int *
輸出卡號(hào)的長度
SN
unsigned char *
輸出卡的序列號(hào)
返 回 值:大于0為命令發(fā)送成功,小于0為命令發(fā)送失敗
23. 尋卡、訪沖撞讀卡序列號(hào)并且選定一張卡
函數(shù)原形:int stdcall YW_RequestAntiandSelect(int ReaderID,int SearchMode,int MultiCardMode,unsigned short *ATQA,unsigned char *SAK,unsigned char *LenSNO,unsigned char *SNO);
參數(shù)列表:
參數(shù)
類型
含義
ReaderID
int
所要獲取的設(shè)備標(biāo)示ID,范圍0x0000-0xFFFF,如果未知,則ReaderID=0
RequestMode
unsigned char
尋卡的模式
0x52 所有卡
0x26 激活卡
MultiCardMode
unsigned char
對(duì)多張卡的處理方式
0: 多張卡返回錯(cuò)誤
1:返回一張卡號(hào)
ATQA
unsigned short *
ATQA值
SAK
unsigned char *
SAK值
SNLen
int *
輸出卡號(hào)的長度
SN
unsigned char *
輸出卡的序列號(hào)
返 回 值:大于0為命令發(fā)送成功,小于0為命令發(fā)送失敗
24. Type A卡n級(jí)訪沖突
函數(shù)原形:int stdcall YW_AntiCollide_Level(int ReaderID,int Leveln,char *LenSNO, unsigned char *SNO);
參數(shù)列表:
參數(shù)
類型
含義
ReaderID
int
所要獲取的設(shè)備標(biāo)示ID,范圍0x0000-0xFFFF,如果未知,則ReaderID=0
Leveln
int
訪沖突級(jí)別,為3級(jí)
LenSNO
unsigned char*
訪沖突獲得卡號(hào)的長度
SNO
unsigned char *
訪沖突獲得卡號(hào)
返 回 值:大于0為命令發(fā)送成功,小于0為命令發(fā)送失敗
25. Type A卡n級(jí)選卡
函數(shù)原形:int stdcall YW_SelectCard_Level(int ReaderID,int Leveln,unsigned char *SAK)
參數(shù)列表:
參數(shù)
類型
含義
ReaderID
int
所要獲取的設(shè)備標(biāo)示ID,范圍0x0000-0xFFFF,如果未知,則ReaderID=0
Leveln
int
訪沖突級(jí)別,為3級(jí)
SAK
unsigned char*
SAK值
返 回 值:大于0為命令發(fā)送成功,小于0為命令發(fā)送失敗
S50/S70卡相關(guān)操作
26. 下載秘鑰到只寫區(qū)
函數(shù)原形:int stdcall YW_ DownLoadKey(int ReaderID, int KeyIndex,char * Key);
參數(shù)列表:
參數(shù)
類型
含義
ReaderID
int
所要獲取的設(shè)備標(biāo)示ID,范圍0x0000-0xFFFF,如果未知,則ReaderID=0
KeyIndex
int
只寫區(qū)秘鑰序號(hào)0~31,共可寫32個(gè)秘鑰
Key
char *
秘鑰,每個(gè)秘鑰6個(gè)字節(jié)
返 回 值:大于0為命令發(fā)送成功,小于0為命令發(fā)送失敗
27. 用只寫區(qū)秘鑰驗(yàn)證扇區(qū)秘鑰
函數(shù)原形:int stdcall YW_KeyDown_Authorization (int ReaderID, char KeyMode ,int BlockAddr,int KeyIndex);
參數(shù)列表:
參數(shù)
類型
含義
ReaderID
int
所要獲取的設(shè)備標(biāo)示ID,范圍0x0000-0xFFFF,如果未知,則ReaderID=0
KeyMode
char
KeyMode=0x60為A密鑰
KeyMode=0x61為B密鑰
BlockAddr
int
要驗(yàn)證的塊號(hào)地址
KeyIndex
int
只寫區(qū)秘鑰序號(hào)0~31
返 回 值:大于0為命令發(fā)送成功,小于0為命令發(fā)送失敗
28. 驗(yàn)證某扇區(qū)密鑰
函數(shù)原形:int stdcall YW_KeyAuthorization (int ReaderID,char KeyMode,int BlockAddr, unsigned char *Key);
參數(shù)列表:
參數(shù)
類型
含義
ReaderID
int
所要獲取的設(shè)備標(biāo)示ID,范圍0x0000-0xFFFF,如果未知,則ReaderID=0
KeyMode
char
KeyMode=0x60為A密鑰
KeyMode=0x61為B密鑰
BlockAddr
int
要驗(yàn)證的塊號(hào)地址
Key
unsigned char *
密鑰字節(jié)(共6個(gè)字節(jié))
返 回 值:大于0為命令發(fā)送成功,小于0為命令發(fā)送失敗
29. 讀取一塊數(shù)據(jù)
函數(shù)原形:int stdcall YW_ReadaBlock (int ReaderID,int BlockAddr,int LenData, unsigned char *Data);
參數(shù)列表:
參數(shù)
類型
含義
ReaderID
int
所要獲取的設(shè)備標(biāo)示ID,范圍0x0000-0xFFFF,如果未知,則ReaderID=0
BlockAddr
int
地址塊號(hào)
LenData
int
要讀出的數(shù)據(jù)的字節(jié)數(shù),Mifare One為16個(gè)字節(jié)
Data
unsigned char *
輸出讀到的塊的數(shù)據(jù)
返 回 值:大于0為命令發(fā)送成功,小于0為命令發(fā)送失敗
30. 寫入一塊數(shù)據(jù)
函數(shù)原形:int stdcall YW_WriteaBlock (int ReaderID,int BlockAddr,int LenData, unsigned char *Data);
參數(shù)列表:
參數(shù)
類型
含義
ReaderID
int
所要獲取的設(shè)備標(biāo)示ID,范圍0x0000-0xFFFF,如果未知,則ReaderID=0
BlockAddr
int
塊號(hào)地址
LenData
int
要寫入的數(shù)據(jù)的字節(jié)數(shù),Mifare One為16個(gè)字節(jié)
Data
unsigned char *
要寫入的塊的數(shù)據(jù)
返 回 值:大于0為命令發(fā)送成功,小于0為命令發(fā)送失敗
31. 將某一扇區(qū)初始化為錢包
函數(shù)原形:int stdcall YW_Purse_Initial (int ReaderID,int BlockAddr,int IniMoney);
參數(shù)列表:
參數(shù)
類型
含義
ReaderID
int
所要獲取的設(shè)備標(biāo)示ID,范圍0x0000-0xFFFF,如果未知,則ReaderID=0
BlockAddr
int
塊號(hào)地址
IniMoney
int
初始化錢包時(shí)的初始值
返 回 值:大于0為命令發(fā)送成功,小于0為命令發(fā)送失敗
32. 讀取錢包值
函數(shù)原形:int stdcall YW_Purse_Read (int ReaderID,int BlockAddr,int *Money);
參數(shù)列表:
參數(shù)
類型
含義
ReaderID
int
所要獲取的設(shè)備標(biāo)示ID,范圍0x0000-0xFFFF,如果未知,則ReaderID=0
BlockAddr
int
塊號(hào)地址
Money
Int *
讀取的塊號(hào)錢包的當(dāng)前值
返 回 值:大于0為命令發(fā)送成功,小于0為命令發(fā)送失敗
33. 錢包扣款
函數(shù)原形:int stdcall YW_Purse_Decrease (int ReaderID,int BlockAddr,int Decrement);
參數(shù)列表:
參數(shù)
類型
含義
ReaderID
int
所要獲取的設(shè)備標(biāo)示ID,范圍0x0000-0xFFFF,如果未知,則ReaderID=0
BlockAddr
int
塊號(hào)地址
Decrement
Int
錢包中要扣掉的值
返 回 值:大于0為命令發(fā)送成功,小于0為命令發(fā)送失敗
34. 錢包充值
函數(shù)原形:int stdcall YW_Purse_Charge (int ReaderID,int BlockAddr,int Charge);
參數(shù)列表:
參數(shù)
類型
含義
ReaderID
int
所要獲取的設(shè)備標(biāo)示ID,范圍0x0000-0xFFFF,如果未知,則ReaderID=0
BlockAddr
int
塊號(hào)地址
Charge
Int
錢包中要充值的值
返 回 值:大于0為命令發(fā)送成功,小于0為命令發(fā)送失敗
35. Restore 命令
函數(shù)原形:int stdcall YW_Restore (int ReaderID,int BlockAddr);
參數(shù)列表:
參數(shù)
類型
含義
ReaderID
int
所要獲取的設(shè)備標(biāo)示ID,范圍0x0000-0xFFFF,如果未知,則ReaderID=0
BlockAddr
int
塊號(hào)地址
返 回 值:大于0為命令發(fā)送成功,小于0為命令發(fā)送失敗
36. Transfer命令
函數(shù)原形:int stdcall YW_Transfer (int ReaderID,int BlockAddr);
參數(shù)列表:
參數(shù)
類型
含義
ReaderID
int
所要獲取的設(shè)備標(biāo)示ID,范圍0x0000-0xFFFF,如果未知,則ReaderID=0
BlockAddr
int
塊號(hào)地址
返 回 值:大于0為命令發(fā)送成功,小于0為命令發(fā)送失敗
37. 讀取多塊數(shù)據(jù)
函數(shù)原形:int stdcall YW_ReadM1MultiBlock(int ReaderID, int StartBlock, int BlockNums, int *LenData, char *pData);
參數(shù)列表:
參數(shù)
類型
含義
ReaderID
int
所要獲取的設(shè)備標(biāo)示ID,范圍0x0000-0xFFFF,如果未知,則ReaderID=0
StartBlock
int
地址開始?jí)K號(hào)
BlockNums
int
塊的數(shù)量
LenData
Int*
要讀出的數(shù)據(jù)的字節(jié)數(shù)
Data
unsigned char *
輸出讀到的塊的數(shù)據(jù)
返 回 值:大于0為命令發(fā)送成功,小于0為命令發(fā)送失敗
38. 寫多塊數(shù)據(jù)
函數(shù)原形:int stdcall YW_WriteM1MultiBlock(int ReaderID, int StartBlock, int BlockNums, int LenData, char *pData);
參數(shù)列表:
參數(shù)
類型
含義
ReaderID
int
所要獲取的設(shè)備標(biāo)示ID,范圍0x0000-0xFFFF,如果未知,則ReaderID=0
StartBlock
int
地址開始?jí)K號(hào)
BlockNums
int
塊的數(shù)量
LenData
int
要寫入的數(shù)據(jù)的字節(jié)數(shù),Mifare One為16* BlockNums個(gè)字節(jié)
Data
unsigned char *
寫入的塊的數(shù)據(jù)
返 回 值:大于0為命令發(fā)送成功,小于0為命令發(fā)送失敗
UltraLight卡操作函數(shù)
39. 讀取UltraLight塊數(shù)據(jù)
函數(shù)原形:int stdcall YW_UltraLightRead(int ReaderID, int BlockID, unsigned char *pData);
參數(shù)列表:
參數(shù)
類型
含義
ReaderID
int
所要獲取的設(shè)備標(biāo)示ID,范圍0x0000-0xFFFF,如果未知,則ReaderID=0
BlockID
int
地址塊號(hào)
pData
unsigned char *
輸出讀到的塊的數(shù)據(jù),4字節(jié)
返 回 值:大于0為命令發(fā)送成功,小于0為命令發(fā)送失敗
40. 寫UltraLight塊數(shù)據(jù)
函數(shù)原形:int stdcall YW_UltraLightWrite(int ReaderID, int BlockID, unsigned char *pData);
參數(shù)列表:
, ,
參數(shù)
類型
含義
ReaderID
int
所要獲取的設(shè)備標(biāo)示ID,范圍0x0000-0xFFFF,如果未知,則ReaderID=0
BlockID
int
地址塊號(hào)
pData
unsigned char *
要寫入的塊的數(shù)據(jù),4字節(jié)
返 回 值:大于0為命令發(fā)送成功,小于0為命令發(fā)送失敗
Type A CPU卡操作函數(shù)
41. Type A CPU 卡復(fù)位
函數(shù)原形:int stdcall YW_TypeA_Reset(int ReaderID, unsigned char Mode, unsigned char MultiMode, int *rtLen, unsigned char *pData);
參數(shù)列表:
參數(shù)
類型
含義
ReaderID
int
所要獲取的設(shè)備標(biāo)示ID,范圍0x0000-0xFFFF,如果未知,則ReaderID=0
Mode
unsigned char
尋卡的模式
0x52 所有卡
0x26 激活卡
MultiMode
unsigned char
對(duì)多張卡的處理方式
0: 多張卡返回錯(cuò)誤
1:返回一張卡號(hào)
rtLen
int *
返回復(fù)位信息的長度
pData
unsigned char *
返回復(fù)位信息
返 回 值:大于0為命令發(fā)送成功,小于0為命令發(fā)送失敗
42. Type A?。茫校铡】▓?zhí)行COS命令
函數(shù)原形:int stdcall YW_TypeA_COS(int ReaderID, int LenCOS, unsigned char *Com_COS, int *rtLen, unsigned char *pData);
參數(shù)列表:
參數(shù)
類型
含義
ReaderID
int
所要獲取的設(shè)備標(biāo)示ID,范圍0x0000-0xFFFF,如果未知,則ReaderID=0
LenCOS
unsigned char*
輸入的COS命令的長度
Com_COS
unsigned char*
COS命令
rtLen
int *
返回執(zhí)行命令結(jié)果的長度
pData
unsigned char *
返回執(zhí)行命令結(jié)果
返 回 值:大于0為命令發(fā)送成功,小于0為命令發(fā)送失敗
Mifare Plus卡操作函數(shù)
43. Mifare Plus卡Level 0級(jí)寫數(shù)據(jù)
函數(shù)原形:int stdcall YW_MFP_L0_WritePerso(int ReaderID, int Address, unsigned char *pData);
參數(shù)列表:
參數(shù)
類型
含義
ReaderID
int
所要獲取的設(shè)備標(biāo)示ID,范圍0x0000-0xFFFF,如果未知,則ReaderID=0
Address
unsigned char
要寫入數(shù)據(jù)的地址
Com_ pData
unsigned char*
要寫入的數(shù)據(jù),16字節(jié)
返 回 值:大于0為命令發(fā)送成功,小于0為命令發(fā)送失敗
44. Mifare Plus卡Level 0級(jí)向Level 1或3級(jí)切換
函數(shù)原形:int stdcall YW_MFP_L0_CommitPerso(int ReaderID);
參數(shù)列表:
參數(shù)
類型
含義
ReaderID
int
所要獲取的設(shè)備標(biāo)示ID,范圍0x0000-0xFFFF,如果未知,則ReaderID=0
返 回 值:大于0為命令發(fā)送成功,小于0為命令發(fā)送失敗
45. Mifare Plus卡從低級(jí)向高級(jí)切換
函數(shù)原形:int stdcall YW_MFP_SwitchToLevel(int ReaderID, int DesLevel,unsigned char *SwitchKey);
參數(shù)列表:
參數(shù)
類型
含義
ReaderID
int
所要獲取的設(shè)備標(biāo)示ID,范圍0x0000-0xFFFF,如果未知,則ReaderID=0
DesLevel
unsigned char
要切換到的層級(jí),3級(jí)
SwitchKey
unsigned char*
切換秘鑰,16字節(jié)
返 回 值:大于0為命令發(fā)送成功,小于0為命令發(fā)送失敗
46. Mifare Plus卡Level 3級(jí)
函數(shù)原形:int stdcall YW_MFP_L3_Authorization(int ReaderID, int KeyMode,int BlockID,unsigned char *Key);
參數(shù)列表:
參數(shù)
類型
含義
ReaderID
int
所要獲取的設(shè)備標(biāo)示ID,范圍0x0000-0xFFFF,如果未知,則ReaderID=0
KeyMode
unsigned char
KeyMode=0x60為A密鑰
KeyMode=0x61為B密鑰
BlockID
unsigned char
塊號(hào)
Key
unsigned char*
秘鑰,16字節(jié)
返 回 值:大于0為命令發(fā)送成功,小于0為命令發(fā)送失敗
47. Mifare Plus卡Level 3級(jí)讀塊數(shù)據(jù)
函數(shù)原形:int stdcall YW_MFP_L3_Read(int ReaderID, int StartBlock,int BlockNums,int *DataLen, unsigned char *pData);
參數(shù)列表:
參數(shù)
類型
含義
ReaderID
int
所要獲取的設(shè)備標(biāo)示ID,范圍0x0000-0xFFFF,如果未知,則ReaderID=0
StartBlock
int
開始?jí)K號(hào)
BlockNums
int
塊數(shù)量
DataLen
int*
讀到的數(shù)據(jù)長度
pData
unsigned char*
讀到的數(shù)據(jù)
返 回 值:大于0為命令發(fā)送成功,小于0為命令發(fā)送失敗
48. Mifare Plus卡Level 3級(jí)寫塊數(shù)據(jù)
函數(shù)原形:int stdcall YW_MFP_L3_Write(int ReaderID, int StartBlock,int BlockNums, unsigned char *pData);
參數(shù)列表:
參數(shù)
類型
含義
ReaderID
int
所要獲取的設(shè)備標(biāo)示ID,范圍0x0000-0xFFFF,如果未知,則ReaderID=0
StartBlock
int
開始?jí)K號(hào)
BlockNums
int
塊數(shù)量
pData
unsigned char*
要寫入的數(shù)據(jù),長度必須是16* BlockNums
返 回 值:大于0為命令發(fā)送成功,小于0為命令發(fā)送失敗
49. Mifare Plus卡Level 3級(jí)將某一扇區(qū)初始化為錢包
函數(shù)原形:int stdcall YW_MFP_L3_Purse_Initial(int ReaderID, int BlockID,int InitialValue);
參數(shù)列表:
參數(shù)
類型
含義
ReaderID
int
所要獲取的設(shè)備標(biāo)示ID,范圍0x0000-0xFFFF,如果未知,則ReaderID=0
BlockID
int
塊號(hào)地址
InitialValue
int
初始化錢包時(shí)的初始值
返 回 值:大于0為命令發(fā)送成功,小于0為命令發(fā)送失敗
50. Mifare Plus卡Level 3級(jí)讀取錢包值
函數(shù)原形:int stdcall YW_MFP_L3_Purse_Read(int ReaderID, int BlockID,int *Value);
參數(shù)列表:
參數(shù)
類型
含義
ReaderID
int
所要獲取的設(shè)備標(biāo)示ID,范圍0x0000-0xFFFF,如果未知,則ReaderID=0
BlockID
int
塊號(hào)地址
Value
Int *
讀取的塊號(hào)錢包的當(dāng)前值
返 回 值:大于0為命令發(fā)送成功,小于0為命令發(fā)送失敗
51. Mifare Plus卡Level 3級(jí)錢包扣款
函數(shù)原形:int stdcall YW_MFP_L3_Purse_Charge(int ReaderID, int BlockID,int Value);
參數(shù)列表:
參數(shù)
類型
含義
ReaderID
int
所要獲取的設(shè)備標(biāo)示ID,范圍0x0000-0xFFFF,如果未知,則ReaderID=0
BlockID
int
塊號(hào)地址
Value
Int
錢包中要扣掉的值
返 回 值:大于0為命令發(fā)送成功,小于0為命令發(fā)送失敗
52. Mifare Plus卡Level 3級(jí)錢包充值
函數(shù)原形:int stdcall YW_MFP_L3_Purse_Decrease(int ReaderID, int BlockID,int Value);
參數(shù)列表:
參數(shù)
類型
含義
ReaderID
int
所要獲取的設(shè)備標(biāo)示ID,范圍0x0000-0xFFFF,如果未知,則ReaderID=0
BlockID
int
塊號(hào)地址
Value
Int
錢包中要充值的值
返 回 值:大于0為命令發(fā)送成功,小于0為命令發(fā)送失敗
53. Mifare Plus卡Level 3級(jí)備份錢包
函數(shù)原形:int stdcall YW_MFP_L3_Purse_Backup(int ReaderID, int BlockID,int DesBlockID);
參數(shù)列表:
參數(shù)
類型
含義
ReaderID
int
所要獲取的設(shè)備標(biāo)示ID,范圍0x0000-0xFFFF,如果未知,則ReaderID=0
BlockID
int
要備份的錢包塊號(hào)
DesBlockID
Int
目標(biāo)塊號(hào)
返 回 值:大于0為命令發(fā)送成功,小于0為命令發(fā)送失敗
54. Mifare Plus卡Level 3級(jí)通用讀寫次
函數(shù)原形:int stdcall YW_MFP_Authorization_First(int ReaderID, int AESKeyAddr,unsigned char *AESKey);
參數(shù)列表:
參數(shù)
類型
含義
ReaderID
int
所要獲取的設(shè)備標(biāo)示ID,范圍0x0000-0xFFFF,如果未知,則ReaderID=0
AESKeyAddr
int
要的地址
AESKey
unsigned char *
秘鑰,16字節(jié)
返 回 值:大于0為命令發(fā)送成功,小于0為命令發(fā)送失敗
55. Mifare Plus卡Level 3級(jí)通用讀寫第二次
函數(shù)原形:int stdcall YW_MFP_Authorization_Follow(int ReaderID, int AESKeyAddr,unsigned char *AESKey);
參數(shù)列表:
參數(shù)
類型
含義
ReaderID
int
所要獲取的設(shè)備標(biāo)示ID,范圍0x0000-0xFFFF,如果未知,則ReaderID=0
AESKeyAddr
int
要的地址
AESKey
unsigned char *
秘鑰,16字節(jié)
返 回 值:大于0為命令發(fā)送成功,小于0為命令發(fā)送失敗
56. Mifare Plus卡Level 3級(jí)通用讀塊
函數(shù)原形:int stdcall YW_MFP_CommonRead(int ReaderID, int BlockID, int BlockNums,int *DataLen,unsigned char *pData);
參數(shù)列表:
參數(shù)
類型
含義
ReaderID
int
所要獲取的設(shè)備標(biāo)示ID,范圍0x0000-0xFFFF,如果未知,則ReaderID=0
BlockID
int
通用塊地址
BlockNums
int
塊數(shù)量
DataLen
Int*
返回的數(shù)據(jù)長度
pData
unsigned char *
返回的數(shù)據(jù)
返 回 值:大于0為命令發(fā)送成功,小于0為命令發(fā)送失敗
57. Mifare Plus卡Level 3級(jí)通用寫塊
函數(shù)原形:int stdcall YW_MFP_CommonWrite(int ReaderID, int BlockID, int BlockNums, unsigned char *pData);
參數(shù)列表:
參數(shù)
類型
含義
ReaderID
int
所要獲取的設(shè)備標(biāo)示ID,范圍0x0000-0xFFFF,如果未知,則ReaderID=0
BlockID
int
通用塊地址
BlockNums
int
塊數(shù)量
pData
unsigned char *
要寫入的數(shù)據(jù),長度必須為16* BlockNums
返 回 值:大于0為命令發(fā)送成功,小于0為命令發(fā)送失敗
SAM卡操作函數(shù)
58. SAM卡波特率設(shè)置
函數(shù)原形:int __stdcall YW_SAM_ResetBaud(int ReaderID,int SAMIndex, int BaudIndex);
參數(shù)列表:
參數(shù)
類型
含義
ReaderID
int
所要獲取的設(shè)備標(biāo)示ID,范圍0x0000-0xFFFF,如果未知,則ReaderID=0
SAMIndex
int
SAM卡序號(hào)
BaudIndex
int
0x00->9600 (默認(rèn)復(fù)位波特率)
0x01->19200
0x02->38400
0x03->55800
0x04->57600
0x05->115200
返 回 值:大于0為成功,小于0為失敗
59. SAM卡復(fù)位
函數(shù)原形:int __stdcall YW_SAM_Reset(int ReaderID,int SAMIndex, int *rtLen, unsigned char *pData);
參數(shù)列表:
參數(shù)
類型
含義
ReaderID
int
所要獲取的設(shè)備標(biāo)示ID,范圍0x0000-0xFFFF,如果未知,則ReaderID=0
SAMIndex
int
SAM卡序號(hào)
rtLen
int *
SAM卡復(fù)位返回的數(shù)據(jù)pData的長度
pData
unsigned char *
SAM卡復(fù)位返回的數(shù)據(jù)
返 回 值:大于0為成功,小于0為失敗
60. SAM卡執(zhí)行COS命令
函數(shù)原形:int __stdcall YW_SAM_COS(int ReaderID,int SAMIndex, int LenCOS, unsigned char *Com_COS, int *rtLen, unsigned char *pData);
參數(shù)列表:
參數(shù)
類型
含義
ReaderID
int
所要獲取的設(shè)備標(biāo)示ID,范圍0x0000-0xFFFF,如果未知,則ReaderID=0
SAMIndex
int
SAM卡序號(hào)
LenCOS
int
向SAM卡要發(fā)送的COS命令的長度
Com_COS
unsigned char *
向SAM卡要發(fā)送的COS命令
rtLen
unsigned char *
SAM執(zhí)行COS命令后返回的數(shù)據(jù)的長度
pData
unsigned char *
SAM執(zhí)行COS命令后返回的數(shù)據(jù)
返 回 值:大于0為成功,小于0為失敗
61. SAM卡PPS波特率設(shè)置
函數(shù)原形:int __stdcall YW_SAM_PPSBaud(int ReaderID,int SAMIndex, int BaudIndex);
參數(shù)列表:
參數(shù)
類型
含義
ReaderID
int
所要獲取的設(shè)備標(biāo)示ID,范圍0x0000-0xFFFF,如果未知,則ReaderID=0
SAMIndex
int
SAM卡序號(hào)
BaudIndex
int
0x00->9600 (默認(rèn)復(fù)位波特率)
0x01->19200
0x02->38400
0x03->55800
0x04->57600
0x05->115200
返 回 值:大于0為成功,小于0為失敗

5 讀卡操作流程

YW605在所有卡操作之前必須打開天線,讀完卡后可關(guān)閉天線,也可以不關(guān)閉天線。對(duì)卡的操作流程如下圖所示:

6 程序開發(fā)注意事項(xiàng)

6.1 YW-605系列讀卡器具有多種接口,不同的接口,SDK中端口初始化函數(shù)有所區(qū)別。

l 串口,RS485,USB虛擬的串口的讀卡器端口操作函數(shù)為:
打開端口:int stdcall YW_ComInitial(int PortIndex, int Baud);
釋放端口:int stdcall YW_ComFree(void);
l USB HID的讀卡器端口操作函數(shù)為:
打開端口:int stdcall YW_USBHIDInitial(void);
釋放端口:int stdcall YW_USBHIDFree(void);

7 更多幫助

更多幫助請(qǐng)聯(lián)系友我科技技術(shù)支持,或者.

版RFID讀寫器產(chǎn)品手冊(cè)下載

全年征稿/資訊合作 聯(lián)系郵箱:137230772@qq.com
版權(quán)與免責(zé)聲明

1、凡本網(wǎng)注明"來源:包裝印刷網(wǎng)"的所有作品,版權(quán)均屬于包裝印刷網(wǎng),轉(zhuǎn)載請(qǐng)必須注明包裝印刷網(wǎng),http://m.dhgjyz.top/。違反者本網(wǎng)將追究相關(guān)法律責(zé)任。

2、企業(yè)發(fā)布的公司新聞、技術(shù)文章、資料下載等內(nèi)容,如涉及侵權(quán)、違規(guī)遭投訴的,一律由發(fā)布企業(yè)自行承擔(dān)責(zé)任,本網(wǎng)有權(quán)刪除內(nèi)容并追溯責(zé)任。

3、本網(wǎng)轉(zhuǎn)載并注明自其它來源的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品來源,并自負(fù)版權(quán)等法律責(zé)任。

4、如涉及作品內(nèi)容、版權(quán)等問題,請(qǐng)?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。

QQ聯(lián)系

咨詢中心
客服幫您輕松解決~

聯(lián)系電話

參展咨詢0571-81020275會(huì)議咨詢0571-81020275

建議反饋

返回頂部