⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 read.pas

📁 读写器的连接,并从读写器通过串口读取标签的ID号
💻 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 + -