串口通信数据接收不准确怎么办?

2019-07-17 10:02发布

我电脑通过串口与单片机实现连接,单片机不断地往外发AAAA D102 EFD2 0001 0001 0001 0001 D300 0000 0100 01D4 0000 D500 00BB ,(28个字节)用电脑的串口助手接收时很稳定的接受上述字符串,但是,用labview接收时会出现AAAA D102 EFD2 0001 0001 0001 0001 D300 0000 0100 01D4 0000 D500 00BB AAAA D102 EFD2 0001 0001 0001 0001 D300 0000 0100 01D4 0000 D500 00BB (56个字节)或者出现EFD2 0001 0001 0001 0001 D300 0000 0100 01D4 0000 D500 00BB AAAA D102 这种情况,我该这样解决




TIM截图20180418171150.png
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
wyq95361977
1楼-- · 2019-07-17 11:12
 精彩回答 2  元偷偷看……
xkzt1352310113
2楼-- · 2019-07-17 16:03
这个问题在我上次写一个功率计的驱动的时候遇到过 跟你一摸一样的情况 这样有时候可以读出来有时候就会多读出来很不稳定  后来如图 在判断后面加一个读取串口读出来的字符串是否有24个 你的应该是26个吧
有就输出字符串 我顺便加了个或判断  因为如果串口出现问题的话 会一直读不出来24个字符串  然后及给了一个5S的时间 时间到了还读不出来的话 就让程序过去 不然会一直在这个地方读  当然你可以用for循环代替更好 给个5次循环就差不多了

串口.PNG
海边的风雨
3楼-- · 2019-07-17 16:08
请问楼主解决了吗,是怎么回事啊
zhouyezuishuai
4楼-- · 2019-07-17 16:17
二楼正解,不过楼主你这个结构有点不合理  一般我们做仪器通讯,都是把打开资源放在初始化之中,并且把资源ID赋值给全局变量,后面的写入不会放在循环中,只有写入放在循环中处理,当数据符合我们预期的要求,比如长度,首字符,错误码为无错误的时候才停止循环输出读取的数据,关闭(释放)资源放在程序退出的时候   像你图中这个VI如果用作子VI就可能出现第一次能读取,后面就不行了,就是每次都关闭资源造成的
唐少华
5楼-- · 2019-07-17 18:20
初始化把终止符“0A”关闭了试试

一周热门 更多>