📄 unit1.pas
字号:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, OleCtrls, MSCommLib_TLB, StdCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo;
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Button1: TButton;
Button2: TButton;
MSComm: TMSComm;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure MSCommComm(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
const
datalength=10;
var
Form1: TForm1;
outdata: array [0..datalength-1] of byte; //发送数据缓冲区;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
Try
mscomm.Settings:='9600,N,8,1'; //设置串口波特率、奇偶校验、数据位、停止位
mscomm.CommPort:=1; //设置串口号即:Com1
mscomm.RthReshold :=1; //设置中断方式接收数据
mscomm.PortOpen :=True; //打开串口
mscomm.DTREnable:=False; //DTR置高电平
mscomm.RTSEnable :=False; //RTS置高电平
except
application.MessageBox('串口初始化失败,请将设备接于Com1口!','提示',0);
Application.Terminate ; //退出应用程序
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
outbuff:array of byte; //定义动态数组存放发送数据;
addbuff:array of byte; //定义动态数组存放地址数据;
I:integer;
begin
Setlength(addbuff,1); //设置地址数组为一个字节;
Setlength(outbuff,DataLength); //设置数据数组为DataLength个字节;
Addbuff[0]:=strtoint(Edit1.text); //地址字节赋值;
For I:=0 to Datalength-1 do
Outbuff[I]:=outdata[I]; //数据字节赋值;
mscomm.Settings:='9600,M,8,1'; //设置奇偶校验位为M
Mscomm.output:=addbuff; //发送地址字节;(第9位数据为1)
mscomm.Settings:='9600,S,8,1'; //设置奇偶校验位为S
mscomm.output :=outbuff; ///发送非地址字节;(第9位数据均为0);
end;
procedure TForm1.MSCommComm(Sender: TObject);
var
inbuff:array of Byte; //定义动态数组,接收数据;
i:integer;
tempstr:string;
Begin
If Mscomm.CommEvent=2 Then //判断comEvReceive事件发生否
Begin
sleep(10); //等待所有的数据都被接收
Setlength(inbuff, Mscomm.InBufferCount); //设置接收数组的长度;
Inbuff:=Mscomm.Input; //将串口接收的数据置入动态数组
Tempstr:='';
For i:=0 To length(inbuff)-1 do
Tempstr:=Tempstr+inttostr(inbuff[i])+'';
memo1.Lines.Add(Tempstr); //将接收到的数据显示到memo中
End;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
If Mscomm. PortOpen Then
Mscomm.PortOpen:=False; //关闭串口
Close; //关闭应用程序
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -