📄 comdebug.pas
字号:
unit COMdebug;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls, SPComm, Buttons;
type
TForm1 = class(TForm)
ListView1: TListView;
Comm1: TComm;
Edit1: TEdit;
Button1: TButton;
GroupBox1: TGroupBox;
Label1: TLabel;
Label2: TLabel;
ComboBox2: TComboBox;
ComboBox1: TComboBox;
ComboBox3: TComboBox;
ComboBox4: TComboBox;
ComboBox5: TComboBox;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Button2: TButton;
GroupBox2: TGroupBox;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
Label6: TLabel;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
SpeedButton3: TSpeedButton;
SpeedButton4: TSpeedButton;
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure ComboBox1Click(Sender: TObject);
procedure ComboBox2Click(Sender: TObject);
procedure ComboBox3Click(Sender: TObject);
procedure ComboBox4Click(Sender: TObject);
procedure ComboBox5Click(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure SpeedButton3Click(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure Button1Click(Sender: TObject);
procedure SpeedButton4Click(Sender: TObject);
procedure Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
procedure Button3Click(Sender: TObject);
private
function Dectobin(a:integer):string; /////////*********定义*********////
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
SendData:string;
ButtonDown:string;
listitem:tlistitem;
implementation
{$R *.dfm}
function Tform1.Dectobin(a:integer):string;
var
temp :integer;
str:string;
begin
str:='';
while a>=2 do
begin
temp:=a mod 2;
a:=a div 2;
str:=IntToStr(temp)+str;
end;
str:=inttostr(a)+str;
result:=str;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
//buttondown:=speedbutton1.Caption ;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if button2.Caption ='打开串口' then
begin
try
comm1.StartComm ;
label6.Font.Color :=clgreen;
label6.Caption :='OK';
button2.Caption :='关闭串口';
except
label6.Font.Color :=clred;
label6.caption:='ERR';
end
end
else
begin
comm1.StopComm ;
button2.Caption :='打开串口';
label6.Caption :='';
end
end;
procedure TForm1.ComboBox1Click(Sender: TObject);
begin
comm1.CommName :=combobox1.Text ;
end;
procedure TForm1.ComboBox2Click(Sender: TObject);
begin
comm1.BaudRate :=strtoint(combobox2.text);
end;
procedure TForm1.ComboBox3Click(Sender: TObject);
begin
case combobox3.ItemIndex of
0:comm1.ByteSize :=_5;
1:comm1.ByteSize :=_6;
2:comm1.ByteSize :=_7;
3:comm1.ByteSize :=_8;
end;
end;
procedure TForm1.ComboBox4Click(Sender: TObject);
begin
case combobox4.ItemIndex of
0:comm1.StopBits :=_1;
//1:comm1.StopBits :=single(_1.5);
2:comm1.StopBits :=_2;
end;
end;
procedure TForm1.ComboBox5Click(Sender: TObject);
begin
case combobox5.ItemIndex of
0:comm1.ParityCheck :=false;
1:comm1.Parity := odd;
2:comm1.Parity :=even;
3:comm1.Parity :=mark;
4:comm1.Parity := space;
end;
end;
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
if trim(edit1.Text)='' then exit;
senddata:=dectobin(strtoint(edit1.Text ));
buttondown:=speedbutton1.Caption ;
end;
procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
if trim(edit1.Text )='' then exit;
senddata:=trim(edit1.Text );
buttondown:=speedbutton2.Caption;
end;
procedure TForm1.SpeedButton3Click(Sender: TObject);
begin
if trim(edit1.Text )='' then exit;
senddata:=inttohex(strtoint(trim(edit1.Text )),2);
buttondown:=speedbutton3.Caption ;
end;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
//showmessage(inttostr(length(trim(edit1.Text ))));
if (length(trim(edit1.Text ))>8) and (key<>#8) then key:=#0;
if ((key<>#8)and((key>#57)or (key<#48))) then key:=#0;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
showmessage(inttostr(length(senddata)));
if comm1.WriteCommData(@senddata,length(senddata)) then
with listview1 do
begin
listitem :=items.add;
listitem.caption:='Send';
listitem.subitems.add(buttondown);
listitem.subitems.add(senddata);
listitem.subitems.add('OK');
end
else
with listview1 do
begin
listitem :=items.add;
listitem.caption:='Send';
listitem.subitems.add(buttondown);
listitem.subitems.add(senddata);
listitem.subitems.add('ERR');
end;
speedbutton1.Down :=false;
speedbutton2.Down :=false;
speedbutton3.Down :=false;
speedbutton4.Down :=false;
end;
procedure TForm1.SpeedButton4Click(Sender: TObject);
begin
if trim(edit1.Text)='' then exit;
senddata:=trim(edit1.Text );
buttondown:=speedbutton4.Caption ;
end;
procedure TForm1.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
var
loop1:word;
recebyte:string;
Rbyte:array[1..10] of byte;
begin
//showmessage(inttostr(bufferlength));
//for loop1:=0 to bufferlength-1 do
//begin
//recebyte:='';
//recebyte:=inttostr(byte(Buffer^));
//recebyte:=recebyte+chr((Buffer)^);
//inc(pbyte(buffer));
//end;
//for loop1:=1 to bufferlength do
//recebyte:=recebyte+inttostr(rbyte[loop1]);*)
/////////////////////////////////////////
//setlength(rbyte,bufferlength);
recebyte:='';
move(buffer^,pchar((@rbyte)^),bufferlength);
for loop1:=1 to bufferlength do
//begin
recebyte:=recebyte+inttohex(rbyte[loop1],2);
//showmessage(inttostr(rbyte[loop1]));
//showmessage(recebyte);
//end;
with listview1 do
begin
listitem :=items.add;
listitem.caption:='Rece';
listitem.subitems.add('?');
listitem.subitems.add(recebyte);
listitem.subitems.add('OK');
end
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
listview1.Clear ;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -