首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

读卡器的問題,该怎么处理

2012-02-06 
读卡器的問題有一個读卡器,是USB 接口的,不需要驅動(當然是win2000或xp系統下), 當用戶刷ID卡(非接觸式的)

读卡器的問題
有一個读卡器,是USB 接口的,不需要驅動(當然是win2000或xp系統下), 當用戶刷ID卡(非接觸式的)時, 電腦會接受一個10位的物理號碼(全是0-9的數字),就像鍵盤輸入的一樣.

我想做一個身份驗證的程序,當用戶一刷卡時(只有一個刷卡的動作,不用點擊任何按鍵), 接受這個10位號碼, 與數據庫預存的數據比對,比對一致通過,否則報錯.

我是這樣處理的: 在Form 上放一個Edit控件(不可見), 接受刷卡的數據,
問題的重點是:我不知道在Edit的什么時件中寫這個比對的代碼, 而且Edit的Text會一直累加刷卡的號碼

請教各位,如何實現,或者是我這種方式不正確

謝謝!



[解决办法]
这种读卡器和一些条码扫描器差不多
以前做过2代身份证的一些应用,有的读卡器和你说的差不多

有两种思路

1.响应usb读卡器的“键盘”事件
2.采用你的方法。(可以在edit的onChange事件中比对,比对完成后清空)
另,这方法可能得要求你的edit有焦点
[解决办法]
加个timer 1秒就读一次卡的序列号
[解决办法]
为什么要加Edit呢?这种设计本来就有问题,你把数取到了,直接比对,不比写到Edit强?就算要加显示的东西也要用列表Grid呀,一次写一行,不用的就清掉,自己不是更好控制吗?
[解决办法]
按我的理解你已经读到了数据,因为你说Edit的Text會一直累加刷卡的號碼
那你就在edit的文本变更事件中写代码啊
首先检查text有没有10位,
有了10位再和数据库中的比较,正确/不正确应该怎么处理你自己想
处理完之后清除text
[解决办法]
哈哈 我最近用的就是这种id读卡器。 这类读卡器一般都有参数可调的,就是几个开关,你可以设置读到数据后追加一个回车进去,这样你就能 判断回车事件了,这样是最保险的,而且像这种被动刷卡的一般都是这么做的
[解决办法]
你用的是通用的读卡器 在鼠标焦点处输入射频卡物理卡号
不像我们用DLL或操作读卡器读出物理卡号
放1个timer
procedure TForm1.Timer1Timer(Sender: TObject);
var
sCardid:string;
begin
Timer1.Enabled:=False;
Edit1.SetFocus; //edit1获取焦点
if Trim(Edit1.Text)='' then
begin
Timer1.Enabled:=True
end
else
begin
sCardid:=Trim(Edit1.Text);
//送入卡号 检索数据库
end;
end;

试试看

热点排行