vb 串口通讯 接收问题

来源:百度知道 编辑:UC知道 时间:2024/05/10 13:04:14
Private Sub MSComm1_OnComm()
Dim indata As String
Dim arr() As Byte
Dim j As String
Select Case MSComm1.CommEvent
Case comEvReceive
MSComm1.InputLen = 0
indata = MSComm1.Input
arr() = indata
For i = 0 To UBound(arr)
If Len(Hex(arr(i))) = 1 Then
indata = indata & " " & "0" & Hex(arr(i))
Else
indata = indata & " " & Hex(arr(i))
End If
Next
Text2 = Text2 & indata
End Select
End Sub
以上程序有些问题,接收到数据在text里前都会加上????是什么意思
如'????? aa 0a 0c 0b 0e ee
还有当接收到的字节是单数时,全部都是????? ? ? ?又是怎么回事?

试试下列代码:
Option Explicit
Dim inData As String
Dim arr() As Byte

Private Sub Form_Load()
MSComm1.Settings = "9600,n,8,1"
MSComm1.RThreshold = 1
MSComm1.InputMode = comInputModeBinary '二进制接收
MSComm1.PortOpen = True
End Sub

Private Sub MsComm1_OnComm()
Dim intInputLen As Integer
Dim i As Integer
Select Case MSComm1.CommEvent
Case comEvReceive
'此处添加处理接收的代码
intInputLen = MSComm1.InBufferCount
ReDim arr(intInputLen)
arr = MSComm1.Input
For i = 0 To UBound(arr)
If Len(Hex(arr(i))) = 1 Then
inData = inData & "0" & Hex(arr(i))
Else
inData = inData & Hex(arr(i))
End If
Next
Text2 = inData
End Select
End S