📄 read.pas
字号:
unit read;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, OleCtrls, MSCommLib_TLB, ExtCtrls, Grids, ValEdit,
IWControl, IWExtCtrls, Buttons, Mask, DB, DBTables;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
ComboBox1: TComboBox;
Label1: TLabel;
Label2: TLabel;
ComboBox2: TComboBox;
Timer1: TTimer;
Button6: TButton;
ComboBox3: TComboBox;
Label3: TLabel;
ListBox1: TListBox;
Label4: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Timer2: TTimer;
Button7: TButton;
Label8: TLabel;
StringGrid1: TStringGrid;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Timer2Timer(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure ComboBox3Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
xh,oc:integer;
function Open_Comm_Port(port:integer;baud:integer):integer; stdcall;
function Close_Comm_Port():integer; stdcall; function Comm_Frame_Send(senddata:pchar;size1:integer):integer; stdcall; function Comm_Frame_Rev(recdata:array of byte):integer; stdcall; function Clear_Rev_Buffer():integer; stdcall; function Close_Rf_Power():integer; stdcall; function Open_Rf_Power(ant_no:byte):integer; stdcall; function Start_Read_Tag_Id(ant_no:byte):integer; stdcall; function Start_Read_Tag_Mid(ant_no:byte):integer; stdcall; function Device_Reset():integer; stdcall;
implementation
function Open_Comm_Port; external 'reader_api.dll' ;
function Close_Comm_Port;external 'reader_api.dll' ; function Comm_Frame_Send;external 'reader_api.dll' ; function Comm_Frame_Rev; external 'reader_api.dll' ; function Clear_Rev_Buffer; external 'reader_api.dll' ; function Close_Rf_Power; external 'reader_api.dll' ; function Open_Rf_Power; external 'reader_api.dll' ; function Start_Read_Tag_Id;external 'reader_api.dll' ; function Start_Read_Tag_Mid; external 'reader_api.dll' ; function Device_Reset; external 'reader_api.dll' ;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
com,bo,orp:integer;
begin
xh:=0;
com:=strtoint(Combobox1.text[4]);
bo:= strtoint(Combobox2.text);
oc:=Open_Comm_Port(com,bo); //打开串口
if oc=1 then
begin
orp:=Open_Rf_Power(byte($1));
if orp=1 then
begin
Button2.Enabled:=true ;
Button3.Enabled:=true ;
Button4.Enabled:=false ;
Button5.Enabled:=true ;
Button6.Enabled:=false ;
Button1.Enabled:=false;
Button7.Enabled:=true ;
Close_Rf_Power();
end
else
begin
Close_Rf_Power();
Close_Comm_Port();
Clear_Rev_Buffer();
showmessage('波特率选择错误') ;
exit;
end;
end
else
begin
showmessage('串口错误') ;
exit;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
cc:integer;
begin
cc:=Close_Comm_Port(); //关闭串口
if cc=1 then
begin
Button1.Enabled:=true ;
Button2.Enabled:=false;
Button3.Enabled:=false;
Button4.Enabled:=false;
Button5.Enabled:=false;
Button6.Enabled:=false;
timer1.Enabled:=false;
Close_Rf_Power();
end;
end;
procedure TForm1.Button3Click(Sender: TObject);
var
orp:integer;
begin
orp:=Open_Rf_Power(byte($1)); // 打开射频功放
if orp=1 then
begin
button3.Enabled:=false;
button4.Enabled:=true;
end
else
exit;
end;
procedure TForm1.Button4Click(Sender: TObject);
var
crp:integer;
begin
crp:=Close_Rf_Power(); //关闭功放
if crp=1 then
begin
button4.Enabled:=false;
button3.Enabled:=true ;
end
else
exit;
end;
procedure TForm1.Button5Click(Sender: TObject);
var
tii:integer;
begin
if oc=1 then
begin
tii:=strtoint(Combobox3.Text);
Timer1.Interval:=tii;
Timer1.Enabled:=true;
button5.Enabled:=false;
button6.Enabled:=true;
end
else
exit;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
row,col,srt,cfr,i,n,m:integer;
recdata:array of byte;
ss:string;
begin
ListBox1.Color:=clwhite;
Clear_Rev_Buffer();
srt:=Start_Read_Tag_Id(byte($1)); //读标签
setlength(recdata,20);
cfr:=Comm_Frame_Rev(recdata); //读取数据
if cfr=19 then
begin
ListBox1.Color:=clred;
beep;
ss:='ID:';
for i:=7 to 16 do
begin
ss:=ss+' '+inttohex(recdata[i],2);
end;
for row:=0 to stringgrid1.RowCount-1 do
begin
if trim(ss)=trim(stringgrid1.Cells[1,row]) then
begin
stringgrid1.Cells[2,row]:=inttostr(strtoint(stringgrid1.Cells[2,row])+1);
m:=0;
break;
end
else
begin
m:=1;
Continue;
end;
end;
if m=1 then
begin
xh:=xh+1;
stringgrid1.cells[0,xh]:=inttostr(xh);
stringgrid1.Cells[1,xh]:=ss;
stringgrid1.Cells[2,xh]:=inttostr(1);
end
else
begin
exit;
end;
end
else
begin
exit;
end;
end;
procedure TForm1.Button6Click(Sender: TObject);
begin
timer1.Enabled:=false;
button6.Enabled:=false;
button5.Enabled:=true;
end;
procedure TForm1.Timer2Timer(Sender: TObject);
var
orp:integer;
begin
edit1.Color:=clblack;
edit2.Color:=clblack;
edit3.Color:=clblack;
orp:=Open_Rf_Power(byte($1)); // 打开射频功放
if orp=1 then
begin
edit1.Color:=clred;
edit2.Color:=clred;
edit3.Color:=clred;
end
else
exit;
end;
procedure TForm1.Button7Click(Sender: TObject);
var
row:integer;
begin
row:=0;
for row:=1 to stringgrid1.RowCount-1 do
begin
stringgrid1.Cells[0,row]:='';
stringgrid1.Cells[1,row]:='';
stringgrid1.Cells[2,row]:='';
xh:=0;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
stringgrid1.Cells[0,0]:='序号';
stringgrid1.Cells[1,0]:='标签ID号';
stringgrid1.Cells[2,0]:='读取标签次数';
end;
procedure TForm1.ComboBox3Change(Sender: TObject);
var
tii:integer;
begin
tii:=strtoint(Combobox3.Text);
Timer1.Interval:=tii;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -