在 WM 平台上开发 GPS 导航系统
2010-02-21 22:52:00 来源:WEB开发网16 Return ParseGPRMC(sentence)
17 Case Else
18 ' Indicate that the sentence was not recognized
19 Return False
20 End Select
21 End Function
22 ' Divides a sentence into individual words
23 Public Function GetWords(ByVal sentence As String) As String()
24 Return sentence.Split(","c)
25 End Function
26 ' Interprets a $GPRMC message
27 Public Function ParseGPRMC(ByVal sentence As String) As Boolean
28 ' Divide the sentence into words
29 Dim Words() As String = GetWords(sentence)
30 ' Do we have enough values to describe our location?
31 If Words(3) <> "" And Words(4) <> "" And Words(5) <> "" And _
32 Words(6) <> "" Then
33 ' Yes. Extract latitude and longitude
34 Dim Latitude As String = Words(3).Substring(0, 2) & "°" ' Append hours
35 Latitude = Latitude & Words(3).Substring(2) & """" ' Append minutes
36 Latitude = Latitude & Words(4) ' Append the hemisphere
37 Dim Longitude As String = Words(5).Substring(0, 3) & "°" ' Append hours
38 Longitude = Longitude & Words(5).Substring(3) & """" ' Append minutes
39 Longitude = Longitude & Words(6) ' Append the hemisphere
40 ' Notify the calling application of the change
41 RaiseEvent PositionReceived(Latitude, Longitude)
42 End If
43 ' Indicate that the sentence was recognized
44 Return True
45 End Function
46 End Class
47
这里值得注意的一个地方就是在没有获取到信息时,某些GPS设备将记录空值。因此,一个好主意就是在解析之前来测试每个单词的值。如果您需要输入度数符号(°),按住Alt键并键入数字键盘上的“0176”。
取出垃圾
校验和以美元符号和星号(但不包括)之间的XOR字节来计算。这个校验和然后与语句中的校验和进行比较。如果校验和不匹配,这句话通常被丢弃。这是正常的,因为这样做GPS设备往往每隔几秒钟重复相同的信息。有比较校验和的能力,解析器能够抛出任何带有无效的校验和的语句。列表1-3扩大解析器:
- ››开发Android 日历教程
- ››开发学院总结 Win 8实用技巧大全
- ››开发学院原创教程:把win8的IE10放桌面上方法(非...
- ››开发者眼中的Windows Phone和Android
- ››开发学院教你用SQL 语句最快速清空MySQL 数据表的...
- ››WM 无法连接到win 7及webservice的异类原因
- ››开发一个自己的HTML在线编辑器(一)
- ››开发一个自己的HTML在线编辑器(二)
- ››开发者在App Store上赚的钱比在Android Market上多...
- ››开发者应深入学习的10个Android开源应用项目
- ››WM/WP上最完美的背光控制软件
- ››WM性能优化的一些经验
更多精彩
赞助商链接