Delphi MSComm简单的中间PC串口数据中转


本文整理自网络,侵删。

 
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, OleCtrls, MSCommLib_TLB;
 
type
  TForm1 = class(TForm)
    MSComm1: TMSComm;
    MSComm2: TMSComm;
    Button1: TButton;
    Button2: TButton;
    procedure Button2Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Button1Click(Sender: TObject);
    procedure MSComm1Comm(Sender: TObject);
    procedure MSComm2Comm(Sender: TObject);
  private
    {
 Private declarations 
}
  public
    {
 Public declarations 
}
  end;
 
var
  Form1: TForm1;
 
implementation
 
{
$R *.dfm
}
 
procedure TForm1.Button2Click(Sender: TObject);
begin
  button1.Enabled:=true;
  if mscomm1.PortOpen then
    mscomm1.PortOpen:=false;
  if mscomm2.PortOpen then
    mscomm2.PortOpen:=false;
  Button2.Enabled:=false;
end;
 
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  if Application.MessageBox('您真的想退出吗?','串口数据处理',mb_okcancel)=idok then
  begin
    if mscomm1.PortOpen then
      mscomm1.PortOpen:=false;
    if mscomm2.PortOpen then
      mscomm2.PortOpen:=false;
  end
  else
    action:=canone;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  button1.Enabled:=false;
  Button2.Enabled:=true;
  //COM1
  MSComm1.CommPort:=1; //默认串口1
  MSComm1.InBufferSize:=1024;
  MSComm1.OutBufferSize:=512;
  MSComm1.Settings:='19200,n,8,1'; //波特率为19200
  if not MSComm1.PortOpen then
    MSComm1.PortOpen:=true; //打开串口
  MSComm1.InBufferCount:=0;               //滑空接收缓冲区
  MSComm1.OutBufferCount:= 0;             //清空发送缓冲区
  MSComm1.RThreshold:=1;
  MSComm1.InputLen:=0;
 
  //COM2
  MSComm2.CommPort:=2; //默认串口2
  MSComm2.InBufferSize:=1024;
  MSComm2.OutBufferSize:=512;
  MSComm2.Settings:='19200,n,8,1'; //波特率为19200
  if not MSComm2.PortOpen then
    MSComm2.PortOpen:=true; //打开串口
  MSComm2.InBufferCount:=0;               //滑空接收缓冲区
  MSComm2.OutBufferCount:= 0;             //清空发送缓冲区
  MSComm2.RThreshold:=1;
  MSComm2.InputLen:=0;
   
}
  //发送字符数据时注意必须用回车符结束
 
end;
 
procedure TForm1.MSComm1Comm(Sender: TObject);
var
  Buffer:string;
begin
  Case MSComm1.CommEvent of
  2:        //comEvReceive 2 接收事件
    begin
      Buffer := MSComm1.Input;
      MSComm2.Output:=Buffer;
      Buffer:='';
    end
  end;
 
end;
 
procedure TForm1.MSComm2Comm(Sender: TObject);
var
  Buffer:string;
begin
  Case MSComm2.CommEvent of
  2:        //comEvReceive 2 接收事件
    begin
      Buffer := MSComm2.Input;
      MSComm1.Output:=Buffer;
      Buffer:='';
    end
  end;
end;
 
end.

相关阅读 >>

Delphi datasnap 上传/下载大文件(本demo以图传片文件为例)

Delphi gridpanel percent百分比设置

Delphi 判断是否是0-9数字

Delphi 10.4.1 edgebrowser 模拟操作网页方法

Delphi treeview添加背景图片

Delphi 检查当前用户权限

Delphi中关于字符串的操作

Delphi实现票据精确打印

Delphi 判断文本是否包含多个关键词之一

Delphi xe中泛型数组的使用范例

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...

    暂无评论...