tnjk.net
当前位置:首页 >> 串口接收 不完整 >>

串口接收 不完整

串口的默认停止符是0A,你出现0A,它就会停止接收,所以需要在VISA Configure Serial Port(VISA配制串口)控件的启用终止符(T)端口上连一个值为False的常量

你试试改下SerialPort 的Handshake设置,应该是这个原因.之前我也遇到过,一个属性一个属性的改,才找出来是这个原因.

查找原因呗,硬件有没有问题,程序有没有问题,那得你自己查找,别人怎么如何解决,一句如何有什么用?

《 串口中怎样接收一个完整数据包的解析 》 这篇博文应该会对这个问题有帮助。 使用时间来判断一个完整的包 比较通用吧。

串口收数据,有时候一次本来就收不完整,你需要有个接受缓存,收到的数据全部放到缓存中,当收集完整了,才开始干你的事情,收不完整,我经常遇到到,都是这样解决的 for(k=0;k

原因:串口内部是用一个线程DataReceived触发事件,但它是不断触发的,界面收到通知的时候串口内部状态实际上可能已经发生变化。 解决:自己建立一个byte或string的队列,拼接拆分(这就要求必须有自定义的终止符)

有没有乱码?

串口数据接收不完整,需要继续等后面的数据,进行拼接。 拼接不成功的话,放弃全部数据,重新开始。、

你所说的多发几次就有反应的状况其实是你运气好,因为loop是一直循环的,所以里面的代码一遍遍一行行往下运行,比如你正好在运行Serial.Read()命令前传送了,那就可以进行判断。 所以,要先判断有没有数据传输过来,再进行判断。 另外,Serial.R...

没办法保证能够一次全部接收,只能自己缓存起来处理。比如,发送数据时候增加带有长度的数据头以及末尾的校验,用 select 对串口做非阻塞读取,读到数据后检查是否完整,不完整就接着读,直到获得完整数据再处理。

网站首页 | 网站地图
All rights reserved Powered by www.tnjk.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com