【散100分】溜达溜达看看小弟我的GPS代码··
【散100分】溜达溜达看看我的GPS代码··
我做的只是一个小DEMO
想大家看看这种思路OK不
配置Com口 这里我没简化写
这里是事件的具体代码 名字瞎起凑合看吧先
有一点我不太明白这里我是一个字符一个字符读进来的,但是他到了richtextbox里面怎么就换行了呢
我之前测试过以$符号为界限一行一行添加到数组中之后用vbcrlf来分隔没有问题
但是我在代码里面直接判断单个字符的时候就判断不出来。
所以我就直接写到了CommEvent事件里面了
我这么写可以不?
我是说老大看了之后不会说我没思想啊,这些吧。虽然实现了
我怕老大说我没啥思想,一味的实现,望高手指点。
解释:
$GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11><CR><LF>
1) 标准定位时间(UTC time)格式:时时分分秒秒.秒秒秒(hhmmss.sss)。
2) 定位状态,A = 数据可用,V = 数据不可用。
3) 纬度,格式:度度分分.分分分分(ddmm.mmmm)。
4) 纬度区分,北半球(N)或南半球(S)。
5) 经度,格式:度度分分.分分分分。
6) 经度区分,东(E)半球或西(W)半球。
7) 相对位移速度, 0.0 至 1851.8 knots
8) 相对位移方向,000.0 至 359.9度。实际值。
9) 日期,格式:日日月月年年(ddmmyy)。
10) 磁极变量,000.0 至180.0。
11) 度数。
12) Checksum.(检查位)
真实数据:
$GPRMC,034719.193,V,4002.3872,N,11624.5600,E,,,020410,,,N*79
$GPVTG,,T,,M,,N,,K,N*2C
$GPGGA,034720.193,4002.3872,N,11624.5600,E,0,00,,149.3,M,-6.1,M,,0000*64
$GPRMC,034720.193,V,4002.3872,N,11624.5600,E,,,020410,,,N*73
$GPVTG,,T,,M,,N,,K,N*2C
$GPGGA,034721.193,4002.3872,N,11624.5600,E,0,00,,149.3,M,-6.1,M,,0000*65
$GPRMC,034721.193,V,4002.3872,N,11624.5600,E,,,020410,,,N*72
$GPVTG,,T,,M,,N,,K,N*2C
我就拿出了一小段。
------解决方案--------------------
学习and
双手接分
------解决方案--------------------
路过参观 接分
------解决方案--------------------
友情接分!!
------解决方案--------------------
友情接分
------解决方案--------------------
$GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11><CR><LF>
数据格式中本色带有回车换行,你又把每个字符都输出到 RichTextBox 中,当然会分行了!
注:vbCrLf 是两个字符,你分开来接收就分别是 vbCr、vbLf。
------解决方案--------------------
溜达溜达进来逛逛。
------解决方案--------------------
溜达溜达进来逛逛。
我做的只是一个小DEMO
想大家看看这种思路OK不
配置Com口 这里我没简化写
- VB code
Private Enum GroupState GroupStart GroupBody GroupEnd End Enum MSComm1.Settings = "4800,n,8,1" MSComm1.CommPort = 8 MSComm1.InBufferSize = 40 MSComm1.RThreshold = 1 MSComm1.InputLen = 1 MSComm1.InputMode = comInputModeText MSComm1.PortOpen = True
这里是事件的具体代码 名字瞎起凑合看吧先
- VB code
Private Static Sub MSComm1_OnComm() Dim code As String Dim up() As String Dim eType As GroupState Select Case MSComm1.CommEvent ' 判断MSComm1通信事件 Case comEvReceive code = MSComm1.Input If code = "$" Then If foo <> "" Then up = Split(foo, ",") If up(0) = "$GPRMC" Then Label3.Caption = up(3) Label5.Caption = up(4) Label4.Caption = up(5) Label6.Caption = up(6) 'Command4.Caption = i 'i = i + 1 End If foo = "" End If eType = GroupStart End If Select Case eType Case GroupState.GroupStart eType = GroupBody foo = foo + code Case GroupState.GroupBody foo = foo + code End Select RichTextBox1.SelText = code Case Else End Select End Sub
有一点我不太明白这里我是一个字符一个字符读进来的,但是他到了richtextbox里面怎么就换行了呢
我之前测试过以$符号为界限一行一行添加到数组中之后用vbcrlf来分隔没有问题
但是我在代码里面直接判断单个字符的时候就判断不出来。
所以我就直接写到了CommEvent事件里面了
我这么写可以不?
我是说老大看了之后不会说我没思想啊,这些吧。虽然实现了
我怕老大说我没啥思想,一味的实现,望高手指点。
解释:
$GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11><CR><LF>
1) 标准定位时间(UTC time)格式:时时分分秒秒.秒秒秒(hhmmss.sss)。
2) 定位状态,A = 数据可用,V = 数据不可用。
3) 纬度,格式:度度分分.分分分分(ddmm.mmmm)。
4) 纬度区分,北半球(N)或南半球(S)。
5) 经度,格式:度度分分.分分分分。
6) 经度区分,东(E)半球或西(W)半球。
7) 相对位移速度, 0.0 至 1851.8 knots
8) 相对位移方向,000.0 至 359.9度。实际值。
9) 日期,格式:日日月月年年(ddmmyy)。
10) 磁极变量,000.0 至180.0。
11) 度数。
12) Checksum.(检查位)
真实数据:
$GPRMC,034719.193,V,4002.3872,N,11624.5600,E,,,020410,,,N*79
$GPVTG,,T,,M,,N,,K,N*2C
$GPGGA,034720.193,4002.3872,N,11624.5600,E,0,00,,149.3,M,-6.1,M,,0000*64
$GPRMC,034720.193,V,4002.3872,N,11624.5600,E,,,020410,,,N*73
$GPVTG,,T,,M,,N,,K,N*2C
$GPGGA,034721.193,4002.3872,N,11624.5600,E,0,00,,149.3,M,-6.1,M,,0000*65
$GPRMC,034721.193,V,4002.3872,N,11624.5600,E,,,020410,,,N*72
$GPVTG,,T,,M,,N,,K,N*2C
我就拿出了一小段。
------解决方案--------------------
学习and
双手接分
------解决方案--------------------
路过参观 接分
------解决方案--------------------
友情接分!!
------解决方案--------------------
友情接分
------解决方案--------------------
$GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11><CR><LF>
数据格式中本色带有回车换行,你又把每个字符都输出到 RichTextBox 中,当然会分行了!
注:vbCrLf 是两个字符,你分开来接收就分别是 vbCr、vbLf。
------解决方案--------------------
溜达溜达进来逛逛。
------解决方案--------------------
溜达溜达进来逛逛。