Exemplo n.º 1
0
 def decodeVtg(self, data):
     nmea = NmeaRecord(data)
     if nmea.valid:
         h = nmea.value(1)
         if h is not None:
             return {"heading": h}
     return {}
Exemplo n.º 2
0
 def decodeHehdt(self, data):
     nmea = NmeaRecord(data)
     if nmea.valid:
         h = nmea.value(1)
         if h is not None:
             return {'id': 0, 'heading': h}
         return {}
Exemplo n.º 3
0
 def decodeVtg(self, data):
     nmea = NmeaRecord(data)
     if (nmea.valid):
         h = nmea.value(1)
         if h is not None:
             return {'heading': h}
     return {}
Exemplo n.º 4
0
 def parse(self, data):
     if data.startswith("$PISE"):
         nmea = NmeaRecord(data)
         if nmea.valid:
             try:
                 result = {
                     "id": nmea[1],
                     "lat": nmea.value(2),
                     "lon": nmea.value(3),
                     "heading": nmea.value(8),
                     "depth": nmea.value(9),
                     "speed": nmea.value(10),
                 }
                 try:
                     dt = datetime.datetime(
                         int(nmea[4][0:4]),
                         int(nmea[4][4:6]),
                         int(nmea[4][6:]),
                         int(nmea[5][0:2]),
                         int(nmea[5][2:4]),
                         int(nmea[5][4:6]),
                     )
                 except ValueError:
                     dt = datetime.datetime.utcnow()
                 td = dt - datetime.datetime(1970, 1, 1)
                 result["time"] = td.total_seconds()
                 return dict((k, v) for k, v in result.iteritems() if v is not None)
             except ValueError:
                 return {}
Exemplo n.º 5
0
    def parse(self, data):
        if data.startswith('$PSAAS'):
            nmea = NmeaRecord(data)
            if nmea.valid:
                try:
                    result = {'lat': nmea.fromDDM(2, 3),
                              'lon': nmea.fromDDM(4, 5),
                              'depth': nmea.value(6),
                              'altitude': nmea.value(7),
                              'heading': nmea.value(8),
                              'velforw': nmea.value(9),
                              'velport': nmea.value(10),
                              'velup': nmea.value(11)}

                    t = datetime.datetime.utcnow()
                    try:
                        dt = datetime.datetime(t.year, t.month, t.day,
                                           int(nmea[1][0:2]), int(nmea[1][2:4]),
                                           int(nmea[1][4:6]), int(nmea[1][7:]) * 100)
                    except ValueError:
                        dt = t
                    td = dt - datetime.datetime(1970, 1, 1)
                    result['time'] = td.total_seconds()
                    return dict((k, v) for k, v in result.iteritems() if v is not None)
                except ValueError:
                    return {}
Exemplo n.º 6
0
 def decodeGga(self, data):
     nmea = NmeaRecord(data)
     if nmea.valid:
         try:
             result = {"lat": nmea.fromDDM(2, 3), "lon": nmea.fromDDM(4, 5), "depth": -float(nmea[9])}
             try:
                 dt = datetime.datetime.utcnow().replace(
                     hour=int(nmea[1][0:2]), minute=int(nmea[1][2:4]), second=int(nmea[1][4:6])
                 )
             except ValueError:
                 dt = datetime.datetime.utcnow()
             td = dt - datetime.datetime(1970, 1, 1)
             result["time"] = td.total_seconds()
             return dict((k, v) for k, v in result.iteritems() if v is not None)
         except ValueError:
             return {}
Exemplo n.º 7
0
    def parse(self, data):
        if not data.startswith('!AIVDM'):
            return {}
        nmea = NmeaRecord(data)
        if nmea.valid:
            fcnt = nmea.value(1)
            frag = nmea.value(2)

            if frag == 1:
                self.binaryPayload = nmea[5]
            else:
                self.binaryPayload += nmea[5]

            if frag == fcnt:
                return self.decodePayload(self.binaryPayload)
            return {}
Exemplo n.º 8
0
 def decodeGll(self, data):
     nmea = NmeaRecord(data)
     if nmea.valid:
         try:
             result = {'lat': nmea.fromDDM(1, 2), 'lon': nmea.fromDDM(3, 4)}
             try:
                 dt = datetime.datetime.utcnow().replace(
                     hour=int(nmea[1][0:2]),
                     minute=int(nmea[1][2:4]),
                     second=int(nmea[1][4:6]))
             except ValueError:
                 dt = datetime.datetime.utcnow()
             td = dt - datetime.datetime(1970, 1, 1)
             result['time'] = td.total_seconds()
             return dict(
                 (k, v) for k, v in result.iteritems() if v is not None)
         except ValueError:
             return {}
Exemplo n.º 9
0
 def parse(self, data):
     if data.startswith('$PCI'):
         nmea = NmeaRecord(data)
         if nmea.valid:
             try:
                 result = {'depth': nmea.value(1),
                           'altitude': nmea.value(2),
                           'heading': nmea.value(3),
                           'pitch': nmea.value(5),
                           'roll': nmea.value(6)}
                 return dict((k, v) for k, v in result.iteritems() if v is not None)
             except ValueError:
                 return {}
Exemplo n.º 10
0
 def decodePtsag(self, data):
     nmea = NmeaRecord(data)
     if (nmea.valid):
         try:
             result = {'id': nmea.value(6), 'lat': nmea.fromDDM(7, 8),
                       'lon': nmea.fromDDM(9, 10), 'depth': nmea.value(12)}
             try:
                 dt = datetime.datetime(int(nmea[5]), int(nmea[4]), int(nmea[3]),
                                int(nmea[2][0:2]), int(nmea[2][2:4]),
                                int(nmea[2][4:6]), int(nmea[2][7:]) * 1000)
             except ValueError:
                 dt = datetime.datetime.utcnow()
             td = dt - datetime.datetime(1970, 1, 1)
             result['time'] = td.total_seconds()
             return dict((k, v) for k, v in result.iteritems() if v is not None)
         except ValueError:
             return {}
Exemplo n.º 11
0
 def parse(self, data):
     if data.startswith('$PSONLLD'):
         nmea = NmeaRecord(data)
         if (nmea.valid):
             try:
                 if nmea[3] == 'V':
                     return {}
                 result = {'id': nmea.value(2), 'lat': nmea.value(4),
                           'lon': nmea.value(5), 'depth': nmea.value(6)}
                 t = datetime.datetime.utcnow()
                 try:
                     dt = datetime.datetime(t.year, t.month, t.day,
                                     int(nmea[1][0:2]), int(nmea[1][2:4]),
                                     int(nmea[1][4:6]), int(nmea[1][7:]) * 100)
                 except ValueError:
                     dt = t
                 td = dt - datetime.datetime(1970, 1, 1)
                 result['time'] = td.total_seconds()
                 return dict((k, v) for k, v in result.iteritems() if v is not None)
             except ValueError:
                 return {}
Exemplo n.º 12
0
 def parse(self, data):
     if data.startswith('$PISE'):
         nmea = NmeaRecord(data)
         if nmea.valid:
             try:
                 result = {'id': nmea[1],
                           'lat': nmea.value(2),
                           'lon': nmea.value(3),
                           'heading': nmea.value(8),
                           'depth': nmea.value(9),
                           'speed': nmea.value(10)}
                 try:
                     dt = datetime.datetime(int(nmea[4][0:4]), int(nmea[4][4:6]),
                                        int(nmea[4][6:]),
                                        int(nmea[5][0:2]), int(nmea[5][2:4]),
                                        int(nmea[5][4:6]))
                 except ValueError:
                     dt = datetime.datetime.utcnow()
                 td = dt - datetime.datetime(1970, 1, 1)
                 result['time'] = td.total_seconds()
                 return dict((k, v) for k, v in result.iteritems() if v is not None)
             except ValueError:
                 return {}