📄 unit1.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 + -