spcomm无法接收数据的问题 ( 积分: 20 )

  • 主题发起人 主题发起人 黑夜沉淀
  • 开始时间 开始时间

黑夜沉淀

Unregistered / Unconfirmed
GUEST, unregistred user!
用spcom控间,写了个接收程序,程序老是将别人发送过来的‘11’(十六进制)这个字节屏蔽掉呢,无法接收该字节。例如发送过来的数据是2121001121,那么实际接收到的只有
21210021,中间的11不见了。不知道问题出在哪里。请教大家了,拜托!

procedure TForm1.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
var
viewstr:string;
i:integer;
ad,style:byte;
begin
viewstr:='';
move(buffer^,pchar((@rbuf)^),bufferlength);
for i:=1 to bufferlength do
viewstr:=viewstr+inttohex(rbuf,2)+'' ;
memo1.lines.add(viewstr);
memo1.lines.add('');
end;
 
用spcom控间,写了个接收程序,程序老是将别人发送过来的‘11’(十六进制)这个字节屏蔽掉呢,无法接收该字节。例如发送过来的数据是2121001121,那么实际接收到的只有
21210021,中间的11不见了。不知道问题出在哪里。请教大家了,拜托!

procedure TForm1.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
var
viewstr:string;
i:integer;
ad,style:byte;
begin
viewstr:='';
move(buffer^,pchar((@rbuf)^),bufferlength);
for i:=1 to bufferlength do
viewstr:=viewstr+inttohex(rbuf,2)+'' ;
memo1.lines.add(viewstr);
memo1.lines.add('');
end;
 
没有用过SPCOMM。
  是不是有一个xoff/xon协议开着?
 
都是默认值,没有更改呀。
 
表示关注。
晕,竟然说我灌水。只有多写几个字了。
 
把控件的属性XonChar的值#17改成其它值试试
 
一诺说得有点道理
 
实践证明,这样子就可以了
Outx_XonXoffFlow = False
Inx_XonXoffFlow = False
 
我的接收到的是乱码。郁闷至级。
 
Outx_XonXoffFlow = False
Inx_XonXoffFlow = False
 
用了
Outx_XonXoffFlow = False
Inx_XonXoffFlow = False
出现了另外一个问题,如果发送数据的时候,第一,二个字节将会自动发送‘11’字节。
 
呵呵,不好意思,是我字节在程序里摆了乌龙。问题已经解决。接收答案了,谢谢,^_^
 
后退
顶部