请写过通讯程序的朋友看看,帮帮啊,我实在是想不出那不对呀。 (0分)

  • 主题发起人 主题发起人 笨波
  • 开始时间 开始时间

笨波

Unregistered / Unconfirmed
GUEST, unregistred user!
听说过用MSCOMM发送数据的过程中,数据会丢失,可下面这个问题是出在了循环语句上了呢,
还是MSCOMM发过程中丢失的呢,请朋友们帮我看看。
我发送的数据是这样的:FEFE3344F32C6522;已经是十六进制的了,为了写到COM1上时也让
它认为我发的是十六进制的数而不是字符,(如果全用数字没有这种情况出现),我用了循环语句:如下
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
s,datastr:string;
begin
s:=memo1.text;
for i:=0 to (length(s) div 2)-1 do
begin
datastr:=datastr+chr(strtoint('$'+ copy(s,i*2+1,2)));
end;
可发现发送后,其它的数据都对,但F3后面的2C不见了,发送的数据变成了FEFE3344(3F)6522
我试了试好象是这样的,如果发送:F3C2,发送过程就是好的,但如果是F32C,就变成了:3F;
即:发送此种型式是好的:F3F4F5C2C4C6,但发送:F34F5FC26C时就不对,会改3F;
即第一个和第2*I+1个字符必须对应,要么都是数字,要么都是字符,不然就出错,改成了3F。
是不在循环的时候就出错了呢。如果我写上去的是2CF3,经过循环,再发送时发现发送的是:2C 00
 
什么乱七八糟的,看不懂,我现在也是用mscomm控件写的程序,你发的时候,不要用二进制
,用字符串来发就可以了,应该不会有问题的
 
接受答案了.
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
916
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
后退
顶部