串口通信中数据的丢失

2019-07-17 15:46发布

利用串口通信的过程中,本应返回的字节数是37,但在实际的运行过程中会出现返回的字节数小于37的情况,这是怎么回事呢?我看有人说在VISA读取之前加上时间延迟会降低出错的概率,但是能不能解决这个问题呢
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
zd870905
1楼-- · 2019-07-17 17:20
 精彩回答 2  元偷偷看……
啦啦啦zzu
2楼-- · 2019-07-17 21:57
zd870905 发表于 2017-9-26 20:47
说的没错。怎么读取要看具体情况。有的时候,每次返回都是固定长度,这时可以直接读取这个长度,如果系统没读够这个长度就会继续等待缓冲区数据直到超时(设置合理的超时时间)。有的时候长度不确定,但是存在终止符,可以设定终止符,这样读取到终止符就自动结束了。 ...

也就是说可以设置缓冲区大小,通过设定超时时间和缓冲区大小来实现读取字节的长度?
啦啦啦zzu
3楼-- · 2019-07-17 22:13
就是VISA写入的字节数与返回的字节数不一样导致数据的丢失,这是怎么回事呢
老蜗牛
4楼-- · 2019-07-17 23:23
用队列,先读到帧头,再按固定字节读取。
啦啦啦zzu
5楼-- · 2019-07-18 02:21
老蜗牛 发表于 2017-9-27 16:51
用队列,先读到帧头,再按固定字节读取。

已经解决了,是终止符的问题。多谢

一周热门 更多>