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

📄 umaincomm.pas

📁 spcomm串口编程
💻 PAS
字号:
{
* purpose: test spcomm
* author: whd0310
* data:  2007-10

}

unit uMainComm;

interface

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

type
  TfrmMainComm = class(TForm)
    CommTest1: TComm;
    Panel1: TPanel;
    cbPort: TComboBox;
    sttPort: TStaticText;
    cbBaut: TComboBox;
    cbParity: TComboBox;
    cbDataBits: TComboBox;
    cbStopBit: TComboBox;
    sttBaut: TStaticText;
    sttParity: TStaticText;
    sttDataBits: TStaticText;
    sttStopBit: TStaticText;
    Panel2: TPanel;
    Memo1: TMemo;
    Button1: TButton;
    Panel3: TPanel;
    Memo2: TMemo;
    Panel4: TPanel;
    ComboBox1: TComboBox;
    StaticText1: TStaticText;
    ComboBox2: TComboBox;
    ComboBox3: TComboBox;
    ComboBox4: TComboBox;
    ComboBox5: TComboBox;
    StaticText2: TStaticText;
    StaticText3: TStaticText;
    StaticText4: TStaticText;
    StaticText5: TStaticText;
    Button2: TButton;
    Panel5: TPanel;
    Memo3: TMemo;
    Panel6: TPanel;
    Memo4: TMemo;
    CommTest2: TComm;
    btnSend1: TButton;
    btnSend2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure CommTest1ReceiveData(Sender: TObject; Buffer: PAnsiChar;
      BufferLength: Word);
    procedure CommTest2ReceiveData(Sender: TObject; Buffer: PAnsiChar;
      BufferLength: Word);
    procedure btnSend1Click(Sender: TObject);
    procedure btnSend2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmMainComm: TfrmMainComm;

implementation

{$R *.dfm}

procedure TfrmMainComm.Button1Click(Sender: TObject);
begin
  if (Button1.Caption = '打开串口') and
     (not CommTest1.PortOpen) then
  begin
    with CommTest1 do
    begin
      CommPort:= cbPort.ItemIndex+1;
      BaudRate:= StrToInt(cbBaut.Text);
      StartComm;
      if PortOpen then
        Button1.Caption := '关闭串口'
      else
        showmessage('com is not exist,or is closed');
    end;
  end
  else
  begin
    CommTest1.StopComm ;
    Button1.Caption := '打开串口'
  end;


end;

procedure TfrmMainComm.Button2Click(Sender: TObject);
begin
  if (Button2.Caption = '打开串口') and
     (not CommTest2.PortOpen) then
  begin
    with CommTest2 do
    begin
      CommPort:= ComboBox1.ItemIndex+1;
      BaudRate:= StrToInt(ComboBox2.Text);
      StartComm;
      if PortOpen then
        Button2.Caption := '关闭串口'
      else
        showmessage('com is not exist,or is closed');
    end;
  end
  else
  begin
    CommTest2.StopComm ;
    Button2.Caption := '打开串口'
  end;
end;

procedure TfrmMainComm.CommTest1ReceiveData(Sender: TObject;
  Buffer: PAnsiChar; BufferLength: Word);
var
  j: integer;
  s: string;
begin
  j := BufferLength;

  SetLength(S, j); //
  Move(Buffer^, PChar(S)^, j);
  Memo1.Lines.Text:= Memo1.Lines.Text + s;
end;

procedure TfrmMainComm.CommTest2ReceiveData(Sender: TObject;
  Buffer: PAnsiChar; BufferLength: Word);
var
  j: integer;
  s: string;
begin
  j := BufferLength;

  SetLength(S, j); //
  Move(Buffer^, PChar(S)^, j);
  Memo3.Lines.Text:= Memo3.Lines.Text + s;
end;

procedure TfrmMainComm.btnSend1Click(Sender: TObject);
begin
  CommTest1.WriteCommData(Pchar(Memo2.Text),Length(Memo2.Text));
end;

procedure TfrmMainComm.btnSend2Click(Sender: TObject);
begin
  CommTest2.WriteCommData(Pchar(Memo4.Text),Length(Memo4.Text));
end;

end.

⌨️ 快捷键说明

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