以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  求助:身高测量仪串口监视器读取代码  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=28897)

--  作者:sophia
--  发布时间:2013/2/21 19:15:00
--  求助:身高测量仪串口监视器读取代码
今天写了一个身高测量仪的串口数据代码但是报错
说明书的说明是这样

直接传送

此种方式下人体秤不受计算机控制,每测量完成后立即通过串口发送测量结果。发送格式如下:

例:W:0825 H:1825     表示体重=82.5kg 身高=182.5cm

注:      1 字符为ASCII码,并以回车(0d) 换行(0a) 结束。

             2 此方式是人体秤开机后默认通讯方式。

 

通讯协议

通讯协议:RS-232

通讯格式:波特率=4800bt  起始位=1bit  数据位=8bit 停止位=1


我只想读取身高数据到数据库相应字段里,代码如下


Dim s As String = e.Port.ReadExisting

Dim Values() As String

Values = s.split(":")

Dim r As Row =Tables("驾证业务").current

r("身高") = Values(2)

forms("身高测量").controls("sh").text = Values(2) & "cm"




执行后提示:


错误代码位置:串口监视器.DataReceived

system.IndexOutOutOfRangeException:索引超出了数组界限。

在 UserCode.DataReceived(DataReceivedEventArgs e)


不知为何 是不是因为



注:      1 字符为ASCII码,并以回车(0d) 换行(0a) 结束。

上述代码错误在哪里,应该怎么改


--  作者:狐狸爸爸
--  发布时间:2013/2/21 19:20:00
--  

Dim s As String = e.Port.ReadExisting

Dim Values() As String

If s.Indexof(":") >0 Then

    Values = s.split(":")

    Dim r As Row =Tables("驾证业务").current

     r("身高") = Values(2)

    forms("身高测量").controls("sh").text = Values(2) & "cm"

Else

    MessageBox.show("数据格式错误")

End if


--  作者:zerov
--  发布时间:2013/2/21 19:51:00
--  
好样的,想不到狐表这么有用
--  作者:sophia
--  发布时间:2013/2/24 9:40:00
--  
为了测试测量仪串口的读取能力写了以下代码

Dim s As String = e.Port.ReadExisting()
forms("身高测量").controls("tb1").text =  s

此代码确实能读取测量结果 但是只闪一下就看不见了
此代码有错吗 怎样才能读取到文本框里呢
在超级终端里可是能读取出来数据图片点击可在新窗口打开查看
图片点击可在新窗口打开查看

--  作者:lin_hailun
--  发布时间:2013/2/25 12:26:00
--  
 应该不会错吧?这样试一下。

Dim s As String = e.Port.ReadExisting()
msgbox(s)