新聞中心

EEPW首頁(yè) > 模擬技術(shù) > 設(shè)計(jì)應(yīng)用 > 雙龍13.56M射頻模塊在酒店公用電腦管理中的應(yīng)用

雙龍13.56M射頻模塊在酒店公用電腦管理中的應(yīng)用

作者: 時(shí)間:2011-06-23 來(lái)源:電子產(chǎn)品世界 收藏

發(fā)送的數(shù)據(jù)

本文引用地址:http://m.butianyuan.cn/article/120739.htm

A6 03 FC 17 05 6B

HEAD=A6

LENGTH=03

LEN_CHK =FC

COMMAND=17

WAIT TIME=05

CHECKSUM =6B

返回信息為:

MIFARE ONE S50

A6 0C F3 17 00 0A 04 00 A6 A2 FA 69 97 08 15

HEAD=A6

LENGTH=0C

LEN_CHK =F3

COMMAND=17

STATUS=00

DATA=” 0A 04 00 A6 A2 FA 69 97 08 ”

卡號(hào)

CHECKSUM =15

 

ID指令:

0x1E:讀取芯片ID 號(hào)命令

該命令用于讀取卡的ID 號(hào)。

發(fā)送的數(shù)據(jù)

A6 06 F9 1E 05 05 00 00 5F

HEAD=A6

LENGTH=06

LEN_CHK =F9

COMMAND=1E

WAIT TIME=05(波特率設(shè)置值 0x0F 表示使用106K 進(jìn)行收發(fā)數(shù)據(jù))。

PARAMETER=05 00 00TYPE B ATQB 命令)。

CHECKSUM =5F

模塊返回的數(shù)據(jù)為:

A6 37 C8 1E 00 50 00 00 00 00 ** 03 ** 05 00 ** ** 20 ** 20 ** ** 24 ** 78

00 01 ** ** 01 06 03 14 00 00 00 00 00 06 ** 10 70 ** 4B ** 8B ** ** AA ** 86

18 ** 93 ** ** **

HEAD=A6

LENGTH=37

LEN_CHK =C8

COMMAND=1E

STATUS=00

DATA=” 50 00 00 00 00 ** 03 ** 05 00 ** ** 20 ** 20 ** ** 24 ** 78 00

身份證卡ID 號(hào)

01 ** ** 01 06 03 14 00 00 00 00 00 06 ** 10 70 ** 4B ** 8B ** ** AA **

86 18 ** 93 ** ** ** ”

* 號(hào)部分為隱去的身份信息。返回的數(shù)據(jù)信息里面從第13 個(gè)字節(jié)開(kāi)始的8 個(gè)字節(jié)的數(shù)據(jù)是身份證卡片的ID 號(hào))。

CHECKSUM =74

 

讀卡功能的步驟說(shuō)明:

1.發(fā)送讀MIFARE ONE S50ID命令

參考代碼 ApdComPort1.PutBlock(ReadMOneCard, Length(ReadMOneCard));

2.如成功,則返回卡號(hào)數(shù)據(jù),結(jié)束;不成功則轉(zhuǎn)到步驟3

3.發(fā)送二代身份證的ID指令

參考代碼 ApdComPort1.PutBlock(ReadPersonCard, Length(ReadPersonCard));

4.如成功,則返回身份證卡號(hào)數(shù)據(jù),結(jié)束;不成功返回?zé)o卡,結(jié)束

其中發(fā)送數(shù)據(jù)的聲明如下

const

    ReadMOneCard   : array[0..5] of byte = ($A6,$03,$FC,$17,$05,$6B);

    ReadPersonCard : array[0..8] of byte = ($A6,$06,$F9,$1E,$05,$05,$00,$00,$5F);

編程中串口通訊實(shí)現(xiàn)使用了專(zhuān)用的串口控件TurboPower Async Professional包,發(fā)送串口數(shù)據(jù)使用了其中"串行端口"組件TApdComPort,接收串口數(shù)據(jù)使用了其中數(shù)據(jù)包組件TApdDataPacket,在TApdDataPacket組件的OnPacket事件中處理接收到的數(shù)據(jù),下面參考代碼說(shuō)明如何提取卡號(hào)。

procedure TFormReadIDCard.ApdDPSuccS50Packet(Sender: TObject;

  Data: Pointer; Size: Integer);

...

    For i := 0 To 4-1 Do

    begin

        baCardID[i] := Buffer[i + 7];//7開(kāi)始的4個(gè)字節(jié)為卡號(hào)

    end;

 

procedure TFormReadIDCard.ApdDPSuccIDCPacket(Sender: TObject; Data: Pointer;

  Size: Integer);

...

    For i := 0 To 8-1 Do

    begin

        baCardID[i] := Buffer[i + 16]; //16開(kāi)始的8個(gè)字節(jié)為卡號(hào)

    end;

 

鎖定電腦功能實(shí)現(xiàn):

a.        偽裝屏保狀態(tài), SystemParametersInfo(SPI_SETSCREENSAVERRUNNING, TRUE, NULL, 0);

b.        禁止任務(wù)切換, SystemParametersInfo(SPI_SETFASTTASKSWITCH, FALSE, NULL, 0);

c.        禁止屏保運(yùn)行, SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, FALSE,0, SPIF_SENDWININICHANGE);

d.        禁止任務(wù)管理器, "Software\Microsoft\Windows\CurrentVersion\Policies\System\DisableTaskMgr"設(shè)置這個(gè)鍵值為1

e.        鉤住所有鼠標(biāo)和鍵盤(pán)事件,

hLKeyboardProcHook = SetWindowsHookEx(WH_KEYBOARD_LL, (HOOKPROC) _LKeyboardProcHook, hInstance, 0L);

hLMouseProcHook =SetWindowsHookEx(WH_MOUSE_LL, (HOOKPROC) _LMouseProcHook, hInstance, 0L);

_LKeyboardProcHook_LMouseProcHook2個(gè)回調(diào)函數(shù)中根據(jù)需要過(guò)濾掉鼠標(biāo)和鍵盤(pán)事件

f.         開(kāi)機(jī)自動(dòng)運(yùn)行自己,"Software\Microsoft\Windows\CurrentVersion\Run"下增加一個(gè)鍵值"CmpMan=c:CmpMan.exe



關(guān)鍵詞: RFID 讀卡模塊 二代身份證

評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉