📄 unit1.~pas
字号:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
rdCOM: TRadioGroup;
btnOpenPort: TButton;
btnEnd: TButton;
btnSend: TButton;
btnReceive: TButton;
mSend: TMemo;
mReceive: TMemo;
procedure btnOpenPortClick(Sender: TObject);
procedure btnEndClick(Sender: TObject);
procedure btnSendClick(Sender: TObject);
procedure btnReceiveClick(Sender: TObject);
private
public
{ Public declarations }
end;
var
Form1: TForm1;
DTRMode,RTSMode,Port:Integer;
Function PortSet():Boolean;
implementation
uses PComm,MxTool,EXGLOBAL; //PCOmm引用声明放于此
{$R *.DFM}
//以下是打开通信端口的程序
procedure TForm1.btnOpenPortClick(Sender: TObject);
var
Ret:Integer;
begin
//打开通信端口
Port := rdCom.ItemIndex+1; //指定通信端口
Ret := sio_Open(Port);
If ret <> SIO_OK Then
begin
ShowMessage('打开通信端口错误');
sio_close (Port);
Exit;
end;
If Not PortSet() Then //参数设置
begin
sio_close(Port);
ShowMessage('通信端口参数设置发生错误');
Exit;
End;
//降低DTR及RTS的电压
ret := sio_DTR(Port, 0);
ret := sio_RTS(Port, 0);
end;
//以下是结束按钮的动作
procedure TForm1.btnEndClick(Sender: TObject);
begin
//关闭通信端口
sio_Close(Port);
//结束程序
close;
end;
procedure TForm1.btnSendClick(Sender: TObject);
var
TxtStr:String;
begin
//输出字符串指定
TxtStr := mSend.Text;
//把Pascal字符串转成C字符串后送出
sio_write(Port, PChar(TxtStr), Length(TxtStr))
end;
procedure TForm1.btnReceiveClick(Sender: TObject);
var
rLen:LongInt;
PBuf:PChar;
Buf:String;
begin
//给一个空间存数据,一定要有
PBuf := PChar(StringOfChar(' ',1024));
rlen := sio_read(Port,PBuf , 1024); //读取数据
If rlen = 0 Then Exit; //若无数据则跳出
Buf := StrPas(PBuf);
Buf := Copy(Buf,1,rlen);
//将数据显示在Memo中
mReceive.Text := mReceive.Text + Buf;
mReceive.SelStart := Length(mReceive.Text);
mReceive.SelLength := 0;
end;
//以下是通信参数的函数实现
Function PortSet():Boolean;
var
mode,Hw,Sw,ret:LongInt;
begin
//参数设置子程序
mode := P_NONE Or BIT_8 Or STOP_1;
Hw := 0 ; //没有硬件流量控制
Sw := 0 ; //没有软件流量控制
Result := False ;
ret := sio_ioctl(Port, B38400, mode); //Setting
If ret <> SIO_OK Then
begin
ShowMessage('设置时发生错误');
Exit;
end;
ret := sio_flowctrl(Port, Hw or Sw); //Flow Control
If ret <> SIO_OK Then
begin
ShowMessage('流量设置时发生错误');
Exit;
end;
Result := True;
End;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -