请教关于VISA串口读取数据时,出现严重延时不同步的问题(更换到问答版块)

2019-07-17 15:07发布

经坛友友情提示,又把帖子转到问答板块。再次询问一次,积分不多请见谅:

大家好,labview初学者编程遇到个棘手的问题,想请教下各位大神小伙伴们。

大致就是:

我需要读取加速度传感器的数据,用串口调试助手可以测得完整的实时数据(一秒钟大概读取112次)。而使用labview的Visa读取,(因为加速度传感器可以写入宏指令,可以实时输出加速度数值,所以在labview中我只需要循环读取就行,不需要循环写入),我一秒钟只能读取少量数据,而且随着运行时间增加,读取速度越来越慢(前一分钟还能保持一秒85左右,持续测试了5分钟,平均每秒掉到只能输出25次了)。且明显看出,数据不同步。

不知道是否用VISA都会出现这个问题吗?我想过Labview程序运行是要时间,但这差别有点太大了,而且运行时间增加速度越来越慢,这实在不能接受。还有0D终止符问题,下面是一部分响应代码,确实有可能存在0D,但这应该不是主要矛盾点吧?大家觉得呢?
下面是部分程序截图,很希望大家能帮我查看下程序,万分感谢
程序框图完整版.jpg
响应数据.PNG



程序框图完整版.jpg
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
2条回答
kilong88
2019-07-17 18:24
听说福到了 发表于 2017-11-17 16:40
你有一个反馈节点,运行时间越长,数据会越来越多,for循环的占用时间就会越来越长,整个while循环就会等待for循环结束才会进行下一次循环,也就是下个数据的读取时间就会越来越长,就会出现丢数据的情况。还有就是循环里面创建数组,数组越来越大,每次都需要分配内存,会占用大量内存。 ...

嗯嗯,你说的很有道理。我刚刚又重新试了下,把终止符关闭,发现问题好了非常多,也能做到数据实时输出了,延时肉眼观察已经基本可以忽略,后续会再进一步佐证。没想到终止符影响会这么大!!

还是很感谢你的解答。阿里可多~~~

一周热门 更多>