如何编写GPS应用程序:清除数据中的垃圾
来源:互联网 发布:微信分销源码 编辑:程序博客网 时间:2024/05/18 03:45
如何编写GPS应用程序:清除GPS DATA垃圾
通过对字节做异或运算得出校验和(但不包括美元符号和星号)。然后,此校验
相对于从语句中返回的校验和。如果校验和不匹配,这条语句通常被丢弃。这是可以的,因为GPS设备往往每隔几秒钟重复着同样的信息。通过
比较校验和,解释器能够抛弃任何
带有无效的校验和的语句。
清单1-3:解释器现在可以检测错误,并解析只没有差错的NMEA数据。
'***************************************** **************
'**清单1-3。检测和处理NMEA错误
http://www.beikei.net
'************************************************* ******
Public Class NmeaInterpreter
' Raised when the current location has changed
Public Event PositionReceived(ByVal latitude As String, ByVal longitude As String)
' Processes information from the GPS receiver
Public Function Parse(ByVal sentence As String) As Boolean
' Discard the sentence if its checksum does not match our calculated checksum
If Not IsValid(sentence) Then Return False
' Look at the first word to decide where to go next
Select Case GetWords(sentence)(0)
Case "$GPRMC"' A "Recommended Minimum" sentence was found!
Return ParseGPRMC(sentence)
Case Else
' Indicate that the sentence was not recognized
Return False
End Select
End Function
' Divides a sentence into individual words
Public Function GetWords(ByVal sentence As String) As String()
Return sentence.Split(","c)
End Function
' Interprets a $GPRMC message
Public Function ParseGPRMC(ByVal sentence As String) As Boolean
' Divide the sentence into words
Dim Words() As String = GetWords(sentence)
' Do we have enough values to describe our location?
If Words(3) <> "" And Words(4) <> "" And Words(5) <> "" And Words(6) <> "" Then
' Yes. Extract latitude and longitude
Dim Latitude As String = Words(3).Substring(0, 2) & "�"' Append hours
Latitude = Latitude & Words(3).Substring(2) & """" ' Append minutes
Latitude = Latitude & Words(4)' Append the hemisphere
Dim Longitude As String = Words(5).Substring(0, 3) & "�"' Append hours
Longitude = Longitude & Words(5).Substring(3) & """" ' Append minutes
Longitude = Longitude & Words(6)' Append the hemisphere
' Notify the calling application of the change
RaiseEvent PositionReceived(Latitude, Longitude)
End If
' Indicate that the sentence was recognized
Return True
End Function
' Returns True if a sentence's checksum matches the calculated checksum
Public Function IsValid(ByVal sentence As String) As Boolean
' Compare the characters after the asterisk to the calculation
Return sentence.Substring(sentence.IndexOf("*") + 1) = GetChecksum(sentence)
End Function
' Calculates the checksum for a sentence
Public Function GetChecksum(ByVal sentence As String) As String
' Loop through all chars to get a checksum
Dim Character As Char
Dim Checksum As Integer
For Each Character In sentence
Select Case Character
Case "$"c
' Ignore the dollar sign
Case "*"c
' Stop processing before the asterisk
Exit For
Case Else
' Is this the first value for the checksum?
If Checksum = 0 Then
' Yes. Set the checksum to the value
Checksum = Convert.ToByte(Character)
Else
' No. XOR the checksum with this character's value
Checksum = Checksum Xor Convert.ToByte(Character)
End If
End Select
Next
' Return the checksum formatted as a two-character hexadecimal
Return Checksum.ToString("X2")
End Function
End Class
- 如何编写GPS应用程序:清除数据中的垃圾
- 如何使用.net编写GPS应用程序
- 编写的一个.bat文件,用于清除系统中的垃圾
- 编写的一个.bat文件,用于清除系统中的垃圾
- 如何清除系统垃圾
- 清除电脑中的垃圾
- [VB.NET]如何清除DataGridView中的数据?
- 如何清除串口缓冲区中的数据
- GPS应用程序编写:方向与速度提醒
- 清除电脑中的垃圾[使用.bat 篇]
- 30秒清除你电脑中的垃圾
- 30秒清除你电脑中的垃圾
- 30秒清除你电脑中的垃圾
- 30秒清除你电脑中的垃圾
- 30秒清除你电脑中的垃圾
- 30秒清除你电脑中的垃圾
- 快速清除你电脑中的垃圾
- 30秒清除你电脑中的垃圾
- 摘自《C++编程思想》的一些编程准则
- 第一次来
- lucene好文
- 删除MySQL二进制日志的3种方法
- 简体中文转换城unicode(utf-8)
- 如何编写GPS应用程序:清除数据中的垃圾
- 如何在VC++6中实现窗口最大化、最小化的设置
- git常用commands
- IIS7的集成模式和经典模式
- dasdasdas
- Dojo框架:误解与现实
- 利用backtrace和backtrace_symbols打印函数的调用关系
- MFC的CListCtrl的使用与技巧
- 拜托写个程序,