Unit1.~pas
上传用户:lzd18710
上传日期:2009-11-26
资源大小:3595k
文件大小:4k
源码类别:

通讯编程

开发平台:

Visual Basic

  1. unit Unit1;
  2. interface
  3. uses
  4.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  5.   Dialogs, StdCtrls, ExtCtrls, Buttons, OleCtrls, zkemkeeper_TLB, DB, UtBase64,
  6.   zkonline_TLB;
  7. const
  8.   EnrollDataLong: integer=1836;
  9. type
  10.   TForm1 = class(TForm)
  11.     CZKEM1: TCZKEM;
  12.     sbtnRS232: TSpeedButton;
  13.     sbtnTCPIP: TSpeedButton;
  14.     Label5: TLabel;
  15.     btnConnect: TButton;
  16.     edtNetAddress: TLabeledEdit;
  17.     edtNetPort: TLabeledEdit;
  18.     edtBaudRate: TEdit;
  19.     edtMessage: TEdit;
  20.     btnFPTConvertion: TButton;
  21.     AFXOnlineMain1: TAFXOnlineMain;
  22.     btnFPRegister: TButton;
  23.     edtEnrollNum: TEdit;
  24.     Label1: TLabel;
  25.     Label2: TLabel;
  26.     procedure btnConnectClick(Sender: TObject);
  27.     procedure btnFPTConvertionClick(Sender: TObject);
  28.     procedure sbtnTCPIPClick(Sender: TObject);
  29.     procedure sbtnRS232Click(Sender: TObject);
  30.     procedure FormCreate(Sender: TObject);
  31.     procedure btnFPRegisterClick(Sender: TObject);
  32.   private
  33.     { Private declarations }
  34.     DevID: integer;
  35.     Commport: integer;
  36.     enrollptr: array of Integer;
  37.     enrollbyte: array of byte;
  38.     EnrollData:string; //Fingerprint template
  39.     EnrollNum:integer; //Enroll number
  40.   public
  41.     { Public declarations }
  42.   end;
  43. var
  44.   Form1: TForm1;
  45. implementation
  46. {$R *.dfm}
  47. procedure TForm1.btnConnectClick(Sender: TObject);
  48. var
  49.   ErrorCode: integer;
  50.   c: boolean;
  51. begin
  52.   if btnConnect.Tag = 1 then
  53.   begin
  54.     CZKEM1.RefreshData(DevId);
  55.     CZKEM1.EnableDevice(DevId, TRUE);
  56.     CZKEM1.Disconnect;
  57.     btnConnect.Tag := 0;
  58.     btnConnect.Caption := 'Connect';
  59.   end
  60.   else
  61.   begin
  62.     devid:=strtoint(edtNetPort.Text);
  63.     if pos('COM', uppercase(edtNetAddress.text))=1 then
  64.     begin
  65.       commport:=ord(edtNetAddress.text[4])-ord('0');
  66.       CZKEM1.CommPort := commport;
  67.       c:=CZKEM1.Connect_Com(commport, DevID, strtoint(edtBaudRate.text));
  68.     end
  69.     else
  70.     begin
  71.       c:=CZKEM1.Connect_net(edtNetAddress.text, Devid);
  72.       Devid:=1;
  73.     end;                                                                    
  74.     if c then
  75.     begin
  76.       edtMessage.Text := 'Device Connected.';
  77.       CZKEM1.EnableDevice(DevID, false);
  78.       btnConnect.Tag := 1;
  79.       btnConnect.Caption := 'Disconnect';
  80.     end
  81.     else
  82.     begin
  83.       CZKEM1.GetLastError(ErrorCode);
  84.       edtMessage.Text := format('! ConnectDevice ErrorNo.=%d',[ErrorCode]);
  85.     end;
  86.   end;
  87. end;
  88. procedure TForm1.btnFPTConvertionClick(Sender: TObject);
  89. var
  90.   MachineNum,pinnum,i,emPrivilege,emPassword,errorcode,j:integer;
  91. begin
  92.   if EnrollData='' then
  93.   begin
  94.     edtMessage.Text := '还没有登记指纹'; //还没有登记指纹
  95.     exit;
  96.   end;
  97.   DecodeData64(EnrollData); //将Base64格式的模板字符串转换为原始的指纹模板
  98.   Move(enrolldata[1], enrollbyte[0], Length(EnrollData));
  99.   Sleep(100);
  100.   errorcode := 0;
  101.   inc(j);
  102.   if not CZKEM1.SetUserTmp(1, EnrollNum, 1,enrollptr[0]) then
  103.   begin
  104.     CZKEM1.GetLastError(errorcode);
  105.     edtMessage.Text := 'SetEnrollData fail'; //传输指纹到脱机失败
  106.     exit;
  107.   end;
  108.   edtMessage.Text := 'SetEnrollData success'; //联机指纹已经传输到脱机
  109. end;
  110. procedure TForm1.sbtnTCPIPClick(Sender: TObject);
  111. begin
  112.   edtnetAddress.EditLabel.Caption := 'IP Address:';
  113.   edtNetPort.EditLabel.Caption := 'Port Number:';
  114.   edtnetAddress.Text := '192.168.1.201';
  115.   edtNetPort.Text := '$1112';
  116. end;
  117. procedure TForm1.sbtnRS232Click(Sender: TObject);
  118. begin
  119.   edtnetAddress.EditLabel.Caption := 'Com Port:';
  120.   edtNetPort.EditLabel.Caption := 'Device ID:';
  121.   edtnetAddress.Text := 'COM1';
  122.   edtNetPort.Text := '1';
  123. end;
  124. procedure TForm1.FormCreate(Sender: TObject);
  125. begin
  126.   setlength(EnrollPtr, EnrollDataLong div SizeOf(Integer));
  127.   setlength(enrollbyte,2048);
  128. end;
  129. procedure TForm1.btnFPRegisterClick(Sender: TObject);
  130. begin
  131.   try
  132.     EnrollNum:=strtoint(edtEnrollNum.Text );
  133.   except
  134.     edtMessage.Text :='Enroll number is not a valid number';
  135.     exit;
  136.   end;
  137.   if (EnrollNum < 1) and (EnrollNum>65534) then
  138.   begin
  139.     edtMessage.Text :='Enroll number must be in 1-65534 scope';
  140.     exit;
  141.   end;
  142.   if AFXOnlineMain1.Register then
  143.     EnrollData := AFXOnlineMain1.RegisterTemplate;
  144. end;
  145. end.