Library for handling NMEA message in Windows Desktop, Store, Phone, Universal, and Xamarin (Android + iOS), coming from files, bluetooth, serial port or any stream
Find a file
2020-01-16 22:40:34 -08:00
.github/workflows Fix CI build and upgrade unit tests to target both NETFX and NetCore 2020-01-16 00:07:27 -08:00
src Initial stab at an aggregator 2020-01-16 22:40:34 -08:00
.gitignore Moved to a single-project csproj NET Standard solution 2017-12-12 11:51:37 -08:00
azure-pipelines.yml Merge branch 'master' into EnableNullable 2019-10-02 13:23:58 -07:00
LICENCE Updated license to Apache 2.0 2019-02-25 23:49:07 -08:00
README.md Update README.md 2020-01-15 15:36:30 -08:00

Nmea Parser

NOTE: The documentation below matches the v1.x releases. I'm currently working on a big revamp of the API to make it simpler and cover more scenarios learned over time, which will include some breaking changes. So the doc below does not currently match what you see in the master-branch

=========

Library for reading and parsing NMEA data message streams. It makes it easy to connect and listen for NMEA messages coming from various devices in Windows Store, Windows Phone, Windows Desktop/.NET and Windows Universal apps as well as Xamarin for iOS and Android.

Sponsoring

If you like this library and use it a lot, consider sponsoring me. Anything helps and encourages me to keep going.

See here for details: https://github.com/sponsors/dotMorten

Features

The following inputs are supported:

  • System.IO.Stream (all platforms)
  • Emulation from NMEA log file (all platforms)
  • Bluetooth: Windows Universal. Desktop is supported using the bluetooth device via the SerialPortDevice.
  • Serial Device: Windows Desktop and Windows Universal.

Currently supported NMEA messages:

  • GPS: GPBOD, GPGGA, GPGLL, GPGNS, GPGSA, GPGST, GPGSV, GPRMB, GPRMC, GPRTE
  • GLONASS: GLGNS, GLGSV
  • GALILEO: GAGSV
  • Generic GNSS: GNGGA, GNGLL, GNGNS, GNGSA, GNGST, GNRMC
  • Garmin GPS NMEA (PGRME, PGRMZ)
  • Trimble Laser Range Finder (PTNLA, PTNLB)
  • TruePulse Laser Range Finder (PLTIT)

The API is easily extensible with more NMEA messages. Simply create a new class inheriting from "NmeaMessage" and use the NmeaMessageType Attribute to tag it with the NMEA Message Token it supports.

Example:

[NmeaMessageType("GPRMC")]
public class Gprmc : NmeaMessage
{
	protected override void LoadMessage(string[] message)
	{
		//TODO: Process message parts
	}
}

If you add new messages, please fork, provide a simple unit test for the message and submit a pull request.

NuGet

You can get the library via NuGet if you have the extension installed for Visual Studio or via the PowerShell package manager. This control is published via NuGet at SharpGIS.NmeaParser.

PM> Install-Package SharpGIS.NmeaParser

Usage

Please see the WIKI how to use it on the various platforms

Screenshots

Screenshots from Desktop sample app:

sampleapp2 sampleapp3

Map view using the ArcGIS Runtime (see separate branch): sampleapp1