最近写了套程序 通过串口读取 电子秤的数据. 用是能用了,但有时读出来的数会偏了一位的,
电子秤的 格式是=号后面接8位数字,不停重复,也就是
=100.0010=100.0210=110.0210=100.0210这种格式.
一开始时 我是这样写的
MSComm1.Settings = "600,N,8,1"
MSComm1.InputLen = 0 
MSComm1.RThreshold = 9然后 在ONCOMM 那里取直接读这9个字符 转成数字处理就行了
也就是读取出来 变成 "=100.0010" ,再取后面8位数字处理
一开始时是能正常运行的.但过一段时间 就有可能变成 
"0=100.001" (也就是偏移了一位)
这种情况,时间不定,有时可能用一天都没事,有时几分钟就出现这种情况. 请问是那里的设置出了问题?  我现在的解决方案是一次读18个字节,然后从"=号" 开始取后面的8个数字.程序用是能用了,但我想了解并解决上面提及的这个字符偏一位的问题.谢谢

解决方案 »

  1.   

    http://download.csdn.net/detail/veron_04/4037248
      

  2.   

    通讯设定问题、硬件故障、发送端程序错误……存在即合理。
    你的解决方案其实很不错,在这种场景中丢掉一半数据没有任何问题。
    下面的方案适用于不能丢数据的场景:
    1)第一次发现 "=" 不是第一个字符时,将 RThreshold 临时增加,增加的长度为 "=" 前的字符个数;
    2)接下来收到的数据和上一条数据组成完整的两个数据,马上将 RThreshold 恢复正常长度。