📄 unit1.pas
字号:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, SeComm, StdCtrls, ComCtrls, ExtCtrls, Menus;
type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
Panel1: TPanel;
Panel2: TPanel;
Memo1: TMemo;
Panel3: TPanel;
StatusBar1: TStatusBar;
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Edit2: TEdit;
Label3: TLabel;
Edit3: TEdit;
Label4: TLabel;
ComboBox1: TComboBox;
Label5: TLabel;
ComboBox2: TComboBox;
Label6: TLabel;
Edit4: TEdit;
SeComm1: TSeComm;
procedure FormCreate(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure CommReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
procedure edtBaudRateExit(Sender: TObject);
procedure edtByteSizeChange(Sender: TObject);
procedure cmbStopBitsChange(Sender: TObject);
procedure cmbParityChange(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.Text := 'COM1';
Edit2.Text := '9600';
Edit3.Text := '8';
ComboBox1.ItemIndex := 0;
ComboBox2.ItemIndex := 0;
end;
procedure TForm1.N3Click(Sender: TObject);
begin
//设置串口参数
SeComm1.CommName := Edit1.Text;
SeComm1.BaudRate := strToInt(Edit2.Text);
SeComm1.ByteSize := strToInt(Edit3.Text);
SeComm1.StopBits := TStopBits(ComboBox1.ItemIndex);
SeComm1.Parity := TParity(ComboBox2.ItemIndex);
//打开串口
try
SeComm1.OpenComm;
except
raise Exception.Create('打开串口错误');
end;
statusbar1.Panels[0].Text := SeComm1.CommName + '已打开';
statusbar1.Refresh;
N3.Enabled := False;
N4.Enabled := True;
N5.Enabled := True;
end;
procedure TForm1.N5Click(Sender: TObject);
begin
SeComm1.CloseComm;
statusbar1.Panels[0].Text := SeComm1.CommName + '已关闭';
statusbar1.Refresh;
end;
procedure TForm1.N4Click(Sender: TObject);
var
str: string;
Count: integer;
begin
str := Edit4.Text;
Count := Length(str);
SeComm1.Send(str);
Memo1.Lines.Add('已发送' + intTostr(Count) + '个字符');
end;
procedure TForm1.CommReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
var
strRecv : string;
begin
setLength(strRecv,BufferLength);
Move(Buffer^,pchar(strRecv)^,BufferLength);
Memo1.Lines.Add('已收到:'+intTostr(BufferLength)+'字节的数据');
Memo1.Lines.Add(strRecv);
Memo1.Invalidate ;
end;
//对波特率进行有效性检验
procedure TForm1.edtBaudRateExit(Sender: TObject);
begin
try
Edit1.SetFocus;
except
raise Exception.Create('波特率设置错误');
end;
//改变串口的波特率
SeComm1.BaudRate := StrToInt(Edit2.Text);
end;
procedure TForm1.edtByteSizeChange(Sender: TObject);
begin
//改变串口的数据位
SeComm1.ByteSize := StrToInt(Edit3.Text);
end;
procedure TForm1.cmbStopBitsChange(Sender: TObject);
begin
//改变串口的停止位
SeComm1.StopBits := TStopBits(ComboBox1.ItemIndex);
end;
procedure TForm1.cmbParityChange(Sender: TObject);
begin
//设置串口的奇偶校验位
SeComm1.Parity := TParity(ComboBox2.ItemIndex);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -