求助!!!Delphi中用了串口调试助手为什么spcomm还是接收不到数据

来源:百度知道 编辑:UC知道 时间:2024/05/12 10:39:50
已将下载好串口调试助手,增加了第三方空间SPCOMM,用的是同一个串口的发送和接收,程序通过编译,并可以正常发送,无论是串口助手还是Delphi始终无法进行接收,请高手指教!!
我用的是虚拟的,自发自收,通过调试助手查看的
procedure TFCOMM.Btn_sendClick(Sender: TObject);
begin
sbuf[1]:=byte($f0); //帧头
sbuf[2]:=byte($01); //命令号
sbuf[3]:=byte($ff);
sbuf[4]:=byte($ff);
sbuf[5]:=byte($01);
sbuf[6]:=byte($f0); //帧尾
senddata;//调用发送函数
end;
procedure TFCOMM.Comm4ReceiveData(Sender: TObject; Buffer: Pointer;BufferLength: Word);
var
i:integer;
begin
viewstring:='' ;
move(buffer^ ,rbuf[1],bufferlength);
for i:=1 to bufferlength do
viewstring:=viewstring+ inttohex(rbuf[i],2)+' ' ;
viewstring:='接收'+ viewstring;
memo1.lines.add(viewstring);
memo1.lines.add('' );
application.ProcessMessages;
end;
请帮我看下问题在哪里啊,急
我用的是USB转串口的线

还是不行啊
顺便再问,在按钮点击的事件里,对于接收函数需不需要调用?要怎么调用?我试过了,都不行……
请高手们指点指点

procedure TFCOMM.Comm4ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word); // 接收数据
var
RecData: string;
begin
SetLength(RecData, BufferLength);
move(Buffer^, PChar(@RecData[1])^, BufferLength);
Showmessage(RecData);//RecData就是接收到的数据
end;

额,你要用条线把两个串口连接起来。
或者用虚拟串口。

要说清楚:是自发自收,还是接收数据来自于下位机,
如果的第一种的话,请检查你的ReceiveData事件的接收语句是否正确;
var
a_Receive : array[1..200] of byte;
S_Bin : string;
begin

move(buffer^,a_Receive,200);
if a_Receive[1] = Unit_Add then
... ...

接收数据来自于下位机,肯定是你的下行读取数据命令出错,当然不会有返回。

我用的mscomm。在调试过程中,对串口助手的使用方法要恰当。虚拟串口软件一次可以添加一对串口,比如你添加的是com1,com2;你在调试过程中只能com1发,com2收。还有,spcomm的属性要设置好。