回 帖 发 新 帖 刷新版面

主题:汽车衡串口数据采集的问题

这是一段采集汽车衡过磅数据的小程序,但采集得来的数据,不管哪个位遇到9,数据就不能采集,哪位高手指点一下。

******开始读取数据
flagxxx=.f.
DO WHILE !FLAGXXX
   zhongliang=0
   thisform.olecontrol1.rthreshold=10
   *****如果缓冲区没有足够的数据,延时等待后再来!
   IF thisform.olecontrol1.inbuffercount<10
      FOR I=1 TO 100
      NEXT
      LOOP
   ENDIF
   for i=1 to 100
      xx=thisform.olecontrol1.input
      flagxx=asc(xx)
      if flagxx=255
         xxx=thisform.olecontrol1.input
         flagxxx=asc(xxx)
         w1=asc(thisform.olecontrol1.input)
         IF W1=255
            FLAGXXX=.F.
            EXIT
         ENDIF
         w2=asc(thisform.olecontrol1.input)
         IF W2=255
            FLAGXXX=.F.
            EXIT
         ENDIF
         w3=asc(thisform.olecontrol1.input)
         IF W3=255
            FLAGXXX=.F.
            EXIT
         ENDIF
         w1=w1-6*int(w1/16)
         w2=w2-6*int(w2/16)
         w3=w3-6*int(w3/16)
         zhongliang=w1+w2*100+w3*10000
         flagxxx=.t.
      endif
   next
ENDDO

thisform.maobang1.value=zhongliang

回复列表 (共1个回复)

沙发

我是这样做的。
主程序里:
m_com,m_setting这两个变量是从sysinfo.dbf中取得!

om = CREATEOBJECT('mscommlib.mscomm.1')
om.CommPort = m_com &&com,这里是com2
om.Settings = m_setting &&'1200,n,8,1'&&com设置

自定义一个函数getdata.prg
om.Portopen = .t.
as = om.input 
out = VAL(SUBSTR(as,AT('+',as,1),6))/1000
RETURN out  
如果 要读数据只,只用
thisform.text.value = getdata()
就ok啦

我来回复

您尚未登录,请登录后再回复。点此登录或注册