我用VB串口接收从DSP发送过来的实时数据,每2ms一个字节,前面6000个左右的字节都能正确接收
我用VB串口接收从DSP发送过来的实时数据,每2ms一个字节,现在的问题是,前面6000个左右的字节都能正确接收,但是接着收到的总是错误的一组数据,不知道为什么,有谁遇到...
我用VB串口接收从DSP发送过来的实时数据,每2ms一个字节,现在的问题是,前面6000个左右的字节都能正确接收,但是接着收到的总是错误的一组数据,不知道为什么,有谁遇到过这种问题吗? 求教
展开
展开全部
每0.2mS就收一个字节,这要求你的程序要有很高的实时性。VB 不是最好的工具,C甚至是汇编更为合适。
你的程序性能有问题,运行速度太慢,
如果用VB:
1. 你要用中,高级的编程方法来编, 你的数据的快速和连续性,要求你的程序要有很高速度处理数据。
2 你的问题是. 当你运行一段时间后,你必须要在0.2秒内连续的一端要完成接收,另一端要处理数据,而且缓存也大体满了。如果你的程序性能达不到0.2秒完成所有的操作,那你的缓存就会迟早溢出。问题就发生啦。
3 为了确认就是上述问题,你把DSP改为发10秒左右,停发2 至3秒,再发10秒:如果这样你的程序能长期运行,那就是上述问题。
你的程序性能有问题,运行速度太慢,
如果用VB:
1. 你要用中,高级的编程方法来编, 你的数据的快速和连续性,要求你的程序要有很高速度处理数据。
2 你的问题是. 当你运行一段时间后,你必须要在0.2秒内连续的一端要完成接收,另一端要处理数据,而且缓存也大体满了。如果你的程序性能达不到0.2秒完成所有的操作,那你的缓存就会迟早溢出。问题就发生啦。
3 为了确认就是上述问题,你把DSP改为发10秒左右,停发2 至3秒,再发10秒:如果这样你的程序能长期运行,那就是上述问题。
展开全部
首先确认这个现象是周期性出现的,即连续跑一段时间都是每隔6000个左右出现一次。如果是,则很有可能是程序中存在bag,排除方法参考:先粗略估算一下错误出现的间隔时间,然后查找程序中执行时间与之对等的部分。如果错误不是周期性的可能的情况有:1、通讯速率较快造成错误,适当的加点延时;2、个别数据类型不匹配,如上传整形却按照浮点型接收;3、通讯地址与设计的不匹配等等。如果通讯量较大建议先固定重复读少量地址内容,排除通讯是否有问题。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果是周期性出现的,就按照Cannonfish的方法解决,他说的已经很详细了,如果不是周期性的出现,很有可能是你开辟的缓存区不够大,导致数据溢出被丢弃,也有可能是你的通信节拍没有对上,即VB端波特率和DSP端的波特率设置的不对等。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
主要是缓存问题,数据多了会卡,数据保存到文件或数据判断后丢弃,就是不要占用太大内存。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询