在使用串口服务器时,网络不好,数据经常丢失,怎么办?

在使用串口服务器时,网络不好,数据经常丢失,怎么办?,第1张

不知你是用在什么环境下,目前国内做串口服务器的很多,技术相对应该也都很成熟吧,
那就很有可能是 串口服务器不够稳定吧
可以试下 九汉科技的 H-301
也许能帮你解决这个问题

串口通信数据丢失很大一部分原因是:mscomm的inputlen设置设置有问题;
解决方案:
mscomm的inputlen设置为0吧(读取整个缓冲区),读完一次,清空一次缓冲区试试;
参考如下:
窗体初始化事件中建议将mscomm的这几个属性做如下设置:
mscomminbuffersize=8 '接收缓冲区大小
mscommrthreshold=4 '促发oncomm事件的字符数
mscomminputlen=0 '默认读取整个缓冲区
mscomminputmode=cominputmodetext '以文本方式接收
mscomminbuffercount=0 '清空缓冲区
oncomm事件中,建议处理完接收数据后用mscomminbuffercount=0清空缓冲区

如果我没猜错的话,你应该是读取了前面一部分,后面没了。比如发送了100字节,收到60字节之类的。
如果是这个现象,无论你使用了回调,或者手动读取串口,都是读取了一下,就拿来用了。要知道,所谓串口你可以理解就是一个缓冲区,但是这个缓冲区的数据不是一次发过来的,需要你记录一个要接收的字节数,收满了之后才认为接收成功。
可以在协议上做一些手段,比如包头之后,写上2个字节的数据长度,先读取包头,再读取数据长度N,根据N再取N个字节的数据。。。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/13356724.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-21
下一篇 2023-07-21

发表评论

登录后才能评论

评论列表(0条)

保存