新闻中心

EEPW首页>模拟技术>设计应用> 双龙13.56M射频模块在酒店公用电脑管理中的应用

双龙13.56M射频模块在酒店公用电脑管理中的应用

作者: 时间:2011-06-23 来源:电子产品世界 收藏

发送的数据

本文引用地址://m.amcfsurvey.com/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 00A6 A2 FA 6997 08 ”

卡号

CHECKSUM=15

ID指令:

0x1E:读取芯片ID号命令

该命令用于读取卡的ID号。

发送的数据

A6 06 F9 1E 05 05 00 00 5F

HEAD=A6

LENGTH=06

LEN_CHK=F9

COMMAND=1E

WAIT TIME=05(波特率设置值0x0F表示使用106K进行收发数据)。

PARAMETER=05 00 00TYPE BATQB命令)。

CHECKSUM=5F

模块返回的数据为:

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 ** 7800

身份证卡ID

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

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

*号部分为隐去的身份信息。返回的数据信息里面从第13个字节开始的8个字节的数据是身份证卡片的ID号)。

CHECKSUM=74

读卡功能的步骤说明:

1.发送读MIFARE ONE S50ID命令

参考代码ApdComPort1.PutBlock(ReadMOneCard, Length(ReadMOneCard));

2.如成功,则返回卡号数据,结束;不成功则转到步骤3

3.发送二代身份证的ID指令

参考代码ApdComPort1.PutBlock(ReadPersonCard, Length(ReadPersonCard));

4.如成功,则返回身份证卡号数据,结束;不成功返回无卡,结束

其中发送数据的声明如下

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);

编程中串口通讯实现使用了专用的串口控件TurboPower Async Professional包,发送串口数据使用了其中"串行端口"组件TApdComPort,接收串口数据使用了其中数据包组件TApdDataPacket,在TApdDataPacket组件的OnPacket事件中处理接收到的数据,下面参考代码说明如何提取卡号。

procedure TFormReadIDCard.ApdDPSuccS50Packet(Sender: TObject;

Data: Pointer; Size: Integer);

...

For i := 0 To 4-1 Do

begin

baCardID[i] := Buffer[i + 7];//7开始的4个字节为卡号

end;

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

Size: Integer);

...

For i := 0 To 8-1 Do

begin

baCardID[i] := Buffer[i + 16]; //16开始的8个字节为卡号

end;

锁定电脑功能实现:

a.伪装屏保状态,SystemParametersInfo(SPI_SETSCREENSAVERRUNNING, TRUE, NULL, 0);

b.禁止任务切换,SystemParametersInfo(SPI_SETFASTTASKSWITCH, FALSE, NULL, 0);

c.禁止屏保运行,SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, FALSE,0, SPIF_SENDWININICHANGE);

d.禁止任务管理器,"Software\Microsoft\Windows\CurrentVersion\Policies\System\DisableTaskMgr"设置这个键值为1

e.钩住所有鼠标和键盘事件,

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

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

_LKeyboardProcHook_LMouseProcHook2个回调函数中根据需要过滤掉鼠标和键盘事件

f.开机自动运行自己,"Software\Microsoft\Windows\CurrentVersion\Run"下增加一个键值"CmpMan=c:CmpMan.exe



评论


相关推荐

技术专区

关闭