我安装了控件cport4.10.按照官网的例程写了一个发送接收的程序:unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, CPort;type
TForm1 = class(TForm)
ComPort: TComPort;
Memo: TMemo;
Button_Open: TButton;
Edit_Data: TEdit;
Button_Send: TButton;
procedure Button_OpenClick(Sender: TObject);
procedure Button_SendClick(Sender: TObject);
procedure ComPortRxChar(Sender: TObject; Count: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button_OpenClick(Sender: TObject);
begin
if ComPort.Connected then
ComPort.Close
else
ComPort.Open;
end;procedure TForm1.Button_SendClick(Sender: TObject);
var
Str: String;
begin
Str := Edit_Data.Text;
ComPort.WriteStr(Str);
end;procedure TForm1.ComPortRxChar(Sender: TObject; Count: Integer);
var
Str: String;
begin
ComPort.ReadStr(Str, Count);
Memo.Text := Memo.Text + Str;
end;end.
然后将电脑的串口第二根线和第三根线相连,以实现自发自收,但是奇怪的是程序无论如何是无法接受数据的。用官网的例程倒是可以实现。cport控件下载地址是:http://sourceforge.net/projects/comport/。请教高手们,你们到底是怎么触发的接收事件的?
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, CPort;type
TForm1 = class(TForm)
ComPort: TComPort;
Memo: TMemo;
Button_Open: TButton;
Edit_Data: TEdit;
Button_Send: TButton;
procedure Button_OpenClick(Sender: TObject);
procedure Button_SendClick(Sender: TObject);
procedure ComPortRxChar(Sender: TObject; Count: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button_OpenClick(Sender: TObject);
begin
if ComPort.Connected then
ComPort.Close
else
ComPort.Open;
end;procedure TForm1.Button_SendClick(Sender: TObject);
var
Str: String;
begin
Str := Edit_Data.Text;
ComPort.WriteStr(Str);
end;procedure TForm1.ComPortRxChar(Sender: TObject; Count: Integer);
var
Str: String;
begin
ComPort.ReadStr(Str, Count);
Memo.Text := Memo.Text + Str;
end;end.
然后将电脑的串口第二根线和第三根线相连,以实现自发自收,但是奇怪的是程序无论如何是无法接受数据的。用官网的例程倒是可以实现。cport控件下载地址是:http://sourceforge.net/projects/comport/。请教高手们,你们到底是怎么触发的接收事件的?
解决方案 »
- 用ppReport1控件如何在一张A4纸上打印两联凭证?
- 关于对象销毁 free/freeAndNil/nil .... 困惑很久的问题要问了?
- 关于Splitter的问题
- 如何实现IE地址栏的功能
- Interbase有没有free的odbc driver
- 求教:ApplyUpdate二次更新数据失败
- 如何实现图片按钮,当鼠标不在图片上的时候是一张图片,鼠标移到图片上是另一张图片?
- 非程序问题:Win98突然少了红色.现在显示器只有绿色和蓝色了.非常别扭.会是什么原因?
- 除了delphi还有什么pascal的编译器呢?
- 如何自动隐藏,显示windows的任务栏,最好有源代码
- delphi空日期的显示问题
- 花冷寒露,巡山探幽
procedure Button_OpenClick(Sender: TObject);
procedure Button_SendClick(Sender: TObject);这两个过程是我在界面上双击按钮自动生成的声明,然后在下面加入相关代码。但是接收的那个过程
procedure ComPortRxChar(Sender: TObject; Count: Integer);是我手动添加的声明,后面的实现也是手动加入的,我怀疑是这里出问题了,但是我不知道怎么触发这个接收事件。已经被这个问题困扰了几天了,希望高手能过来解惑!!!不甚感激!
cport的Events下面可以找到这个事件。
var
Str:String;
RcvData: array[0..1023] of byte;
i:Integer;
begin
for i:=0 to 1023 do
RcvData[i]:=0;
ComPort.Read(RcvData, Count);
Str:='';
for i:=0 to Count-1 do
Str:=Str+IntToHex(RcvData[i],2);
Memo.Text := Memo.Text + Str;
end;
在他的属性栏中可以找到evRxChar,默认设置的是True,请问怎么关联?
只看到Events下面有几个属性:[evRxChar,evTxEmpty,evRxFlag,evRing,evBreak,evCTS,evDSR,evError,evRLSD,evRx80Full],双击无法进入啊。请教!