我收到的数据为  5  3  A  0 7C  0 75  0 76  0 77  0 79  86  4  而我只要0 7C  0 75  0 76  0 77  0 79这几个数据
例如:0 7c 先合并成一个数07c 然后转换成十进制温度值为 12.4°C Private Sub MSComm1_OnComm()
Dim i As Long
Dim inData() As ByteMSComm1.InputMode = comInputModeBinary
If MSComm1.InBufferCount > 0 Then
inData = MSComm1.Input
For i = 0 To UBound(inData)
*************** 此处转化不会了,该怎么写,请各位帮帮忙。    
Next i
End If
End Sub

解决方案 »

  1.   

    给你个例子,参考一下:Option Explicit
    '建议你改成这个样子
    Dim ReadByte(0 To 99) As Byte       '接收字节数组
    Private Sub Form_Load()
        With MSComm1
            .CommPort = 1
            .InputLen = 1
            .Settings = "9600,N,8,1"
            .RThreshold = 1
            .InputMode = comInputModeBinary
        End With
    End SubPrivate Sub MSComm1_OnComm()
        Dim intP As Integer
        Dim varP As Variant
        MSComm1.RThreshold = 0 '屏蔽OnComm事件的发生
        intP = 0
        Do
            varP = MSComm1.Input
            If Not IsNull(varP) Then ReadByte(intP) = varP(0)
        Loop Until MSComm1.InBufferCount = 0
        '完成通信,处理数据
        '取出ReadByte的第3、4个元素即可(起始是第0个)
        
    End Sub
      

  2.   

    先谢谢你。 
    If Not IsNull(varP) Then ReadByte(intP) = varP(0)
        Loop Until MSComm1.InBufferCount = 0
     这段代码是什么意思,我有点看不懂,能解释一下吗? 就是我上面说得,解析成我要的那种格式后,每个温度值要放入一个textbox中。。  就是这个地方,我不会了。不知道该怎么解析,我解析过,但是出来的数据都和以前的不对应了
      

  3.   

    嗯对的,现在还没接电阻,如果接上得话测温范围比这个高。。一般都是  2E 7A 这类型的数据,比如2E 7A 转换成十进制11898 万位1代表正 0代表负 就是正189.8
      

  4.   

    你的数据到底是:
    53 A0 7C....
    还是:
    5 3 A 0 7C 0 75  
    也就是说5到底是05 还是53?
      

  5.   

    5      3       A    0  7c   0  75      不是53 。。5是05  3是03  A 是 A    
      

  6.   

    前辈,你还没明白我的意思呀。。嘿嘿 通信没问题呀,收到的数据也是对的。跟下位机要求的格式一样。
    比如说我上面代码中* 号处的 Text1.Text = Text1.Text & Hex(inData(i)) & " " 出来的数据就是
     5 3 A 0 7C 0 75 0 76 0 77 0 79 86 4   但是不能把这个数据放入文本框叫用户看吧?人家看不懂呀? 咱们要解析成我说的那种格式 比如 12.4°C  用户才能看懂啊。 我现在就是这里不会,我不知道该如何把这一串数据解析成我要的格式。。
      

  7.   

    前辈,通信已经成功了,格式也对的。比如上面我代码中*号处 我的Text1.Text = Text1.Text & Hex(inData(i)) & " "  出来的数据就是5 3 A 0 7C 0 75 0 76 0 77 0 79 86 4   但是咱不能把这串数据放入文本框给用户看吧,咱们要解析成我说得那种格式,用户才可以看懂啊。我就是这里不会啦,解析不出来 不知道怎么做才能解析成我说的那种格式。。比如0 7c 解析成 12.4
      

  8.   

    我狂晕
    不就是怎么讲00 7C转换?
    就拿7C来说吧,Val("&H" & "7C")
    转换出来是124 你自己再变换一下就OK了
      

  9.   

    得先将接收的字节流数据转换成16进制字符串,然后按协议用Mid函数取数据进行数据处理.
    Private Sub MSComm1_OnComm() '接收数据
        Dim strBuff As String
        Select Case MSComm1.CommEvent
            Case 2
                MSComm1.InputLen = 0
                strBuff = MSComm1.Input
                BytReceived() = strBuff
                jieshou
                lenInput = Len(strData)
                Text2 = lenInput \ 2
                '数据处理代码
        End Select
    End SubPublic Function jieshou() '接收数据处理为16进制
        Dim i As Integer
        For i = 0 To UBound(BytReceived)
            If Len(Hex(BytReceived(i))) = 1 Then
                strData = strData & "0" & Hex(BytReceived(i))
            Else
                strData = strData & Hex(BytReceived(i))
            End If
        Next
        txtReceive = strData
    End Function详细可参阅:http://www.vbgood.com/thread-83700-1-1.html
      

  10.   

    麻烦你了。估计是我程序的问题吧,结贴了。谢谢你。 如果你有空,可以加我QQ吗,指导我一下。我的QQ360115572