接收数据慢的问题没有解决,再提问。(100分)

  • 主题发起人 主题发起人 moodboy
  • 开始时间 开始时间
to qdyoung:
我已经下载,格式为.rar,怎样添加到Delphi中?
to 卸健飞天:
我怀疑问题出在我的十六进制接收上,你能否给一段接收代码?
 
用winrar解压缩
 
procedure TForm1.MSComm1Comm(Sender: TObject);
var
I,J:Integer;
begin
case MsComm1.CommEvent of
1 : //
2 : begin
Recvar:=VarArrayCreate([0,63],varByte); //Reccar为Variant类型,可设为全局变量,这句最好在初始化时完成;
I:=MSComm1.InBufferCount;
MSComm1.InputLen:=I;
Recvar:=MSComm1.Input; //;
for J:=0 to I-1 do
Str:=Str+IntToHex(Recvar[J],2);//Str为全局变量,用于接收字符;
end;
3 : //
......
......
end;{case}
end;
 
建议:数据分开传送,没有必要一次把64k都调过来啊(如果可以实现的话)。
 
to 卸健飞天:
不行啊,你的代码比我的还慢,同样接收2.28K数据,我都用Memo显示,我的代码用时19秒,
你的用时28秒。我还是去试试spcomm再说。
to all:
有什么高见请继续,我一直关注。
 
to 卸健飞天:
真不好意思,我看错表了,其实用时几乎一样。我说的接收时间指发出指令到接收完。
其中发出指令到单片机发送完约6~7秒。
 
其实讨论到现在,问题根本不在于软件方面的事.前面我已经说过了,计算机处理的速度
是很快的,64K的数据量对计算机处理来说,只是毫秒级的事情,就如同你的方法与我的方法时
间上没什么差别一样,都是毫秒级的事情,计算机处理时间的差别也就感觉不出来.关键的事
情是大部分时间都用在了数据的传输上了,串口的波特率限制了传输的速率,计算机大部分时
间是在等待数据收齐.就象一个大桶装了很多水,向另一个大桶诉讼,而两个桶却用一个细管
子相连,送完水当然就要很长时间了.
 
谢谢大家!
 
多人接受答案了。
 
后退
顶部