📄 rmc.cls
字号:
VERSION 1.0 CLASS
BEGIN
MultiUse = -1 'True
Persistable = 0 'NotPersistable
DataBindingBehavior = 0 'vbNone
DataSourceBehavior = 0 'vbNone
MTSTransactionMode = 0 'NotAnMTSObject
END
Attribute VB_Name = "GPRMC"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = False
Attribute VB_Ext_KEY = "SavedWithClassBuilder" ,"Yes"
Attribute VB_Ext_KEY = "Top_Level" ,"Yes"
Option Explicit
Private mvarSentence As String
Private mvarUTC As String
Private mvarStatus As String
Private mvarLatitude As String
Private mvarLongitude As String
Private mvarLatHemis As String
Private mvarLonHemis As String
Private mvarSpeed As String
Private mvarTrackMadeGood As String
Private mvarUTDate As String
Private mvarMagneticVariation As String
Private mvarMagDeviation As String
Private mvarChecksum As String
Public Enum GPRMCError
InvalidOrCorruptGPRMC = vbObjectError + 512 + 3
End Enum
Public Property Get Checksum() As String
Attribute Checksum.VB_Description = "Returns the checksum of the NMEA string."
Checksum = mvarChecksum
End Property
Public Property Get MagDeviation() As String
Attribute MagDeviation.VB_Description = "Returns the magnetic deviation (E or W)."
MagDeviation = mvarMagDeviation
End Property
Public Property Get MagneticVariation() As String
Attribute MagneticVariation.VB_Description = "Returns the magnetic variation in degrees; easterly variation subtracts from true course."
MagneticVariation = mvarMagneticVariation
End Property
Public Property Get UTDate() As String
Attribute UTDate.VB_Description = "Returns the UTD (Date)."
UTDate = mvarUTDate
End Property
Public Property Get TrackMadeGood() As String
Attribute TrackMadeGood.VB_Description = "Returns track made good in degrees (true north)."
TrackMadeGood = mvarTrackMadeGood
End Property
Public Property Get Speed() As String
Attribute Speed.VB_Description = "Returns speed over ground in knots."
Speed = mvarSpeed
End Property
Public Property Get LonHemis() As String
Attribute LonHemis.VB_Description = "Returns a string indicating east or west longitude."
LonHemis = mvarLonHemis
End Property
Public Property Get LatHemis() As String
Attribute LatHemis.VB_Description = "Returns a string indicating north or south latitude."
LatHemis = mvarLatHemis
End Property
Public Property Get Longitude() As String
Attribute Longitude.VB_Description = "Returns the Longitude of the object."
Longitude = mvarLongitude
End Property
Public Property Get Latitude() As String
Attribute Latitude.VB_Description = "Returns the Latitude of the object."
Latitude = mvarLatitude
End Property
Public Property Get Status() As String
Attribute Status.VB_Description = "Returns a string indicating the data status of the object. V = navigation receiver warning."
Status = mvarStatus
End Property
Public Property Get UTC() As String
Attribute UTC.VB_Description = "Returns the UTC from the object."
UTC = mvarUTC
End Property
Public Property Let Sentence(ByVal RMC_Sentence As String)
Attribute Sentence.VB_Description = "Sets/Returns NMEA sentence for object."
Dim Utils As New CParseUtils
'检查正确的协议串头,以保证为 $GPRMC 串
If Utils.Parse(RMC_Sentence, 1) = "$GPRMC" Then
' 以下定义欲从对应的$GPRMC串读取数据的字符变量,
' 具体含义英文名称已经很清楚,不再解释
Dim sUTC As String
Dim sStatus As String
Dim sLatitude As String
Dim sLatHemis As String
Dim sLongitude As String
Dim sLonHemis As String
Dim sSpeed As String
Dim sTrackMadeGood As String
Dim sUTDate As String
Dim sMagneticVariation As String
Dim sMagDeviation As String
Dim sChecksum As String
Dim sTempMagDeviation As String
Dim sTempChecksum As String
mvarSentence = RMC_Sentence
' 分析 NMEA 并检查效果,如果不满足控制条件,返回并使变量值为空
sUTC = Utils.Parse(mvarSentence, 2) 'UTC 时间
If IsNumeric(sUTC) Then
mvarUTC = sUTC
End If
sStatus = Utils.Parse(mvarSentence, 3) '接收状态
mvarStatus = sStatus
sLatitude = Utils.Parse(mvarSentence, 4) '纬度
If IsNumeric(sLatitude) Then
mvarLatitude = sLatitude
End If
sLatHemis = Utils.Parse(mvarSentence, 5) '南、北纬
If sLatHemis = "N" Or sLatHemis = "S" Then
mvarLatHemis = sLatHemis
End If
sLongitude = Utils.Parse(mvarSentence, 6) '经度
If IsNumeric(sLongitude) Then
mvarLongitude = sLongitude
End If
sLonHemis = Utils.Parse(mvarSentence, 7) '东、西经
If sLonHemis = "E" Or sLonHemis = "W" Then
mvarLonHemis = sLonHemis
End If
sSpeed = Utils.Parse(mvarSentence, 8) '速度
If IsNumeric(sSpeed) Then
mvarSpeed = sSpeed
End If
sTrackMadeGood = Utils.Parse(mvarSentence, 9) '跟踪
If IsNumeric(sTrackMadeGood) Then
mvarTrackMadeGood = sTrackMadeGood
End If
sUTDate = Utils.Parse(mvarSentence, 10) '日期
If IsNumeric(sUTDate) Then
mvarUTDate = sUTDate
End If
sMagneticVariation = Utils.Parse(mvarSentence, 11) '地磁变化(磁偏角)
If IsNumeric(sMagneticVariation) Then
mvarMagneticVariation = sMagneticVariation
End If
sTempMagDeviation = Utils.Parse(mvarSentence, 12) '地磁变化方向
sMagDeviation = Utils.Parse(sTempMagDeviation, 1, "*")
mvarMagDeviation = sMagDeviation
sTempChecksum = Utils.Parse(mvarSentence, 12) '检校和
sChecksum = Utils.Parse(sTempChecksum, 2, "*")
mvarChecksum = sChecksum
Else
MsgBox "数据格式不正确!"
End If
Set Utils = Nothing
End Property
Public Property Get Sentence() As String
Sentence = mvarSentence
End Property
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -