Comport4 CPort for delphi2010串口应用程序

时间:2022-09-25 20:34:06

comport4操作很简单

ComPort1.Open;//打开串口

ComPort1.close;//关闭串口

comport1.WriteStr('a');//发送字符a

ComPort1.ReadStr(Str,Count);//读取字符

Comport4 CPort for delphi2010串口应用程序

使用comport4做串口调试程序

comport4的安装见:http://blog.csdn.net/yorkworlddream/article/details/17382039

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, CPort, CPortCtl, StdCtrls;

type
TForm1 = class(TForm)
ComPort1: TComPort;
btnFs: TButton;
Edit2: TEdit;
Memo1: TMemo;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Memo2: TMemo;
procedure FormCreate(Sender: TObject);
procedure btnFsClick(Sender: TObject);
procedure ComPRxChar(Sender: TObject; Count: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

{16进制字符串转换成字符串}
function HexStrToStr(const S:string):string;
//16进制字符串转换成字符串
var
t:Integer;
ts:string;
M,Code:Integer;
begin
t:=1;
Result:='';
while t<=Length(S) do
begin
while not (S[t] in ['0'..'9','A'..'F','a'..'f']) do
inc(t);
if (t+1>Length(S))or(not (S[t+1] in ['0'..'9','A'..'F','a'..'f'])) then
ts:='$'+S[t]
else
ts:='$'+S[t]+S[t+1];
Val(ts,M,Code);
if Code=0 then
Result:=Result+Chr(M);
inc(t,2);
end;
end;

{字符串转换成16进制字符串}
function StrToHexStr(const S:string):string;
//字符串转换成16进制字符串
var
I:Integer;
begin
for I:=1 to Length(S) do
begin
if I=1 then
Result:=IntToHex(Ord(S[1]),2)
else Result:=Result+' '+IntToHex(Ord(S[I]),2);
end;
end;

//点击发送按钮
procedure TForm1.btnFsClick(Sender: TObject);
var
Str: String;
begin
comport1.WriteStr(Hexstrtostr(edit2.Text));//调用Hexstrtostr函数
end;

//初始化窗口
procedure TForm1.FormCreate(Sender: TObject);
begin
ComPort1.Open;
end;

//相当于串口中断 (要与comport1的OnRxChar进行连接)
procedure TForm1.ComPRxChar(Sender: TObject; Count: Integer);
var
Str: String;
begin
ComPort1.ReadStr(Str, Count);
memo1.Text:=StrToHexStr(Str);//显示成16进制形式
memo2.Text:={StrToHexStr}(Str);//显示成字符串形式
end;



end.
注意:ComPort1.ComPRxChar要与comport1的OnRxChar进行连接

Comport4 CPort for delphi2010串口应用程序


源文件下载地址:http://pan.baidu.com/s/1Dy1Us


其中35-72行的程序是为了

将输入的16进制的字符型数据转换成真实的16进制数

将16进制数,转成字符串进行显示用的程序


{16进制字符串转换成字符串}
function HexStrToStr(const S:string):string;
//16进制字符串转换成字符串
var
t:Integer;
ts:string;
M,Code:Integer;
begin
t:=1;
Result:='';
while t<=Length(S) do
begin
while not (S[t] in ['0'..'9','A'..'F','a'..'f']) do
inc(t);
if (t+1>Length(S))or(not (S[t+1] in ['0'..'9','A'..'F','a'..'f'])) then
ts:='$'+S[t]
else
ts:='$'+S[t]+S[t+1];
Val(ts,M,Code);
if Code=0 then
Result:=Result+Chr(M);
inc(t,2);
end;
end;

{字符串转换成16进制字符串}
function StrToHexStr(const S:string):string;
//字符串转换成16进制字符串
var
I:Integer;
begin
for I:=1 to Length(S) do
begin
if I=1 then
Result:=IntToHex(Ord(S[1]),2)
else Result:=Result+' '+IntToHex(Ord(S[I]),2);
end;
end;