📄 setcomm.pas
字号:
unit setcomm;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls,SPComm, Buttons, XPMenu;
type
TFsetcom = class(TForm)
Comsele: TComboBox;
Label1: TLabel;
comrate: TComboBox;
Label2: TLabel;
Combyte: TComboBox;
Label3: TLabel;
Comstop: TComboBox;
Label4: TLabel;
Comparity: TComboBox;
Label5: TLabel;
Bsetok: TBitBtn;
BCancel: TBitBtn;
Bevel1: TBevel;
XPMenu1: TXPMenu;
procedure FormActivate(Sender: TObject);
procedure BCancelClick(Sender: TObject);
procedure BsetokClick(Sender: TObject);
procedure ComseleChange(Sender: TObject);
procedure comrateChange(Sender: TObject);
procedure CombyteChange(Sender: TObject);
procedure ComstopChange(Sender: TObject);
procedure ComparityChange(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
type
TCommSet=record
CommName:string;
BaudRate:DWORD;
ByteSize:TByteSize;
StopBits:TStopBits;
Parity:TParity;
end;
var
Fsetcom: TFsetcom;
CommSet:TCommSet;
procedure initialize_comm();
procedure Error(str:longint);
function Tostr():string;
procedure write_set();
procedure read_set();
implementation
uses main;
{$R *.dfm}
procedure Error(str:longint);
begin
end;
procedure read_set();
begin
CommSet.CommName:=fmain.Comm1.CommName;
CommSet.BaudRate:=fmain.Comm1.BaudRate;
CommSet.ByteSize := fmain.Comm1.ByteSize;
CommSet.StopBits:= fmain.Comm1.StopBits;
CommSet.Parity :=fmain.Comm1.Parity;
end;
function Tostr():string;
var tmpstr:string;
const spacestr:string=' ';
begin
tmpstr:=tmpstr+'串口:'+commset.CommName+' 传输数率:'+inttostr(commset.BaudRate)+'波特';
tmpstr:=tmpstr+spacestr;
case Commset.ByteSize of
_8:tmpstr:=tmpstr+'数据位:8 数据位';
_7:tmpstr:=tmpstr+'数据位:7 数据位';
_6:tmpstr:=tmpstr+'数据位:6 数据位';
_5:tmpstr:=tmpstr+'数据位:5 数据位'
else
Error($171);
end;
tmpstr:=tmpstr+spacestr;
case Commset.StopBits of
_1:tmpstr:=tmpstr+'停止位:1 位停止位';
_1_5:tmpstr:=tmpstr+'停止位:1.5 位停止位';
_2:tmpstr:=tmpstr+'停止位:2 位停止位';
else
Error($172);
end;
tmpstr:=tmpstr+spacestr;
case Commset.Parity of
None:tmpstr:=tmpstr+'奇偶校验:无校验';
Odd:tmpstr:=tmpstr+'奇偶校验:奇校验';
Even:tmpstr:=tmpstr+'奇偶校验:偶校验';
Mark:tmpstr:=tmpstr+'奇偶校验:标记';
Space:tmpstr:=tmpstr+'奇偶校验:空格';
else
Error($173);
end;
result:=tmpstr;
end;
procedure write_set();
begin
fmain.Comm1.CommName:=CommSet.CommName;
fmain.Comm1.BaudRate:=CommSet.BaudRate;
fmain.Comm1.ByteSize := CommSet.ByteSize;
fmain.Comm1.StopBits:= CommSet.StopBits;
fmain.Comm1.Parity:=CommSet.Parity;
end;
procedure initialize_comm();
var i:byte;
begin
read_set();
with Fsetcom do
begin
comsele.Items.Clear;
for i:=1 to 128 do
begin
fmain.comm1.StopComm;
try
fmain.comm1.CommName:='com'+inttostr(i);
fmain.comm1.StartComm;
comsele.Items.Add(fmain.comm1.CommName);
except;
end;
end;
comsele.ItemIndex:=0;
end;
end;
procedure TFsetcom.FormActivate(Sender: TObject);
begin
initialize_comm();
end;
procedure TFsetcom.BCancelClick(Sender: TObject);
begin
close;
end;
procedure TFsetcom.BsetokClick(Sender: TObject);
begin
write_set();
close;
end;
procedure TFsetcom.ComseleChange(Sender: TObject);
begin
//串口名字
CommSet.CommName:=Comsele.Text;
end;
procedure TFsetcom.comrateChange(Sender: TObject);
begin
//传输数率
Commset.BaudRate:=strtoint(comrate.Text);
end;
procedure TFsetcom.CombyteChange(Sender: TObject);
begin
//数据位设置
case combyte.ItemIndex of
-1,0:Commset.ByteSize:=_8;
1:CommSet.ByteSize:=_7;
2:CommSet.ByteSize:=_6;
3:CommSet.ByteSize:=_5
else
Error($131);
end;
end;
procedure TFsetcom.ComstopChange(Sender: TObject);
begin
//停止位设置
case comstop.ItemIndex of
-1,0:Commset.StopBits:=_1;
1:CommSet.StopBits:=_1_5;
2:CommSet.StopBits:=_2;
else
Error($132);
end;
end;
procedure TFsetcom.ComparityChange(Sender: TObject);
begin
//校验
case ComParity.ItemIndex of
-1,0:Commset.Parity:=None;
1:CommSet.Parity:=Odd;
2:CommSet.Parity:=Even;
3:CommSet.Parity:=Mark;
4:CommSet.Parity:=Space
else
Error($133);
end;
end;
procedure TFsetcom.FormCreate(Sender: TObject);
begin
read_set();
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -