使用的电子秤以连续方式按MCS-51下的方式1输出RS-232C信号,数据为ASCII码,共有16个帧,包括1个起始字符帧(02),2个状态椟志帧,1个空格字符,6个显示数据帧和6个皮重数据帧,每一个帧由10位组成,每一位是起始位“0”,第十位是停止位“1”,中间8个数据位(从低到高)的格式如下:

起始位       D0   D1   D2   D3    D4  D5   D6   D7    停止位通过超级终端,设置通信端口参数 1200、偶校验、7个数据位、1个停止位
可以得到一个重量比如在电子秤上显示为1.938kg的东西,在终端上显示为-0 001938000000请问大哥,如何将其转换在form1.text1.text显示"1.938"
还有如果我定义一个btBuffer接收的话,我跟踪调试得到的数组信息为
btBuffer(0)=45
btBuffer(1)=48
btBuffer(2)=32
btBuffer(3)=48
btBuffer(4)=48
btBuffer(5)=49
btBuffer(6)=57
btBuffer(7)=51
btBuffer(8)=56
btBuffer(9)=48
btBuffer(10)=48
btBuffer(11)=48
btBuffer(12)=48
btBuffer(13)=48
btBuffer(14)=48
btBuffer(15)=13
btBuffer(16)=2
btBuffer(17)=45
btBuffer(18)=48
.
.
.
btBuffer(32)=13
btBuffer(33)=2
.
.
.
.
请问如何每放一个物体,在form1.text1.text中显示正确的kg数字
谢谢!.

解决方案 »

  1.   

    是不是主要是转换问题,接收字节时候是否需要一个一个的接收呢?判断到某一个字节数就停止mscomm事件,请问具体代码如何写呢?郁闷啊
      

  2.   

    根据你的数据:应以13个字节为一组,而且是以02为起始,13为结束标记进行处理。Private Sub Form_Load()
      MSComm1.Settings = "19200,N,8,1"
      MSComm1.RThreshold = 1
      MSComm1.SThreshold = 0
      MSComm1.InputMode = comInputModeBinary
      MSComm1.InputLen = 1
      MSComm1.PortOpen = True
    End SubPrivate Sub MSComm1_OnComm()
      Dim Data(13) As Byte
      Dim RecSs As Variant
      Dim I As Integer
      
      With MSComm1
        Select Case .CommEvent
        Case comEvReceive
          RecSs = .Input
          If (RecSs(0) = 2) Then
            For I = 1 To 12
              While MSComm1.InBufferCount = 0   
                DoEvents
              Wend
              
              RecSs = .Input
              Data(I) = RecSs(0)
            Next I        '具体的取值位置,你要调好
            Text1.Txt = Chr(Data(4)) & Chr(Data(5)) & Chr(Data(6)) & "." & _   
                        Chr(Data(7)) & Chr(Data(8)) & Chr(Data(9))
          End If    Case...........   '其它的处理    End Select
      End With
    End Sub