Ejemplo n.º 1
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 {}
Ejemplo n.º 2
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 {}
Ejemplo n.º 3
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 {}
Ejemplo n.º 4
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 {}