这个程序是用字符接的数据,我要用二进字去接受,然后把二进字转换成字符行,应该如何去做。
 Private Sub Form_Load()
            MSComm1.CommPort = 1
            MSComm1.Settings = "9600,n,8,1"
            MSComm1.RTSEnable = 1
            MSComm1.RThreshold = 1
            MSComm1.InputMode = 1   ’二进字接收
            MSComm1.InputLen = 1
            MSComm1.InBufferSize = 4096
            MSComm1.PortOpen = True
End Sub
Private Sub MSComm1_OnComm()
    Dim strfile   As String
    Dim iLoop     As Integer
    Dim sChar     As String
    Dim aa        As String
    Dim temp      As Variant
    Dim tembyte() As Byte
    Dim k         As Integer
Select Case MSComm1.CommEvent
    Case comEvReceive
        strfile = MSComm1.Input
                                                                                                 
        For iLoop = 1 To Len(strfile)
            sChar = Mid(strfile, iLoop, 1)
            If sChar = "C" Or sChar = Chr(13) Or sChar = "%" Then
                  aa = buffer
                  Call pp(aa)
                  buffer = vbNullString
            End If
        Next iLoop
     
        Text1.Text = Text1.Text & sChar
        l = Len(buffer)
    End Select
End Sub

解决方案 »

  1.   

    StrConv 函数
          返回按指定类型转换的 Variant (String)。语法StrConv(string, conversion, LCID)StrConv 函数的语法有下面的命名参数:部分 说明 
    string 必要参数。要转换的字符串表达式。 
    conversion 必要参数。Integer。其值的和决定转换的类型。 
    LCID 可选的。如果与系统LocaleID不同,则为LocaleID(系统LocaleID为缺省值。) 
    设置值conversion 参数的设置值为:常数 值 说明 
    vbUpperCase 1 将字符串文字转成大写。 
    vbLowerCase 2 将字符串文字转成小写。 
    vbProperCase 3 将字符串中每个字的开头字母转成大写。 
    vbWide* 4* 将字符串中单字节字符转成双字节字符。 
    vbNarrow* 8* 将字符串中双字节字符转成单字节字符。 
    vbKatakana** 16** 将字符串中平假名字符转成片假名字符。 vbHiragana** 32** 将字符串中片假名字符转成平假名字符。 
    vbUnicode 64 根据系统的缺省码页将字符串转成 Unicode。 
    vbFromUnicode 128 将字符串由 Unicode 转成系统的缺省码页。 *应用到远东国别。**仅应用到日本。注意 这些常数是由 VBA 指定的。可以在程序中使用它们来替换真正的值。其中大部分是可以组合的,例如 vbUpperCase + vbWide,互斥的常数不能组合,例如 vbUnicode + vbFromUnicode。当在不适用的国别使用常数 vbWide、vbNarrow、vbKatakana,和 vbHiragana 时,就会导致运行时错误。下面是一些一般情况下的有效分界符:Null (Chr$(0)),水平制表符 (Chr$(9)),换行 (Chr$(10)),垂直制表符 (Chr$(11)),换页 (Chr$(12)) ,回车 (Chr$(13)),空白 (SBCS) (Chr$(32))。在 DBCS中,空白的实际值会随国家/地区而不同。说明在把 ANSI 格式的 Byte 数组转换为字符串时,您应该使用 StrConv 函数。当您转换 Unicode 格式的这种数组时,使用赋值语句。
      

  2.   

    Private Sub MSComm1_OnComm()
        Dim bBuffer() As Byte
        Dim iLoop     As Integer
        Dim bChar     As Byte
        Dim aa        As String
        Select Case MSComm1.CommEvent
        Case comEvReceive
            bBuffer = MSComm1.Input
            For iLoop = LBound(bBuffer) To UBound(bBuffer)
                bChar = bBuffer(iLoop)
                If bChar = ASC("C") Or bChar = 13 Or bChar = ASC("%") Then
                      aa = buffer
                      Call pp(aa)
                      buffer = vbNullString
                End If
            Next iLoop
         
            buffer = buffer & chr(bChar)    '!!!!!
            l = Len(buffer)
        End Select
    End Sub注: 以上代码不能用于含有中文字符的内容的发送,否则标记有!!!!!的行会出现运行时错误
      

  3.   

    '二进制字节数组到字符串Private Sub Command1_Click()Dim byt(0 To 4) As ByteDim temp(0 To 4) As Byte
    Dim tempStr As String
    byt(0) = &HD6
    byt(1) = &HD0
    byt(2) = &HB9
    byt(3) = &HFA
    byt(4) = &H41tempStr = StrConv(byt, vbUnicode)Debug.Print tempStrEnd Sub
      

  4.   

    Private Sub Form_Load()
                MSComm1.CommPort = 1
                MSComm1.Settings = "9600,n,8,1"
                MSComm1.RTSEnable = 1
                MSComm1.RThreshold = 1
                MSComm1.InputMode = 1   ’二进字接收
                MSComm1.InputLen = 1
                MSComm1.InBufferSize = 4096
                MSComm1.PortOpen = True
    End Sub
    Private Sub MSComm1_OnComm()
        Dim strfile   As  string
        Dim iLoop     As Integer
        Dim sChar     As String
        Dim aa        As String
        Dim temp      As Variant
        Dim tembyte() As Byte
        Dim k         As Integer
    Select Case MSComm1.CommEvent
        Case comEvReceive
             tembyte= MSComm1.Input  ' tembyte应该为数组
         strfile = StrConv(tembyte, vbUnicode)                                                                                 
            For iLoop = 1 To Len(strfile)
                sChar = Mid(strfile, iLoop, 1)
                If sChar = "C" Or sChar = Chr(13) Or sChar = "%" Then
                      aa = buffer
                      Call pp(aa)
                      buffer = vbNullString
                End If
            Next iLoop
         
            Text1.Text = Text1.Text & sChar
            l = Len(buffer)
        End Select
    End Sub
    rivate Sub Command1_Click()
    Dim byt(0 To 4) As ByteDim temp(0 To 4) As Byte
    Dim tempStr As String
    byt(0) = 65
    byt(1) = 66
    byt(2) = 67
    byt(3) = 68
    byt(4) = 69
    'byt = "ABCDE"   ASCII
    tempStr = StrConv(byt, vbUnicode)Debug.Print tempStr 
    End Sub