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

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

moodboy

Unregistered / Unconfirmed
GUEST, unregistred user!
用MScomm与单片机通信,接收数据几K时要花时间几十秒,接收的数据最大有64K,这样的话
该花多少时间啊!根本就不能称为实时监控系统。请问各位该怎样解决?
相关问题可以参考以下:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1153772
 
都没有人愿意回答,我感动很难过。
 
从软件的角度基本上是不能解决的,以9600的波特率计算,1k数据怎么也要1秒多。
建议你:
1、提高波特率,但这是已牺牲稳定性为代价的,还不一定符合你对于速度的要求。
2、最更本的解决办法,用专门的通讯总线,如Lonwork,CanBus等
 
to Bxch_1000:
我监控的单片机波特率只能上到9600了。问题是花的时间十倍于你说的啊,难道真是校验问题?
但我原来不校验时也试过接收,当接收的数据多时在Memo中先显示约200字节,然后等很久才显示完。
到底是怎么回事?
 
首先测试一下是你的程序问题还是其他问题,你可以不用你的程序,而用其他通讯软件与
单片机通讯,测试一下时间。

然后测试一下你的编程方法有没有问题,用你的编程方法与其他微机的通讯软件,
看看同样设置下发送、接收都有没有问题。
 
to qdyoung:
我有一个VB的测试软件,它没有校验,接收挺快的,但没有源代码。我找不出原因了!
 
to moodboy
校验应该没问题,是微秒级的操作,问几个问题
1、你用串口调试工具试过了吗?是不是一样慢?
2、单片机是用的中断方式发送?还是询问方式?
3、你的程序用了多线程了吗?
4、你的通讯协议是怎么定的,为什么会有64k的数据包?
 
to Bxch_1000:
1.同前。
2.单片机发送完数据后有一个指示灯,指示灯亮了以后很久我才接收完数据。
3.我不懂多线程,请问怎样做?成功后我再给你分。
4.64K的数据是在单片机的内存中的数据,它包含有几天来的历史数据。
 
大家有什么好的演示程序可以发到我的邮箱,我再给分。先谢了!
mumuhai@sohu.com
 
to Bxch_1000:
第一个问题没回复好。我用一个VB工具试过,它没有校验,比较快,但没有源代码。
 
因为你的数据量太大,正如Bxch_1000所说,以9600的波特率计算,1k数据要1秒多,唯一
的办法只有提高波特率或减少数据量,单片机的波特率应该能提高啊?MSComm用于115200是没
问题的,这样可以提高10多倍速率.
 
to 卸健飞天:
单片机还要监控另外的设备,此设备不支持高波特率啊
 
那就说明是你程序问题了
> 我有一个VB的测试软件,它没有校验,接收挺快的

只有用其它方法试了,spcom32很好用的,很容易
 
to qdyoung:
我早就怀疑我的数据处理有问题,但没有其他办法。你是怎样把数据转换成字符串的?
有Demo的话发到我的信箱,分很快就会给。
 
你说处理的慢,其实通过有线连接,是极少出错的,至少我是没遇到过,CRC常用于无线通讯,
所以你可以去掉CRC,其实计算机的处理速度是很快的,执行指令都是微秒级的,不会出现来不及
处理的问题(相对单片机),关键问题就是你的数据多,而口的波特率有限,已经限定死了一秒种
1K数据,软件是没法改变的.只有减少数据量.
 
delphi的字符串是可以保存任何字符的,包括 /0
d6下string与pchar也没什么区别了,可以直接互相转换
如果你是的 pchar保存数据缓冲区,那么可以直接用showmessage显示其内容
或者保存到文件,然后用ultraedit等二进制查看程序(
如果有很多非显示字符的话),检查你要传输的内容是否正确。
 
多谢大家。我的监控设备正是无线通讯设备,CRC不能去掉,而且客户要求看到当前几天的
数据,所有数据量也是不能减少。这么说是没办法了?哪位大虾有好的示例程序发一个给
我,我另外给他200分(我的分不太多,过几天再多加点吧)。多谢了!
 
还有人能帮我吗?
 
为什么不用多种办法尝试一下呢。
如果bps只能是9600,那只可能最多达到1k/s的速度,如果没有达到这个速度,建议尝试
spcom32:
http://www.8421.org/download.php?id=175
 
能具体说一下工作的方式和软件的要求吗?
实话说,你的现在的活了够麻烦的,我也做过无线通讯,中间涉及校验,纠错,数据封包,
解包等,对字符操作,特烦,如果数据传输过程出现错误,还得纠,纠不过,得重发,数据量小
还好,象你这样大的数据量,还要实时,难.
 
后退
顶部