双龙13.56M射频模块在酒店公用电脑管理中的应用
读MIFARE ONE S50卡ID命令
参考代码 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和_LMouseProcHook这2个回调函数中根据需要过滤掉鼠标和键盘事件
f. 开机自动运行自己,"Software\\Microsoft\\Windows\\CurrentVersion\\Run"下增加一个键值"CmpMan=c:\CmpMan.exe
方案中的其它功能限于篇幅不做叙述。
4.结语
经测试该方案达到了设计预期,运行稳定。
本射频模块也可设计成嵌入式系统,把射频模块和单片机组合在一起,由单片机处理轮询读卡、计时的工作,并驱动LED数码管显示时间信息。
本方案,除了应用于酒店公用电脑管理,也可应用于图书馆电脑管理、安全单位专用电脑管理,或其它需要进行专项身份识别管理的一切系统设备。
- 敢当工业4.0得力助手,RFID有啥本事(03-01)
- 基于ISO14443A协议的RFID芯片模拟前端设计(08-04)
- RFID系统中耦合器定向性的提高方法(08-31)
- 混合域示波器在嵌入式射频系统设计中的应用(06-20)
- 内置串行接口的铁电随机存储器(FRAM) RFID简介(09-21)
- 正确构建RFID应用系统的10个步骤(04-05)