关于LabVIEW串口读取数据

数据一直对不上号啊怎么办?我用手机调试发给上位机都可以,,可是一到下位机发给上位机数据就会错位。是因为发得太快了吗?。。谁能给我贴个数据接收的图啊,用队列或什么,,,,只剩五个分了,,拜托了

        这个多半是因为你读取的字串有结尾符(例如有些通信协议以0x0D,即回车符,做结尾符)。假设有个结尾符,那么你读取接收缓冲区相应长度的字符串后,由于没有考虑结尾符,它就会留在缓冲区中,你下一组字符串的第一个字符就被移到下一行了(回车符同时可以换行),这样你每次读的都是上一次的第一个字符和本次的除了第一个字符剩下的字符。就会产生你说的现象。

        解决办法

    每次读完后加一个清除缓冲区动作

    假如你原来每次读取的是12个字符,而结尾符是一个字符,那么每次多读一个字符,即读取13个字符

    总之只要每次你读完后保证接收缓冲区是空的就可以了

追问

读13字节后清空一次?那下位机很快速的发过来也行的吗?而且那什么结尾符是自己加上去的?我的格式是十二字节

追答

读13个字符就不用清空缓冲区了。只要你读的长度和缓冲区长度一致,它会自动清空的。结尾符一般的通信协议都有,通常是自动加的,还有些协议会加校验位。比较保险的办法是直接检查缓冲区的长度,然后读取对应长度的字串

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答