那就很有可能是 串口服务器不够稳定吧
可以试下 九汉科技的 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个字节的数据。。。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)