📄 unit1.~pas
字号:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Buttons, OleCtrls, zkemkeeper_TLB, DB, UtBase64,
zkonline_TLB;
const
EnrollDataLong: integer=1836;
type
TForm1 = class(TForm)
CZKEM1: TCZKEM;
sbtnRS232: TSpeedButton;
sbtnTCPIP: TSpeedButton;
Label5: TLabel;
btnConnect: TButton;
edtNetAddress: TLabeledEdit;
edtNetPort: TLabeledEdit;
edtBaudRate: TEdit;
edtMessage: TEdit;
btnFPTConvertion: TButton;
AFXOnlineMain1: TAFXOnlineMain;
btnFPRegister: TButton;
edtEnrollNum: TEdit;
Label1: TLabel;
Label2: TLabel;
procedure btnConnectClick(Sender: TObject);
procedure btnFPTConvertionClick(Sender: TObject);
procedure sbtnTCPIPClick(Sender: TObject);
procedure sbtnRS232Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure btnFPRegisterClick(Sender: TObject);
private
{ Private declarations }
DevID: integer;
Commport: integer;
enrollptr: array of Integer;
enrollbyte: array of byte;
EnrollData:string; //Fingerprint template
EnrollNum:integer; //Enroll number
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.btnConnectClick(Sender: TObject);
var
ErrorCode: integer;
c: boolean;
begin
if btnConnect.Tag = 1 then
begin
CZKEM1.RefreshData(DevId);
CZKEM1.EnableDevice(DevId, TRUE);
CZKEM1.Disconnect;
btnConnect.Tag := 0;
btnConnect.Caption := 'Connect';
end
else
begin
devid:=strtoint(edtNetPort.Text);
if pos('COM', uppercase(edtNetAddress.text))=1 then
begin
commport:=ord(edtNetAddress.text[4])-ord('0');
CZKEM1.CommPort := commport;
c:=CZKEM1.Connect_Com(commport, DevID, strtoint(edtBaudRate.text));
end
else
begin
c:=CZKEM1.Connect_net(edtNetAddress.text, Devid);
Devid:=1;
end;
if c then
begin
edtMessage.Text := 'Device Connected.';
CZKEM1.EnableDevice(DevID, false);
btnConnect.Tag := 1;
btnConnect.Caption := 'Disconnect';
end
else
begin
CZKEM1.GetLastError(ErrorCode);
edtMessage.Text := format('! ConnectDevice ErrorNo.=%d',[ErrorCode]);
end;
end;
end;
procedure TForm1.btnFPTConvertionClick(Sender: TObject);
var
MachineNum,pinnum,i,emPrivilege,emPassword,errorcode,j:integer;
begin
if EnrollData='' then
begin
edtMessage.Text := '还没有登记指纹'; //还没有登记指纹
exit;
end;
DecodeData64(EnrollData); //将Base64格式的模板字符串转换为原始的指纹模板
Move(enrolldata[1], enrollbyte[0], Length(EnrollData));
Sleep(100);
errorcode := 0;
inc(j);
if not CZKEM1.SetUserTmp(1, EnrollNum, 1,enrollptr[0]) then
begin
CZKEM1.GetLastError(errorcode);
edtMessage.Text := 'SetEnrollData fail'; //传输指纹到脱机失败
exit;
end;
edtMessage.Text := 'SetEnrollData success'; //联机指纹已经传输到脱机
end;
procedure TForm1.sbtnTCPIPClick(Sender: TObject);
begin
edtnetAddress.EditLabel.Caption := 'IP Address:';
edtNetPort.EditLabel.Caption := 'Port Number:';
edtnetAddress.Text := '192.168.1.201';
edtNetPort.Text := '$1112';
end;
procedure TForm1.sbtnRS232Click(Sender: TObject);
begin
edtnetAddress.EditLabel.Caption := 'Com Port:';
edtNetPort.EditLabel.Caption := 'Device ID:';
edtnetAddress.Text := 'COM1';
edtNetPort.Text := '1';
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
setlength(EnrollPtr, EnrollDataLong div SizeOf(Integer));
setlength(enrollbyte,2048);
end;
procedure TForm1.btnFPRegisterClick(Sender: TObject);
begin
try
EnrollNum:=strtoint(edtEnrollNum.Text );
except
edtMessage.Text :='Enroll number is not a valid number';
exit;
end;
if (EnrollNum < 1) and (EnrollNum>65534) then
begin
edtMessage.Text :='Enroll number must be in 1-65534 scope';
exit;
end;
if AFXOnlineMain1.Register then
EnrollData := AFXOnlineMain1.RegisterTemplate;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -