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

📄 unit1.pas

📁 计算机网络与通信的知识
💻 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 + -