接收数据时间太长,有什么相关设置? (100分)

  • 主题发起人 主题发起人 moodboy
  • 开始时间 开始时间
M

moodboy

Unregistered / Unconfirmed
GUEST, unregistred user!
我用的是MScomm,与单片机通信,测试时把接收到的数据转换成ASC码在memo中显示,当数据
较少时倒罢了,当数据较多时,要用很长的时间。初略估计了一下,当接收的数据达到几K时,
需要几十秒,我要接收的数据最大为64K,估计时间将……这对一个实时监控系统来说是不
能容忍的。各位高手,请问该怎么设置?先谢了!
 
用多线程吧!
 
用spcomm32吧

----------
http://www.8421.org
 
to maming:
多线程怎么用?我初学,不懂线程,请指教。
to qdyoung:
我来不及换控件了。
 
不会是300的bps吧,这样才会3k的传10秒的
检查波特率吧,一般工控的都有19200的
 
哈哈!
这问题我也遇到过,可能因为你使用了Memo1.Text1:=Memo1.Text+XXX;当数据很多时,
Memo1.Text已经含有了大量数据,但你要显示出来,当然需要很长时间,你只要不先把数据
显示出来,等到接收完成再显示,便可以了.
 
to qdyoung:
波特率为9600
 
to 卸健飞天:
没错,我是用了Memo1.Text1:=Memo1.Text+XXX; 我要根据Memo1.text的内容进行数据处理,
接收完再显示,怎么做呢?
 
你可以先不要显示,可以先放入一字符串中,处理完以后,再用Memo1.Text:=字符串,
不就可以了!
 
to 卸健飞天:
你是说String1:=String1+XXX; 然后处理前再Memo.Text=String1;?一样慢啊
 
我是说String1:=String1+XXX,在处理后,再Memo.Text=String1,你是这样做的吗?
 
多人接受答案了。
 
to 卸健飞天:
是快了一点,但也就是一点,大约快1/4的时间吧,我一时高兴,没有仔细比较时间就
给分了(当然,分是应该给的)。你能否有更好的办法?不会得到分后就不再理了吧?
 
我用timer测试了一下,几乎没有变快啊!
 
我想问题不在于你的数据处理,而在于mscomm的数据传输,你可以在传输以前
检查一下传输的内容,并看一下字节数:
ShowMessage(YourDataString + #13 + 'Length=' + IntToStr(Length(YourDataString));
 
to qdyoung:
谢谢你再次参与。传输的内容是不会有错的,我用Memo看过我接收时还加了CRC校验。
难道是校验花太多时间?我的校验是移位法。有什么办法的话可以到下面看看,我另开了一贴:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1154661
 
后退
顶部