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

📄 unit1.pas

📁 spcom控件调用
💻 PAS
字号:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, SPComm;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Comm1: TComm;
    ComboBox1: TComboBox;
    Button4: TButton;
    GroupBox1: TGroupBox;
    Edit1: TEdit;
    Button5: TButton;
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
      BufferLength: Word);
    procedure Button3Click(Sender: TObject);
    procedure senddata;
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  viewstring:string;
  i:integer;
  rbuf,sbuf:array[0..16] of byte;  


implementation

{$R *.dfm}

procedure TForm1.Button2Click(Sender: TObject);
begin
  Comm1.StartComm;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  comm1.StopComm;
end;

procedure TForm1.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
  BufferLength: Word);
var
  i:integer;
  tempZLstring1:string;
  canconvert:boolean;
  isNotZero:boolean;
begin
  viewstring:='';
  move(buffer^,pchar((@rbuf)^),bufferlength);
  for i:=1 to bufferlength do
  viewstring:=viewstring+ inttohex(rbuf[i],2)+'';
  viewstring:='接收'+ viewstring;
  memo1.lines.add(viewstring);
  memo1.lines.add('');
  //显示串口数
  tempZLstring1:='';
  canconvert:=true;
  i:=10;
  while (i<19)and(canconvert) do
  begin
    if ((viewstring[i]<='0')and(viewstring[i]>='1')) then
      canconvert:=false;
    if not(viewstring[i]='0') then
    begin
      isNotZero:=true;
    end;
    if (i>13)or(isNotZero) then
    begin
      tempZLstring1:=tempZLstring1+viewstring[i];
    end;
    if i=14 then
    begin
      tempZLstring1:=tempZLstring1+'.';
    end;
    i:=i+2;
  end;
  if canconvert then
    Edit1.Text:=FormatFloat('0.00',StrToFloat(tempZLstring1));

end;

procedure TForm1.Button3Click(Sender: TObject);
begin
sbuf[1]:=byte($f0); //帧头
 
sbuf[2]:=byte($01); //命令号
 
sbuf[3]:=byte($ff);
 
sbuf[4]:=byte($ff);
 
sbuf[5]:=byte($01);
 
sbuf[6]:=byte($f0); //帧尾
 
senddata;//调用发送函数  

end;
//自定义发送数据过程  
 
procedure TForm1.senddata;
var
  i:integer;
  commflg:boolean;
begin
  viewstring:='';
  commflg:=true;

  for i:=1 to 6 do
    begin
    if not(comm1.writecommdata(@sbuf[i],1)) then
    begin
      commflg:=false;
      break;
  end;
  //发送时字节间的延时
  sleep(2);
  viewstring:=viewstring+ inttohex(sbuf[i],2)+''; end;
  viewstring:='发送'+ viewstring;
  memo1.lines.add(viewstring);
  memo1.lines.add('');
  if not commflg then messagedlg('发送失败 !',mterror,[mbyes],0);
end;


procedure TForm1.Button4Click(Sender: TObject);
begin
  Comm1.StopComm;
  Comm1.CommName:=ComboBox1.Text;
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
  Memo1.Lines.SaveToFile('track.txt');
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -