VB 串口老是下标越界,我ReDim comBUF(0 To 256)有257个数的了

来源:百度知道 编辑:UC知道 时间:2024/06/09 09:22:10
出来下标越界后点调试后
FileBUF(FileCOUNT) = comBUF(comI)
就指在这一行
把鼠标放到comBUF(comI)上显示comBUF(comI)=<下标越界>
把鼠标放到comI上显示comI=7
才7啊怎么就越界了啊 有时是二十几等
反正都没越界他脚说越界了
2个COM口波特率设置差一倍
我一个不断发送的设为9600
当接收的也设为9600时很正常
当接收的设为4800时CommEvent等于1004(帧错误。)但不提示下标越界
当接收的设为19200时CommEvent也是1004(帧错误。)不过这一开就立马出来下标越界了
此时comBUF(comI)的comI才等于7不知道怎么就越界了,但这肯定是帧错误引起的,就是不明白这与下标越界有什么关系。想不通

未见到你的全部代码,无法确定出错原因。下面提供能正常运行的代码:
Option Explicit
Dim strData As String

Private Sub Form_Load()
Timer2.Interval = 10
MSComm1.Settings = "9600,n,8,1"
MSComm1.CommPort = 1
MSComm1.RThreshold = 1
MSComm1.PortOpen = True
End Sub

Private Sub MsComm1_OnComm()
Dim intInputLen As Integer
Select Case Me.MSComm1.CommEvent
Case comEvReceive
'此处添加处理接收的代码
Me.MSComm1.InputMode = comInputModeBinary '二进制接收
intInputLen = Me.MSComm1.InBufferCount
ReDim bytInput(intInputLen)
bytInput = Me.MSComm1.Input
jieshou
End Select
End Sub

Public Function jieshou() '接收数据处理为16进制
Dim i As Integer
For i = 0 To UBound(bytInput)
If Len(Hex(bytInput(i))) = 1 Then
strData = strData & "0" & Hex(bytInput