?? uspcomm.pas
字號(hào):
unit USpComm;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, SPComm;
type
TspComFrm = class(TForm)
spComm: TComm;
procedure spCommReceiveData(Sender: TObject; Buffer: Pointer; BufferLength: Word);
private
{ Private declarations }
public
function portread(recv:pchar):integer;
function portwrite(send:pchar; len:integer):boolean;
function openCom(comPort:integer; baudRate:integer; byteSize:integer; stopBit:integer; parity:integer):integer;
function closeCom():integer;
{ Public declarations }
end;
var
spComFrm: TspComFrm;
bResponse:boolean = false;
aResponse:array of char;
lResponse:integer = 0;
implementation
{$R *.dfm}
procedure TspComFrm.spCommReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
begin
SetLength(aResponse,BufferLength);
Move(Buffer^,aResponse[0],BufferLength);
lResponse:=BufferLength;
bResponse:=true;
end;
//TByteSize = ( _5, _6, _7, _8 );
function parseByteSize(iByte:integer):TByteSize;
begin
result:=_8;
if(iByte=5) then
begin
result:=_5;
end;
if(iByte=6) then
begin
result:=_6;
end;
if(iByte=7) then
begin
result:=_7;
end;
if(iByte=8) then
begin
result:=_8;
end;
end;
// TStopBits = ( _1, _1_5, _2 );
function parseStopBits(iStop:integer):TStopBits;
begin
result:=_1;
if(iStop=1) then
begin
result:=_1;
end;
if(iStop=2) then
begin
result:=_2;
end;
end;
//TParity = ( None, Odd, Even, Mark, Space );
function parseParity(iParity:integer):TParity;
begin
result:=None;
if(iParity=0) then
begin
result:=None;
end;
if(iParity=1) then
begin
result:=Odd;
end;
if(iParity=2) then
begin
result:=Even;
end;
if(iParity=3) then
begin
result:=Mark;
end;
if(iParity=4) then
begin
result:=Space;
end;
end;
function TspComFrm.portwrite(send:pchar; len:integer):boolean;
begin
bResponse:=false;
lResponse:=0;
SetLength(aResponse,0);
if (len=0) then exit;
result:=spComFrm.spComm.WriteCommData(send,len);
end;
function TspComFrm.portread(recv:pchar):integer;
var k:integer;
begin
result:=0;
if (lResponse<=0) then exit;
for k:=0 to lResponse-1 do recv[k]:=aResponse[k];
result:=lResponse;
end;
//返回 0 打開成功 -1 打開失敗
function TspComFrm.openCom(comPort:integer; baudRate:integer;
byteSize:integer; stopBit:integer; parity:integer):integer;
var iResult:integer;
begin
try
iResult:=0;
spComFrm.spComm.CommName:='com'+inttostr(ComPort); //串口
spComFrm.spComm.BaudRate:=BaudRate; //波特率
spComFrm.spComm.ByteSize:=parseByteSize(ByteSize); //數(shù)據(jù)位
spComFrm.spComm.StopBits:=parseStopBits(StopBit); //停止位
spComFrm.spComm.Parity:=parseParity(parity);
spComFrm.spComm.StartComm; //打開串口
sleep(200);
except
on e:exception do
begin
iResult:=-1;
end;
end;
result:=iResult;
end;
//返回 0 關(guān)閉成功 -1 關(guān)閉失敗
function TspComFrm.closeCom():integer;
var iResult:integer;
begin
try
iResult:=0;
sleep(200);
spComFrm.spComm.StopComm; //關(guān)閉串口
except
on e:exception do
begin
iResult:=-1;
end;
end;
result:=iResult;
end;
end.
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -