Decoder/encoder for NMEA-0183 message types.
npm install -S @gnss/nmea
let buffer: string = ...; // String containing NMEA sentence
let message: NmeaMessage = NmeaTransport.decode(buffer);
let message = ...; // Message to be encoded
let buffer: string = NmeaTransport.encode(message);
Messages can be manually constructed using NmeaMessage???.construct({})
, which requires all message properties to be provided.
NmeaMessageGga.construct({
talker: NmeaTalker.NAV_SYSTEM_GNSS,
time: new Date(0, 0, 0, 1, 2, 3, 0),
latitude: 66.66,
longitude: 33.33,
quality: NmeaFixQuality.SIMULATOR,
numberSatellites: 10,
hdop: 2.5,
altitude: 180.00,
geoidalSeparation: 90.00,
differentialAge: 5,
differentialStationId: 'differentialStationId',
})
Transform streams to convert from NmeaMessage
s to sentence strings and vice-versa.
let input: stream.Readable = ...;
let output: stream.Writable = ...;
input // Stream of sentence strings
.pipe(new NmeaDecodeTransformStream()) // Stream of NmeaMessage objects
.pipe(new NmeaEncodeTransformStream()) // Stream of (identical) sentence strings
.pipe(output);
NmeaDecodeTransformStream
can optionally synchronize with the data stream e.g. if it starts receiving data from the middle of a message.
- DTM (NmeaMessageDtm)
- GBS (NmeaMessageGbs)
- GGA (NmeaMessageGga)
- GLL (NmeaMessageGll)
- GNS (NmeaMessageGns)
- GRS (NmeaMessageGrs)
- GSA (NmeaMessageGsa)
- GST (NmeaMessageGst)
- GSV (NmeaMessageGsv)
- RMC (NmeaMessageRmc)
- THS (NmeaMessageThs)
- TXT (NmeaMessageTxt)
- VHW (NmeaMessageVhw)
- VLW (NmeaMessageVlw)
- VPW (NmeaMessageVpw)
- VTG (NmeaMessageVtg)
- ZDA (NmeaMessageZda)
npm test
GPLv3
Contributions of new sentence types, bug fixes and general improvements via pull requests are welcome. Please ensure that code style matches that of the existing files.