打印

求助,vb显示单片机采样,高频率丢包问题咋解决啊

[复制链接]
2405|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
清风一林|  楼主 | 2012-11-4 18:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用24位AD踩电压变化(细微的),单片机采样无压力,六个字节一发,vb也是判断六个字节的才显示,显示波形,但是由于变化细微必须频繁采,当频率高了时丢包严重,采到数据个数已经不是六个一个包了。在网上查到,vb缓存区会把数据堆栈积累。我的显示一点效果也没有,整了周六周日两天了。实在没招了,只能求大家帮帮了

相关帖子

沙发
tdh03z| | 2012-11-4 19:28 | 只看该作者
发送到PC机上的频率多少,对于VB6来说,如果编程水平不是很高的话,最好控制在10次/秒,否则数据接收容易丢。

如果AD采样频率为100次,那么就没10次采样后打一个包,发送到PC上,PC接收到后,还原成10次数据,这样可以避免串口速率太高导致数据丢失问题。至于一个包的大小自己按照串口波特率控制好即可。

当然对于高手,用VB也可以做到很高的采样速率,可我水平有限,只能通过这种变通的方式保证不丢数据

使用特权

评论回复
板凳
dqyubsh| | 2012-11-4 19:40 | 只看该作者
考虑用单独的接收线程?我瞎说的,没试过。

使用特权

评论回复
地板
清风一林|  楼主 | 2012-11-4 20:14 | 只看该作者
2# tdh03z 十次一打包,还是不行啊,采样太快,vb缓存了堆到一起没法辨别,而且当到十次是发送也占用时间,影响采样啊

使用特权

评论回复
5
dqyubsh| | 2012-11-5 06:36 | 只看该作者
一般速度快的采集和传输,在固件那边都是采用环形缓冲区存储数据,通讯过程也是用大块缓冲区实现的,发送过程是发送缓冲区的数据,而不是采到了就发。这个思路没问题。

主机这边用线程或者定时器,一次取来任意长度的数据,然后再拼接起来,分析处理。

如果这个方法还是有困难,那就换USB/以太网通讯,解决通讯线路的瓶颈。

还有一个建议,VB仅仅是个玩具,做通讯首选VC。当然,这不一定能立竿见影,还是要依靠你的硬件能力。

使用特权

评论回复
6
xuxikfg| | 2012-11-5 08:10 | 只看该作者
为什么不用C呢

使用特权

评论回复
7
bald| | 2012-11-5 11:52 | 只看该作者
问题不在传输而在显示进程。
把显示进程和接收进程分开。
接收缓冲区要设置的足够大。
另开辟一个显示缓冲区。也要求足够大。
接收进程处理完后送显示缓冲区。
显示的刷新率无需很高
难点是两个进程对显示缓冲区指针的调整和判断。

使用特权

评论回复
8
ljxh401| | 2012-11-7 16:46 | 只看该作者
显示过程 太浪费时间了
我以前读书的时候 也是以为 vb接收 会丢包
起始 如果你不做显示 只是记录 正确接收的包的数目,你会发现没有怎么丢包的
绘图过程 占用时间多 接收的溢出 所以挂了
VB好像不能多线程的吧!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:坚持

1

主题

68

帖子

1

粉丝