回 帖 发 新 帖 刷新版面

主题:在利用MSCOMM控件接收数据时,有时溢出

当程序运行一段时间后,提示 接收溢出

但是我不理解的是 我 设置接收 .InBufferSize = 14 '设置缓冲区接收数据为14字节

但是当接收时提示Data(i + j)越界,14<UBound(Data)<i+j
接收程序如下:
 Buffer = MSComm1.Input
    Data() = Buffer
    For i = 0 To (UBound(Data) - 2)
        If ((Data(i) = &HEB) And (Data(i + 1) = &H90) And (Data(i + 2) = &H40)) Then
            For j = 0 To 13
                buff(j) = Data(i + j)
            Next
             MSComm1.InBufferCount = 0
   next

我已经设置了接收缓冲区数据14,怎么会出现 UBound(Data)=21>14的情况呢?
请指教

回复列表 (共2个回复)

沙发

这里你搞错了一个概念
i+j大于data数组的最大下标,data(i+j)当然要出错的!
例如:
i+j=20,而data的最大下标假定为5,你想使用data(20),你说出不出错?

板凳


 谢谢

我来回复

您尚未登录,请登录后再回复。点此登录或注册