以下代码是我做刷IC卡的过程,这代码只是说明一个过程而已。 先定义一个公共的卡对象,在窗体创建或显示时,实例化卡对象,然后加载读卡器,判断是否加载成功,用timer监听刷卡 ,完成后记得free 卡对象。 procedure TForm_IC.tmrICTimer(Sender: TObject); var carid,snr: Integer; UserName,userno: string; begin //刷卡,读卡信息 if not Assigned(FICCard) then Exit; FICCard.readICCardInfo(carid,UserName,snr); userno := ''; UserName := ''; UserName := DataModule1.GetUserInfo(carid,userno); if UserName = '' then begin Exit; end;
end; procedure TForm_IC.FormShow(Sender: TObject); begin if not(IsCardOk)then //检测加载读卡器是否成功 Close; end;function TForm_IC.IsCardOk: Boolean; begin Result := False; timer.enable:=false; FICCard := TICCard.Create(0,9600,'创建卡对象'); if not(FICCard.cardLoadOK)then begin uf_MessageBox('W加载读卡器失败!'); exit; end Result := true; timer.enable:=true; end;
以下代码是我做刷IC卡的过程,这代码只是说明一个过程而已。 先定义一个公共的卡对象,在窗体创建或显示时,实例化卡对象,然后加载读卡器,判断是否加载成功,用timer监听刷卡 ,完成后记得free 卡对象。 procedure TForm_IC.tmrICTimer(Sender: TObject); var carid,snr: Integer; UserName,userno: string; begin //刷卡,读卡信息 if not Assigned(FICCard) then Exit; FICCard.readICCardInfo(carid,UserName,snr); userno := ''; UserName := ''; UserName := DataModule1.GetUserInfo(carid,userno); if UserName = '' then begin Exit; end;
end; procedure TForm_IC.FormShow(Sender: TObject); begin if not(IsCardOk)then //检测加载读卡器是否成功 Close; end;function TForm_IC.IsCardOk: Boolean; begin Result := False; timer.enable:=false; FICCard := TICCard.Create(0,9600,'创建卡对象'); if not(FICCard.cardLoadOK)then begin uf_MessageBox('W加载读卡器失败!'); exit; end Result := true; timer.enable:=true; end;
1. 用pcomm.dll,支持回调。
2. 线程里不停地去读串口至于得到卡号,就要看你用的刷卡机的通讯协议了。
interval 属性和ontimer 过程,interval用来设置每隔多久时间运行一次ontimer 过程
加载读卡器成功后,可以用这个过程监听是否刷卡
先定义一个公共的卡对象,在窗体创建或显示时,实例化卡对象,然后加载读卡器,判断是否加载成功,用timer监听刷卡
,完成后记得free 卡对象。
procedure TForm_IC.tmrICTimer(Sender: TObject);
var
carid,snr: Integer;
UserName,userno: string;
begin //刷卡,读卡信息
if not Assigned(FICCard) then Exit;
FICCard.readICCardInfo(carid,UserName,snr);
userno := '';
UserName := '';
UserName := DataModule1.GetUserInfo(carid,userno);
if UserName = '' then
begin
Exit;
end;
end;
procedure TForm_IC.FormShow(Sender: TObject);
begin
if not(IsCardOk)then //检测加载读卡器是否成功
Close;
end;function TForm_IC.IsCardOk: Boolean;
begin
Result := False;
timer.enable:=false;
FICCard := TICCard.Create(0,9600,'创建卡对象');
if not(FICCard.cardLoadOK)then
begin
uf_MessageBox('W加载读卡器失败!');
exit;
end
Result := true;
timer.enable:=true;
end;
先定义一个公共的卡对象,在窗体创建或显示时,实例化卡对象,然后加载读卡器,判断是否加载成功,用timer监听刷卡
,完成后记得free 卡对象。
procedure TForm_IC.tmrICTimer(Sender: TObject);
var
carid,snr: Integer;
UserName,userno: string;
begin //刷卡,读卡信息
if not Assigned(FICCard) then Exit;
FICCard.readICCardInfo(carid,UserName,snr);
userno := '';
UserName := '';
UserName := DataModule1.GetUserInfo(carid,userno);
if UserName = '' then
begin
Exit;
end;
end;
procedure TForm_IC.FormShow(Sender: TObject);
begin
if not(IsCardOk)then //检测加载读卡器是否成功
Close;
end;function TForm_IC.IsCardOk: Boolean;
begin
Result := False;
timer.enable:=false;
FICCard := TICCard.Create(0,9600,'创建卡对象');
if not(FICCard.cardLoadOK)then
begin
uf_MessageBox('W加载读卡器失败!');
exit;
end
Result := true;
timer.enable:=true;
end;