📄 plccomm.pas
字号:
unit PLCComm;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, OleCtrls, MSCommLib_TLB,Inifiles;
type
TForm1 = class(TForm)
GroupBox1: TGroupBox;
Bevel1: TBevel;
Label1: TLabel;
cmbBaudRate: TComboBox;
Label2: TLabel;
cmbCheckout: TComboBox;
Label3: TLabel;
RadioGroup1: TRadioGroup;
RB7: TRadioButton;
RB8: TRadioButton;
Label4: TLabel;
GroupBox2: TGroupBox;
RB1: TRadioButton;
RB2: TRadioButton;
btCancel: TButton;
btOK: TButton;
GroupBox3: TGroupBox;
ShapeLight: TShape;
Label5: TLabel;
btStart: TButton;
Label6: TLabel;
MSComm1: TMSComm;
Label7: TLabel;
cmbCom: TComboBox;
Label8: TLabel;
Edit1: TEdit;
Label9: TLabel;
procedure btOKClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure btCancelClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
myinifile:Tinifile;
procedure SetPatameter ;
implementation
{$R *.dfm}
procedure TForm1.btOKClick(Sender: TObject);
var
numbit,stopbit:String;
begin
if self.cmbBaudRate.Text ='' then showmessage('请设置波特率!');
if self.cmbCheckout.Text ='' then showmessage('请设置奇偶校验!');
// if not (self.RB7.Checked and self.RB8.Checked ) then showmessage('请设置数据位!');
if RB7.Checked then numbit:='7';
if RB8.Checked then numbit:='8';
if RB1.Checked then stopbit:='1';
if RB2.Checked then stopbit:='2';
myinifile.WriteString('通讯参数','波特率',cmbBaudRate.Text);
myinifile.WriteString('通讯参数','奇偶校验',cmbCheckout.Text);
myinifile.WriteString('通讯参数','数据位',numbit);
myinifile.WriteString('通讯参数','停止位',stopbit);
myinifile.WriteInteger('通讯参数','选择串口',cmbCom.ItemIndex+1);
showmessage('通讯参数设置成功!');
end;
procedure SetPatameter ;
begin
//
end;
procedure TForm1.FormCreate(Sender: TObject);
var
FileName,strbaudrate, strCheckout,strnumbit,strstopbit:string;
intcom:integer;
str:string;
begin
FileName:=ExtractFilePath(Paramstr(0))+'PlcParameter.ini';
myinifile:=TiniFile.Create(FileName); //创建INI文件
//注意:这段初始化的代码,要写在一个过程中,以便调用
//初始化参数设置区
strbaudrate:=myinifile.ReadString('通讯参数','波特率','cmbBaudRate.Text');
strCheckout:=myinifile.ReadString('通讯参数','奇偶校验','cmbCheckout.text');
strnumbit:=myinifile.ReadString('通讯参数','数据位','numbit');
strstopbit:=myinifile.ReadString('通讯参数','停止位','stopbit');
intcom:=myinifile.ReadInteger('通讯参数','选择串口',0);
cmbBaudRate.Text :=strbaudrate;
cmbCheckout.Text :=strcheckout;
cmbCom.ItemIndex :=intCom-1;
if strnumbit='8' then RB8.Checked:=true;
if strnumbit='7' then RB7.Checked :=true;
if strstopbit='1' then RB1.Checked:=true;
if strstopbit='2' then RB2.Checked:=true ;
//串口初始化
// str:='strbaudrate,n,strcheckout,strnumbit,strstopbit';
if self.MSComm1.PortOpen then self.MSComm1.PortOpen :=false;
MSComm1.CommPort :=intcom; //设置选择的串口
MSComm1.Settings :='9600,n,8,1';
MSComm1.InBufferSize :=1024;//设定接受队列长度为1KB
MSComm1.OutBufferSize :=1024;//设定发送队列长度为1KB
MSComm1.InputLen :=0;// 读取整个接受缓冲区的内容
MSComm1.InBufferCount :=0;//清除缓冲区内容
MSComm1.RThreshold :=1;//每接受一个字符就产生一个ONCOMM事件
MSComm1.InputMode :=comInputModeBinary;//串口以二进制形式收发数据
MSComm1.PortOpen :=true;//打开串口
end;
procedure TForm1.btCancelClick(Sender: TObject);
begin
if self.MSComm1.PortOpen then
showmessage('串口已打开!');
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -