发送端发的是16进制的以下数据FC 2C 01 0D 0A 0A 00 0B 0D 0B 0A 00 16 0D
 0C 0A 00 21 0D 1E 0A 00 2C 0D 14 0A 00 37
 0D 15 0A 00 00 1A 0A 0D 28 0A 07 FA接受端的代码如下:
Private Sub Winsk1_DataArrival(index As Integer, ByVal bytesTotal As Long)
Dim Receive_Byte() As Byte
Dim Receive_Temp As VariantDim Temp_En As String
If Y_ConnOK(index) = True Then
Winsk1(index).GetData MidData, vbString
Receive_Temp = MidData
Receive_Byte = Receive_Temp
For i = 0 To Len(Receive_Temp)
If Receive_Byte(i) < 16 Then
        Temp_En = Temp_En & "0" & Hex(Receive_Byte(i))
    Else
        Temp_En = Temp_En & Hex(Receive_Byte(i))
End If
NextInfo_In = Info_In & Temp_En
     Temp_En = ""
Text7 = Info_In
Info_In = ""但我解出来是:
3F0001000D000A000A0000000B000D000B000A
00000016000D000C000A00000021000D001E000A00
哪里出的问题?

解决方案 »

  1.   

    Winsk1(index).GetData   MidData,   vbString ---->Winsk1(index).GetData    Receive_Byte
      

  2.   

    楼上说的没错,把STRING改成BYTE之后可以解码了,但用了2天之后出了问题,
    'FC2C010D0A0A000B0D0B0A00160D0C0A00210D1E0A002C0D140A00370D150A00001A0A0D280A07FA
    解出来变成了'FCC00DA000B00BA016D00A020DE000C014A037D10A001AA028A0
    中间少了一部分,也就是每2个中间少了一个,头都晕了想不通?我的原代码如下
    Dim Receive_Byte() As Byte
    Dim Receive_Temp As Variant
    Dim Temp_En As String
    Winsk1(index).GetData Receive_Byte
    MidData = Receive_Byte
    Receive_Temp = MidData
    For i = 0 To Len(Receive_Temp) * 2 - 1
    If Receive_Byte(i) < 16 Then
            Temp_En = Temp_En & "0" & Hex(Receive_Byte(i))
        Else
            Temp_En = Temp_En & Hex(Receive_Byte(i))
    End If
    Next
    Text7 = Temp_En
    Exit Sub