?? unit1.~pas
字號(hào):
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}
//以下是打開(kāi)通信端口的程序
procedure TForm1.btnOpenPortClick(Sender: TObject);
var
Ret:Integer;
begin
//打開(kāi)通信端口
Port := rdCom.ItemIndex+1; //指定通信端口
Ret := sio_Open(Port);
If ret <> SIO_OK Then
begin
ShowMessage('打開(kāi)通信端口錯(cuò)誤');
sio_close (Port);
Exit;
end;
If Not PortSet() Then //參數(shù)設(shè)置
begin
sio_close(Port);
ShowMessage('通信端口參數(shù)設(shè)置發(fā)生錯(cuò)誤');
Exit;
End;
//降低DTR及RTS的電壓
ret := sio_DTR(Port, 0);
ret := sio_RTS(Port, 0);
end;
//以下是結(jié)束按鈕的動(dòng)作
procedure TForm1.btnEndClick(Sender: TObject);
begin
//關(guān)閉通信端口
sio_Close(Port);
//結(jié)束程序
close;
end;
procedure TForm1.btnSendClick(Sender: TObject);
var
TxtStr:String;
begin
//輸出字符串指定
TxtStr := mSend.Text;
//把Pascal字符串轉(zhuǎn)成C字符串后送出
sio_write(Port, PChar(TxtStr), Length(TxtStr))
end;
procedure TForm1.btnReceiveClick(Sender: TObject);
var
rLen:LongInt;
PBuf:PChar;
Buf:String;
begin
//給一個(gè)空間存數(shù)據(jù),一定要有
PBuf := PChar(StringOfChar(' ',1024));
rlen := sio_read(Port,PBuf , 1024); //讀取數(shù)據(jù)
If rlen = 0 Then Exit; //若無(wú)數(shù)據(jù)則跳出
Buf := StrPas(PBuf);
Buf := Copy(Buf,1,rlen);
//將數(shù)據(jù)顯示在Memo中
mReceive.Text := mReceive.Text + Buf;
mReceive.SelStart := Length(mReceive.Text);
mReceive.SelLength := 0;
end;
//以下是通信參數(shù)的函數(shù)實(shí)現(xiàn)
Function PortSet():Boolean;
var
mode,Hw,Sw,ret:LongInt;
begin
//參數(shù)設(shè)置子程序
mode := P_NONE Or BIT_8 Or STOP_1;
Hw := 0 ; //沒(méi)有硬件流量控制
Sw := 0 ; //沒(méi)有軟件流量控制
Result := False ;
ret := sio_ioctl(Port, B38400, mode); //Setting
If ret <> SIO_OK Then
begin
ShowMessage('設(shè)置時(shí)發(fā)生錯(cuò)誤');
Exit;
end;
ret := sio_flowctrl(Port, Hw or Sw); //Flow Control
If ret <> SIO_OK Then
begin
ShowMessage('流量設(shè)置時(shí)發(fā)生錯(cuò)誤');
Exit;
end;
Result := True;
End;
end.
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -