这段小程序是串口接收程序,串口接收到的数据MSComm.Input为组数
我用串口监听程序监听到的16进制的结果(MSComm.Input):IRP_MJ_READ Length: 0003, Data: 11 A3 05
以下程序就是要把这个组数转为字符显示出来,我得到的结果是:recTxt="11 00 3F"
我找不出以下程序有什么问题,请大家帮忙!!Public Sub Mscomm_OnComm() '接收数据触发OnComm()事件
Dim recLen As Integer
Dim recData as Byte
Dim recTxt as String
Select Case MSComm.CommEvent '在CommEvent中接收数据
Case comEvReceive
ReDim recData(MSComm.InBufferCount - 1)
recLen = MSComm.InBufferCount
recData = MSComm.Input
For i = 0 To recLen - 1
If Len((Hex$(recData(i)))) > 1 Then
temp = Hex$(recData(i))
Else
temp = "0" & Hex$(recData(i))
End If
recTxt = Trim(recTxt) & " " & temp
Next i
End Select
End Sub
我用串口监听程序监听到的16进制的结果(MSComm.Input):IRP_MJ_READ Length: 0003, Data: 11 A3 05
以下程序就是要把这个组数转为字符显示出来,我得到的结果是:recTxt="11 00 3F"
我找不出以下程序有什么问题,请大家帮忙!!Public Sub Mscomm_OnComm() '接收数据触发OnComm()事件
Dim recLen As Integer
Dim recData as Byte
Dim recTxt as String
Select Case MSComm.CommEvent '在CommEvent中接收数据
Case comEvReceive
ReDim recData(MSComm.InBufferCount - 1)
recLen = MSComm.InBufferCount
recData = MSComm.Input
For i = 0 To recLen - 1
If Len((Hex$(recData(i)))) > 1 Then
temp = Hex$(recData(i))
Else
temp = "0" & Hex$(recData(i))
End If
recTxt = Trim(recTxt) & " " & temp
Next i
End Select
End Sub
B、InputMode 要设成二进制方式
Dim recTxt As StringPrivate Sub Form_Load()
MSComm.Settings = "9600,N,8,1"
MSComm.RThreshold = 1
MSComm.InputMode = comInputModeBinary
MSComm.PortOpen = True
End SubPrivate Sub MsComm_OnComm()
Dim recLen As Integer
Dim recData() As Byte
Dim i As Integer
Select Case MSComm.CommEvent '在CommEvent中接收数据
Case comEvReceive
recLen = MSComm.InBufferCount
ReDim recData(recLen)
recData = MSComm.Input
For i = 0 To UBound(recData)
If Len((Hex(recData(i)))) = 1 Then
recTxt = recTxt & "0" & Hex(recData(i))
Else
recTxt = recTxt & Hex(recData(i))
End If
Next i
Text1 = recTxt
End Select
End Sub
我还不很理解inputMode为二进制和文本制有什么本质的区别,请为我解答一下,谢谢!