⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rmc.cls

📁 这是本人初次上载程序
💻 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 + -