Private Sub MSComm_OnComm()
Dim a&
Dim buffer As String
Dim recbuf(0 To 5) As Byte
Dim inlen As Integer
Dim i As Integer
Dim x As Variant
Dim c As Variant
On Error GoTo error1
Select Case MSComm.CommEvent
Case comEvReceive
inlen = MSComm.InBufferCount
Do Until inlen >= 6
DoEvents
inlen = MSComm.InBufferCount
Loop
i = 0
For Each c In MSComm.Input
recbuf(i) = c
i = i + 1
Next c
Case comFrame
x = MsgBox("帧错误!", vbCritical, "接受数据错误!!")
Exit Sub
Case comEventOverrun
新代码,问题已解决,谢谢一楼
嗯,贴代码。
Private Sub MSComm_OnComm()
Dim a&
Dim recbuf() As Byte
Dim inlen As Integer
Dim i As Integer
Dim x As Variant
'On Error GoTo error1
Select Case MSComm.CommEvent
Case comEvReceive
inlen = MSComm.InBufferCount
Do Until inlen >= 6
DoEvents
inlen = MSComm.InBufferCount
Loop
ReDim recbuf(0 To inlen - 1)
recbuf = MSComm.Input
Case comFrame
x = MsgBox("帧错误!", vbCritical, "接受数据错误!!")
Exit Sub
Case comEventOverrun
x = MsgBox("数据丢失", vbCritical, "接受数据错误!!")
Exit Sub
End Select
Select Case recbuf(1)
问题在于我一调用recbuf数组中的任意元素都会出现下标越界