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

📄 comdebug.pas

📁 把自己的电脑的RS232的2,3脚短起来就可以看到返回了
💻 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 + -