我用vb的那个串口控件向串口发数据
例如发"A5" 十六进制数,一个字节
用串口助手监视的结果是A和5的ASCII码 最后在网上找了一段程序
处理以后再发送 用串口助手监视的结果又变成了0A 05 
请问错在哪里呀 急 急 急private sub SendData() 
   dim rdata as string 
   rdata=Change_S("A5")
   Comm.OutPut=rdata   '串口控件发送
end sub 
Private Function Change_S(strs As String) As String    Dim i As Integer, t As Integer
    Dim s As String, m As String, temp As String, lishi As String       m = strs    For i = 1 To Len(m)
       lishi = Mid(m, i, 1)
       t = Asc(Mid(m, i, 1))
       If t >= 48 And t <= 57 Then
          s = Chr(t - 48)
       ElseIf t >= 65 And t <= 70 Then
          s = Chr(t - 55)
       ElseIf t >= 97 And t <= 102 Then
          s = Chr(t - 87)
       End If
       temp = temp & s
    Next i
    Change_S = temp
End Function

解决方案 »

  1.   

    Private Sub SendData()
        Dim rdata() As Byte
        rdata = Change_S("A5B6C7D8")
        Comm.OutPut = rdata '串口控件发送
    End SubPrivate Function Change_S(strs As String) As Variant
        Dim i As Integer, Result() As Byte
        ReDim Result(Len(strs) \ 2 - 1)
        For i = 0 To Len(strs) \ 2 - 1
           Result(i) = Val("&H" & Mid(strs, i * 2 + 1, 2))
        Next i
        Change_S = Result
    End Function
      

  2.   

    如果这样发的话 A5B6C7D8 发出 用串口助手监视的结果是3F 3F
      

  3.   

    看仔细这一句: Dim rdata() As Byte
    和你原来的不一样的
      

  4.   

    可是Comm.OutPut 只接受string类型的值呀。
      

  5.   

    可是Comm.OutPut 只接受string类型的值呀。是谁告诉你的?
      

  6.   

    http://community.csdn.net/Expert/topic/5365/5365521.xml?temp=.9950983
    参考上述网址本人的答复。
      

  7.   

    谢谢 jadeluo(秀峰)  结帐!