📄 unit1.pas
字号:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons;
type
TForm1 = class(TForm)
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
function init_com(Port: integer): integer; stdcall; external 'SURE32WC.DLL';
function sele_card(crdno: integer): integer; stdcall; external 'SURE32WC.DLL';
function power_on: integer; stdcall; external 'SURE32WC.DLL';
function power_off: integer; stdcall; external 'SURE32WC.DLL';
function close_com: integer; stdcall; external 'SURE32WC.DLL';
function rd_asc(apz, address, Length: integer; buffer: pchar): integer; stdcall;
external 'SURE32WC.DLL';
function wr_asc(apz, address, Length: integer; buffer: pchar): integer; stdcall;
external 'SURE32WC.DLL';
function rd_str(apz, address, Length: integer; buffer: pchar): integer; stdcall;
external 'SURE32WC.DLL';
function wr_str(apz, address, Length: integer; buffer: pchar): integer; stdcall;
external 'SURE32WC.DLL';
function chk_sc(i1, i2: Integer; Str: pchar): integer; stdcall; external 'SURE32WC.DLL';
function wr_sc(Str: pchar): integer; stdcall; external 'SURE32WC.DLL';
{$R *.DFM}
procedure TForm1.BitBtn1Click(Sender: TObject);
var
Buf1: array[0..300] of Char; //300个HEX数据缓冲区
Buf2: array[0..150] of Char; // 150个字符串缓冲区
Hp, Sp: Pchar;
A, B, C, D, E, F, G, H: Integer;
begin
A := Init_Com(1); //初始化串口2
if A = 4 then //密码错误则退出
begin
MessageBox(0, '串口初始化错误', '演示', mb_ok);
exit;
end;
B := Sele_Card(42); //选择Siemens 4442卡,卡型编号42
C := Power_on; //卡上电操作
if C <> 0 then //密码错误则退出
begin
MessageBox(0, '读写器中无卡', '演示', mb_ok);
H := Close_com; //关闭串口
exit;
end;
Buf1:='FFFFFFFFFFFFFFFFFFFF';
Hp := @Buf1;
E := Rd_Asc(0, 0, 2, Hp); //读取2个字节HEX数据(卡型标志'A213'),返回4个字符
if E<>0 then
begin
MessageBox(0, '读卡错误', '演示', mb_ok);
H := Close_com; //关闭串口
exit;
end;
if (Buf1[0] <> 'A') or (Buf1[1] <> '2') or (Buf1[2] <> '1') or (Buf1[3] <> '3') then
begin
MessageBox(0, '卡型不对', '读卡型', mb_ok);
H := Close_com; //关闭串口
exit;
end;
Sp := 'FFFFFF'; //Siemens 4442空白卡缺省密码
D := Chk_SC(0, 3, Sp); //核对密码
if D <> 0 then //密码错误则退出
begin
MessageBox(0, '密码错误', '演示', mb_ok);
H := Close_com; //关闭串口
exit;
end;
E := Wr_Asc(1, 0, 10, '1234567890ABCDEF1234'); //写10个字节HEX数据
if E <> 0 then
begin
MessageBox(0, '写卡错误', '演示', mb_ok);
H := Close_com; //关闭串口
exit;
end;
Buf1:='FFFFFFFFFFFFFFFFFFFF';
Hp := @Buf1;
E := Rd_Asc(1, 0, 10, Hp); //读取10个字节HEX数据,返回20个字符
if E<>0 then
begin
MessageBox(0, '读卡错误', '演示', mb_ok);
H := Close_com; //关闭串口
exit;
end;
MessageBox(0, buf1,'rd_asc()卡内容', mb_ok);
E := Wr_Str(1, 0, 34, '我的姓名叫管康林 电话: 13802570511'); //写20个字节文本数据
if E <> 0 then
begin
MessageBox(0, '写卡错误', '演示', mb_ok);
H := Close_com; //关闭串口
exit;
end;
Buf2:='FFFFFFFFFF';
Hp := @Buf2;
F := Rd_Str(1, 0, 34, Hp); //读取20个字节文本数据
if F<>0 then
begin
MessageBox(0, '读卡错误', '演示', mb_ok);
H := Close_com; //关闭串口
exit;
end;
MessageBox(0, buf2,'rd_str()卡内容', mb_ok);
G := Power_off; //卡下电操作
H := Close_com; //关闭串口
MessageBox(0, '操作完备','卡内容', mb_ok);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -