求助!!LABVIEW读取串口返回命令,字符丢失

2019-07-17 13:53发布

各位大神你们好,采用labview串口与下位机MCU通信,每60sMCU回复一个CHARGE_OVER#的字符串,LABVIEW串口接受该字符串,方法是,当字节数达到7个以上时,开始读取串口缓存,但是结果总是丢后面的字符,读到的都是CHARGE_O或是CHARGE_OVE,具体代码见截图,望大神指点,谢谢。
程序框图.png
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
diertimeidaan
1楼-- · 2019-07-18 13:44
1、首先确认一下发送过来的数据是否完成的存入了缓存,可以将后面的清空缓存函数去掉看一下是否所有数据进入了缓存。
2、while循环使用这么高的延时并不是一个明智的选择。
3、如果全部数据已经进入了缓存,可采用判断终止符的方式来结束read函数。

评分

参与人数 1积分 +5 收起 理由 ElecFans王岑 + 5

查看全部评分

呼呼721
2楼-- · 2019-07-18 16:38
 精彩回答 2  元偷偷看……
爱咋咋地hgwd
3楼-- · 2019-07-18 19:48
这种写法会导致只要传过来字符就要去读,但是可能会发生刚一有字符进来可能还没完全接收就去读了。如果传过来的字符是固定的 那么可不可以将while循环的终止条件那个大于1改为大于12(就是所有字符数),保证全部字节出来了再去读

评分

参与人数 1积分 +5 收起 理由 ElecFans王岑 + 5

查看全部评分

diertimeidaan
4楼-- · 2019-07-18 20:34
终止符可自行编辑代码去校验,当缓存区有数据时,就读取,直至缓存中所有的数据都被读出后才停止读取,然后再拿一次所有的数据进行校验。
爱咋咋地hgwd
5楼-- · 2019-07-18 20:56
或者在读取的地方加一个循环 不停地读直到读到#为止 并且限定一个时间比如三分钟还没读到#那就退出循环显示读取失败
ooloft
6楼-- · 2019-07-19 01:29
两个问题:
1.执行读取动作的条件有问题,你写的是当port口字节数大于1就开始读,你在读的过程这个值会减小,可能小于或等于1.
2.读取到的换成区字符串要用连接字符串指令,因为读到的缓冲区字符可能不是连续的,所以要用连接字符串,要转一下。

评分

参与人数 1积分 +5 收起 理由 ElecFans王岑 + 5

查看全部评分

一周热门 更多>