用Spcomm , 在收串口数据时,发现十六进制数'11'收不进来! 代码如下::::(100分)

  • 主题发起人 主题发起人 vericky
  • 开始时间 开始时间
V

vericky

Unregistered / Unconfirmed
GUEST, unregistred user!
var Rbuf : array [1..1024] of byte ;
...................
procedure TForm1.Comm2ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
var i : integer ;
StringGet : string ;
begin
StringGet :='(R): ';
move (buffer^ ,Rbuf,BufferLength);
For i := 1 to BufferLength do
StringGet := StringGet + inttohex(Rbuf,2) + ' ';
memo1.Lines.Add (StringGet) ;
end;

在收进来的所有数据中,唯独'11'不能收取,
比如,对端发送'AB CD 23 11 23' ,我只能收到'AB CD 23 23', '11'没了?
被spcomm 吃了? 谁知道怎么回事?
 
不會吧,是你自己問題吧
 
据说,ComPort Library version 2.62不错啊!
 
把RtsControl设置为RtsDisable

comport的确很不错
 
amo: 我改了Rtscontrol 可是还是不行啊?

spcomm用了这么长时间了, 应该没问题吧? 我的系统是win 98 + delphi 5 .

急死我了!
 
$11就是17
在spcomm缺省设置中使用它作为一个控制字符,
不过对不起,
很久没用过了,记不清是改什么地方了,
不过因为我以前也遇到过同样的问题,
改为不使用(象amo所说的那一项,可能是别的,你再改改看)就可以了,
你可以看看spcomm中的属性中有哪一项是#17,
再把相应的控制属性设置为disable。

 
谢谢carryon的提醒, 问题解决了,是outx_xonxoffflow 和 inx_xonxoffflow
属性的设置问题, 他们为true时, 将#13 和 #11 作为了控制字符, 改为false
就可以了, 如果后来的兄弟也有类似的问题,别忘了也谢谢carryon .
 
接受答案了.
 
后退
顶部