1.我使用来自[ Kaersoft 卡尔软件]的一个串口通讯控制器,可以成功的向一个AD模块发送命令,然后接收数据.
但没有这个软件所使用的一个控件[TApdComPort],不知道那位哥哥可以给一个.2.我使用SPCOMM组件的时候,不知道出现了什么问题,希望各位大侠帮忙解决.
问题:
我可以成功的打开串口,也可以写命令字进去,但是读不到数据.简易源代码如下:
procedure TForm1.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
var
S: string;
//问题主要在这里...这个接收数据的事件总是不执行
begin
inc(i);
Label1.Caption := IntToStr(i);
showmessage('receivedata'); SetLength(S, BufferLength);
Move(Buffer^, PChar(S)^, BufferLength);
Memo1.Lines.Add(S);
end;procedure TForm1.Button1Click(Sender: TObject);
begin
Comm1.StopComm;
Comm1.CommName := 'COM1';//打开串口..串口的其它配置信息在组件的属性栏已经设置
Comm1.StartComm;
end;procedure TForm1.FormDestroy(Sender: TObject);
begin
Comm1.StopComm;
end;procedure TForm1.Button2Click(Sender: TObject);
begin//writecommdata执行后,可以返回true.
if Comm1.WriteCommData(pchar(Edit1.Text),length(Edit1.Text)) then
showmessage('true')
else showmessage('false');end;希望各位大侠看看,我是一个串口通讯的初学者,不知道如何接收数据..
但没有这个软件所使用的一个控件[TApdComPort],不知道那位哥哥可以给一个.2.我使用SPCOMM组件的时候,不知道出现了什么问题,希望各位大侠帮忙解决.
问题:
我可以成功的打开串口,也可以写命令字进去,但是读不到数据.简易源代码如下:
procedure TForm1.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
var
S: string;
//问题主要在这里...这个接收数据的事件总是不执行
begin
inc(i);
Label1.Caption := IntToStr(i);
showmessage('receivedata'); SetLength(S, BufferLength);
Move(Buffer^, PChar(S)^, BufferLength);
Memo1.Lines.Add(S);
end;procedure TForm1.Button1Click(Sender: TObject);
begin
Comm1.StopComm;
Comm1.CommName := 'COM1';//打开串口..串口的其它配置信息在组件的属性栏已经设置
Comm1.StartComm;
end;procedure TForm1.FormDestroy(Sender: TObject);
begin
Comm1.StopComm;
end;procedure TForm1.Button2Click(Sender: TObject);
begin//writecommdata执行后,可以返回true.
if Comm1.WriteCommData(pchar(Edit1.Text),length(Edit1.Text)) then
showmessage('true')
else showmessage('false');end;希望各位大侠看看,我是一个串口通讯的初学者,不知道如何接收数据..
解决方案 »
- [转]做守候在这里的最后一个乞丐!
- 请教一些-------关于绘图的菜鸟问题
- 请教:DELPHI下如何取年份及如何让一个Edit输入框只能输入数字,谢谢
- 我在用delphi.net的时候,为什么运行时出现“无法加载 DLL (bdpmss20.dll)”
- TStringlist的问题
- 高分悬赏(关于ComboBox组件)
- 知道用UDP,在局域网外怎样向局域网内发信息吗/?及....!!请给予代码,实现的方法!
- 关于ADOTable小的问题。在线...................:)
- delphi中的字体问题
- delphi6比5多了一个objece treeview,是有什么用的,在代码编写器旁边多了一个dragram,是什么功能
- Delphi一个问题
- 关于消息处理的问题!在线等...
http://www.turbopower.com/updates/
edit1.text 为 #025,发送成功后,rReceiveData事件不执行.也就是说,我发了命令,但是接收不到数据...命令#025没有错...
Edit1.Text:=#025;!!
BufferLength: Word); var strRecv:string;
i:byte;
begin
setlength(strRecv,BufferLength);
move(buffer^,pchar(strRecv)^,Bufferlength); memo1.Lines.Add('已收到'+intTostr(Bufferlength)+'字节');
for i:=1 to BufferLength do
memo1.Lines.Add('s:'+intTohex(byte(strRecv[i]),1));
Memo1.Invalidate;end;
处界到COM的是HEX数
因为你用Comm1发送数据(从Com1),此时接收数据的是Com2(假设你电脑就只有两个Com口),如果你要显示接收到数据,还得加一个控件Comm2,设置端口为Com2,然后在Comm2的ReceiveData事件中接收数据就OK了!
先决条件:要由一根线将Com1和Com2相连接。
我在CSDN的另外一帖子中看到这样的说法:spcomm在WIN2K下有BUG,读不到数据...不知道是不是真的..
Buffer: Pointer; BufferLength: Word);
var
i:integer;
begin
sRece1:='';
move(buffer^,pchar((@rbuf)^),bufferlength);
for i:=1 to bufferlength do
begin
sRece1:=sRece1+ inttohex(rbuf[i],2);
end;
end;