Foxtable(狐表)用户栏目专家坐堂 → [求助]读com端口,索引超出了数组界限


  共有1636人关注过本帖树形打印复制链接

主题:[求助]读com端口,索引超出了数组界限

帅哥哟,离线,有人找我吗?
wangjh8888
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:502 积分:4924 威望:0 精华:0 注册:2016/7/11 10:12:00
[求助]读com端口,索引超出了数组界限  发帖心情 Post By:2018/4/24 17:21:00 [只看该作者]

老师 我下面代码 在计时器读取com1的GPS数据,有时会出现:

.NET Framework 版本:2.0.50727.5472
Foxtable 版本:2018.3.9.1
错误所在事件:窗口,GPS接收,TimerTick
详细错误信息:
索引超出了数组界限。

问题在哪里?   怎么处理?

Dim s As String
Dim COMStr As String = e.Form.Controls("ComboBox_com").value
s = Ports(COMStr).ReadExisting

If S.Length  > 0 AndAlso S.Contains("$GPGGA") Then    '判断是否含有 字符串 "$GPGGA"
    S = S.Remove(0,S.IndexOf("$GPGGA"))
Else
    Return
End If

Dim rs1() As String = s.Split(vbcrlf )

Dim rs_max,rs_long As Integer
rs_max = 20
rs_long = rs1.Length -1
If rs_max < rs1.Length Then
    rs_long = rs_max
End If
For  i  As Integer = 0 To rs_long -1
    Dim cs1() As String = rs1(i).Split(",")
    If cs1.Length = 15 And cs1(0) = "$GPGGA" And cs1(6) = "1"   Then
        e.Form.Controls("TextBox_GPStxt").value = rs1(i)
        e.Form.Controls("TextBox_gpsn").value = cs1(7)     '   卫星数
    End If
Next


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/4/24 17:49:00 [只看该作者]

加入msgbox弹出值看一下

 

    Dim cs1() As String = rs1(i).Split(",")
msgbox(cs1.length)
    If cs1.Length = 15 AndAlso cs1(0) = "$GPGGA" AndAlso cs1(6) = "1"   Then

 回到顶部
帅哥哟,离线,有人找我吗?
wangjh8888
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:502 积分:4924 威望:0 精华:0 注册:2016/7/11 10:12:00
  发帖心情 Post By:2018/4/24 19:25:00 [只看该作者]

嗯嗯   大部分是 15,13,18,20

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106603 积分:542186 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/4/24 20:27:00 [只看该作者]

按2楼方法改后还有问题么?

 回到顶部