?? 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 + -