我如何监听卡是不是刷了啊.就是怎么样一直监听啊.大伙有相应的代码吗?我第一次开发这种程序.不知道怎么下手.或是大伙有点源码给我提供看一下啊.刷过卡后如何得到相应的卡号啊.帮帮忙

解决方案 »

  1.   

    两种方法:
    1. 用pcomm.dll,支持回调。
    2. 线程里不停地去读串口至于得到卡号,就要看你用的刷卡机的通讯协议了。
      

  2.   

    用timer 控件
    interval 属性和ontimer 过程,interval用来设置每隔多久时间运行一次ontimer 过程
    加载读卡器成功后,可以用这个过程监听是否刷卡
      

  3.   

    以下代码是我做刷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;
      

  4.   

    以下代码是我做刷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;