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.