串口高速数据采集的频率如何控制

2019-07-17 20:58发布

      请问大家做串口高速数据采集的时候一般怎么控制频率的,假设采样频率为500HZ,那么每间隔2ms就要采集一次,可是用等待或者等待下一个毫秒函数都会有误差,对于高速数据采集的时候好像不合适了,现在频率越做越高发现这个问题越来越突出,不知道遇到这样的问题,各位会如何保证采样频率的准确性。谢谢啦!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
hejin515
1楼-- · 2019-07-19 07:45
 精彩回答 2  元偷偷看……
anazel
2楼-- · 2019-07-19 13:12
hejin515 发表于 2016-5-26 17:37
波特率115200,一帧52字节,下位机频率之前是100HZ,现在已经200HZ,已经极限了。

你好,这是我的程序框图,麻烦您看一下问题在哪儿
Snap1.jpg
anazel
3楼-- · 2019-07-19 18:26
ywj65 发表于 2016-5-26 14:34
波特率  字节数  下位机的运行频率   232串口一般就是100--200MS的运用,要快就要考虑别的通讯方式,

你好,这么说我现在延时300ms也不是很慢吗?如果想高速传输数据的话跟电脑通信一般采用什么通信方法?
luson_liu
4楼-- · 2019-07-19 21:02
你的采样频率是500HZ了,即2ms采集一次数据,这个数据会暂时存储在串口的缓冲区中,一般串口的最大存储字节数为4096,一定要在字节数存储满之前,把数据捞走,否则会有数据丢失的情况。而你的捞取数据间隔为2ms,相当于采集的一次数据,不知道你这采集一次的数据字节数大小为多少?一般镭射数据都在8—16字节数,也就是说它采集一次,你捞取一次,这样缓冲区的字节永远不会溢出(最好用属性节点:端口字节数,端口有多少,我就一次捞多少)。如果一次采集的数据的字节数就大于4096,那么就要再降低捞取间隔时间(最低为1ms),如果还不满足,就请不要用串口采集了,请考虑用模拟量采集卡来收集数据。
hejin515
5楼-- · 2019-07-19 22:26
luson_liu 发表于 2016-5-30 11:55
你的采样频率是500HZ了,即2ms采集一次数据,这个数据会暂时存储在串口的缓冲区中,一般串口的最大存储字节数为4096,一定要在字节数存储满之前,把数据捞走,否则会有数据丢失的情况。而你的捞取数据间隔为2ms,相当于采集的一次数据,不知道你这采集一次的数据字节数大小为多少?一般镭射数据都在8—16字节数,也就是说它 ...

你好,我的一次是54字节,频率目前是200HZ。用串口应该能够搞定,问题在于我的思路可能有问题。我是每5ms读取一次串口,是按串口大小属性节点读取全部字节的,然后将读取的数据进行处理计算显示写入保存等操作。关键是5ms的读取频率我是用等待下一毫秒控制的,你知道的,这个肯定会有误差。但是我一帧54字节,按波特率115200来算发送一次也需要4.785ms,这个和5ms太接近了,所以如果读取的时间不是刚刚好5ms ,很容易就会出现在数据还没发送完就开始读取了,就会不能读到完整的数据,这样频率就达不到。所以想知道大家是如何精确控制高频率的。
luson_liu
6楼-- · 2019-07-20 02:14
 精彩回答 2  元偷偷看……

一周热门 更多>