Meadow.Foundation.Sensors.Location.Gnss.NmeaProcessor 2.4.0.7-beta

This is a prerelease version of Meadow.Foundation.Sensors.Location.Gnss.NmeaProcessor.
dotnet add package Meadow.Foundation.Sensors.Location.Gnss.NmeaProcessor --version 2.4.0.7-beta
                    
NuGet\Install-Package Meadow.Foundation.Sensors.Location.Gnss.NmeaProcessor -Version 2.4.0.7-beta
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Meadow.Foundation.Sensors.Location.Gnss.NmeaProcessor" Version="2.4.0.7-beta" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Meadow.Foundation.Sensors.Location.Gnss.NmeaProcessor" Version="2.4.0.7-beta" />
                    
Directory.Packages.props
<PackageReference Include="Meadow.Foundation.Sensors.Location.Gnss.NmeaProcessor" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Meadow.Foundation.Sensors.Location.Gnss.NmeaProcessor --version 2.4.0.7-beta
                    
#r "nuget: Meadow.Foundation.Sensors.Location.Gnss.NmeaProcessor, 2.4.0.7-beta"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Meadow.Foundation.Sensors.Location.Gnss.NmeaProcessor@2.4.0.7-beta
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Meadow.Foundation.Sensors.Location.Gnss.NmeaProcessor&version=2.4.0.7-beta&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=Meadow.Foundation.Sensors.Location.Gnss.NmeaProcessor&version=2.4.0.7-beta&prerelease
                    
Install as a Cake Tool

Meadow.Foundation.Sensors.Location.Gnss.NmeaProcessor

GNSS NMEA parsing library

The NmeaProcessor library is included in the Meadow.Foundation.Sensors.Location.Gnss.NmeaProcessor nuget package and is designed for the Wilderness Labs Meadow .NET IoT platform.

This driver is part of the Meadow.Foundation peripherals library, an open-source repository of drivers and libraries that streamline and simplify adding hardware to your C# .NET Meadow IoT applications.

For more information on developing for Meadow, visit developer.wildernesslabs.co.

To view all Wilderness Labs open-source projects, including samples, visit github.com/wildernesslabs.

Installation

You can install the library from within Visual studio using the the NuGet Package Manager or from the command line using the .NET CLI:

dotnet add package Meadow.Foundation.Sensors.Location.Gnss.NmeaProcessor

Usage

private List<string> sentences;
private NmeaSentenceProcessor nmeaProcessor;

public override Task Initialize()
{
    Resolver.Log.Info("Initialize...");

    sentences = GetSampleNmeaSentences();

    InitDecoders();

    foreach (string sentence in sentences)
    {
        Resolver.Log.Info($"About to process:{sentence}");
        nmeaProcessor.ProcessNmeaMessage(sentence);
    }

    Resolver.Log.Info("Made it through all sentences");

    return Task.CompletedTask;
}

private void InitDecoders()
{
    Resolver.Log.Info("Create NMEA");
    nmeaProcessor = new NmeaSentenceProcessor();

    Resolver.Log.Info("Add decoders");

    // GGA
    var ggaDecoder = new GgaDecoder();
    Resolver.Log.Info("Created GGA");
    nmeaProcessor.RegisterDecoder(ggaDecoder);
    ggaDecoder.PositionReceived += (object sender, GnssPositionInfo location) =>
    {
        Resolver.Log.Info("*********************************************");
        Resolver.Log.Info(location.ToString());
        Resolver.Log.Info("*********************************************");
    };

    // GLL
    var gllDecoder = new GllDecoder();
    nmeaProcessor.RegisterDecoder(gllDecoder);
    gllDecoder.PositionReceived += (object sender, GnssPositionInfo location) =>
    {
        Resolver.Log.Info("*********************************************");
        Resolver.Log.Info(location.ToString());
        Resolver.Log.Info("*********************************************");
    };

    // GSA
    var gsaDecoder = new GsaDecoder();
    nmeaProcessor.RegisterDecoder(gsaDecoder);
    gsaDecoder.ActiveSatellitesReceived += (object sender, ActiveSatellites activeSatellites) =>
    {
        Resolver.Log.Info("*********************************************");
        Resolver.Log.Info(activeSatellites.ToString());
        Resolver.Log.Info("*********************************************");
    };

    // RMC (recommended minimum)
    var rmcDecoder = new RmcDecoder();
    nmeaProcessor.RegisterDecoder(rmcDecoder);
    rmcDecoder.PositionReceived += (object sender, GnssPositionInfo positionCourseAndTime) =>
    {
        Resolver.Log.Info("*********************************************");
        Resolver.Log.Info(positionCourseAndTime.ToString());
        Resolver.Log.Info("*********************************************");

    };

    // VTG (course made good)
    var vtgDecoder = new VtgDecoder();
    nmeaProcessor.RegisterDecoder(vtgDecoder);
    vtgDecoder.CourseAndVelocityReceived += (object sender, CourseOverGround courseAndVelocity) =>
    {
        Resolver.Log.Info("*********************************************");
        Resolver.Log.Info($"{courseAndVelocity}");
        Resolver.Log.Info("*********************************************");
    };

    // GSV (satellites in view)
    var gsvDecoder = new GsvDecoder();
    nmeaProcessor.RegisterDecoder(gsvDecoder);
    gsvDecoder.SatellitesInViewReceived += (object sender, SatellitesInView satellites) =>
    {
        Resolver.Log.Info("*********************************************");
        Resolver.Log.Info($"{satellites}");
        Resolver.Log.Info("*********************************************");
    };
}

private List<string> GetSampleNmeaSentences()
{
    List<string> sentences = new List<string>() {
        "$GPGGA,000049.799,,,,,0,00,,,M,,M,,*72", // i think not valid.
        "$GNGGA,001043.00,4404.14036,N,12118.85961,W,1,12,0.98,1113.0,M,-21.3,M,,*47", // valid
        "$GNRMC,001031.00,A,4404.13993,N,12118.86023,W,0.146,,100117,,,A*7B", // valid
        "$GPVTG,220.86,T,,M,2.550,N,4.724,K,A*34", // Valid
        "$GPVTG,0.00,T,,M,0.00,N,0.00,K,N*32",
        "$GPRMC,162254.00,A,3723.02837,N,12159.39853,W,0.820,188.36,110706,,,A*74",
        "$GPVTG,188.36,T,,M,0.820,N,1.519,K,A*3F",
        "$GPGGA,162254.00,3723.02837,N,12159.39853,W,1,03,2.36,525.6,M,-25.6,M,,*65",
        "$GPGSA,A,2,25,01,22,,,,,,,,,,2.56,2.36,1.00*02",

        "$GPGSA,A,3,10,32,14,01,,,,,,,,,2.41,2.20,0.99*01",

        "$GPGSV,3,1,11,03,03,111,00,04,15,270,00,06,01,010,00,13,06,292,00*74",
        "$GPGSV,3,2,11,14,25,170,00,16,57,208,39,18,67,296,40,19,40,246,00*74",
        "$GPGSV,3,3,11,22,42,067,42,24,14,311,43,27,05,244,00,,,,*4D",

        "$GPGLL,3723.02837,N,12159.39853,W,162254.00,A,A*7C",
        "$GPZDA,162254.00,11,07,2006,00,00*63",
        "$GNGLL,,,,,,V,N*7A",
        "$GLGSV,1,1,00*65",
    };

    return sentences;
}

How to Contribute

Need Help?

If you have questions or need assistance, please join the Wilderness Labs community on Slack.

About Meadow

Meadow is a complete, IoT platform with defense-grade security that runs full .NET applications on embeddable microcontrollers and Linux single-board computers including Raspberry Pi and NVIDIA Jetson.

Build

Use the full .NET platform and tooling such as Visual Studio and plug-and-play hardware drivers to painlessly build IoT solutions.

Connect

Utilize native support for WiFi, Ethernet, and Cellular connectivity to send sensor data to the Cloud and remotely control your peripherals.

Deploy

Instantly deploy and manage your fleet in the cloud for OtA, health-monitoring, logs, command + control, and enterprise backend integrations.

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
.NET Core netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.1 is compatible. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (3)

Showing the top 3 NuGet packages that depend on Meadow.Foundation.Sensors.Location.Gnss.NmeaProcessor:

Package Downloads
Meadow.Foundation.Sensors.Gnss.NeoM8

NEO M8 SPI, I2C, and serial GNSS / GPS controller

Meadow.Foundation.Sensors.Gnss.Mt3339

MediaTek MT3339 serial GNSS / GPS controller

Meadow.Foundation.Sensors.Gnss

BG95-M3 Cellular / GNSS controller

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
2.4.0.7-beta 229 10/1/2025
2.4.0.6-beta 428 9/23/2025
2.4.0.5-beta 342 9/9/2025
2.4.0.4-beta 344 9/1/2025
2.4.0.3-beta 347 9/1/2025
2.4.0.2-beta 405 8/26/2025
2.4.0.1-beta 344 8/20/2025
2.4.0 368 8/15/2025
2.3.0.3-beta 349 8/12/2025
2.3.0.2-beta 433 8/7/2025
2.3.0.1-beta 715 7/23/2025
2.3.0 424 7/15/2025
2.2.0.10-beta 373 7/8/2025
2.2.0.9-beta 330 7/4/2025
2.2.0.8-beta 407 7/3/2025
2.2.0.7-beta 418 6/19/2025
2.2.0.6-beta 400 6/18/2025
2.2.0.5-beta 426 6/3/2025
2.2.0.4-beta 400 5/28/2025
2.2.0.2 685 5/7/2025
2.1.0.7-beta 414 5/7/2025
2.1.0.3-beta 438 4/7/2025
2.1.0.2-beta 413 3/26/2025
2.1.0.1 505 3/12/2025
2.0.1.10-beta 440 3/12/2025
2.0.1.9-beta 416 3/9/2025
2.0.1.8-beta 487 3/5/2025
2.0.1.7-beta 515 3/3/2025
2.0.1.6-beta 409 2/25/2025
2.0.1.5-beta 434 2/20/2025
2.0.1.4-beta 389 2/6/2025
2.0.1.3-beta 355 1/28/2025
2.0.1.2 769 1/18/2025
2.0.1.1 587 1/18/2025
2.0.0.9 464 1/18/2025
2.0.0.8-beta 378 1/16/2025
2.0.0.7-beta 378 1/13/2025
2.0.0.6-beta 371 1/12/2025
2.0.0.5-beta 357 1/12/2025
2.0.0.4-beta 347 1/8/2025
2.0.0.3 449 1/7/2025
1.15.0.10-beta 391 1/7/2025
1.15.0.9-beta 426 1/4/2025
1.15.0.8-beta 402 12/24/2024
1.15.0.7-beta 413 12/17/2024
1.15.0.6-beta 371 11/20/2024
1.15.0.5-beta 386 11/19/2024
1.15.0.4-beta 377 11/16/2024
1.15.0.3-beta 425 11/4/2024
1.15.0.2-beta 357 10/29/2024
1.15.0.1-beta 404 10/22/2024
1.15.0 531 10/15/2024
1.14.0.6-beta 398 10/8/2024
1.14.0.5-beta 395 10/2/2024
1.14.0.4-beta 418 9/24/2024
1.14.0.3-beta 430 9/17/2024
1.14.0.2-beta 469 9/12/2024
1.14.0.1-beta 465 9/10/2024
1.14.0 634 9/5/2024
1.13.0.1-beta 482 8/21/2024
1.13.0 589 8/15/2024
1.12.8.7-beta 467 8/14/2024
1.12.8.6-beta 438 8/6/2024
1.12.8.5-beta 336 7/30/2024
1.12.8.4-beta 333 7/30/2024
1.12.8.2-beta 419 7/24/2024
1.12.8.1-beta 428 7/17/2024
1.12.8 558 7/11/2024
1.12.2.9-beta 423 7/9/2024
1.12.2.7-beta 485 7/3/2024
1.12.2.6-beta 484 6/29/2024
1.12.2.5-beta 478 6/28/2024
1.12.2.4-beta 477 6/24/2024
1.12.2.3-beta 479 6/24/2024
1.12.2.1-beta 447 6/19/2024
1.12.2 832 6/11/2024
1.12.0.2-beta 477 6/4/2024
1.12.0.1-beta 449 5/30/2024
1.12.0 674 5/28/2024
1.11.0.5-beta 467 5/24/2024
1.11.0.4-beta 475 5/21/2024
1.11.0.3-beta 507 5/15/2024
1.11.0.2-beta 509 5/9/2024
1.11.0.1-beta 484 5/8/2024
1.11.0 662 4/30/2024
1.10.2.1-beta 507 4/23/2024
1.10.2 591 4/17/2024
1.10.0.3-beta 476 4/15/2024
1.10.0.2-beta 470 4/11/2024
1.10.0.1-beta 513 4/5/2024
1.10.0 584 3/26/2024
1.9.0.6-beta 528 3/25/2024
1.9.0.5-beta 561 3/19/2024
1.9.0.4-beta 553 3/13/2024
1.9.0.3 652 3/6/2024
1.9.0.3-beta 270 3/6/2024
1.9.0.2-beta 570 3/6/2024
1.9.0.1 670 3/1/2024
1.9.0 846 2/27/2024
1.8.0.8-beta 599 2/23/2024
1.8.0.7-beta 607 2/22/2024
1.8.0.6-beta 668 2/20/2024
1.8.0.5-beta 635 2/13/2024
1.8.0.4-beta 625 2/6/2024
1.8.0.3-beta 648 2/1/2024
1.8.0.2-beta 655 1/24/2024
1.8.0.1 855 1/20/2024
1.8.0 1,062 1/16/2024
1.7.0 780 1/9/2024
1.6.0.6-beta 714 1/3/2024
1.6.0.5-beta 803 12/27/2023
1.6.0.4-beta 746 12/20/2023
1.6.0.3-beta 776 12/19/2023
1.6.0.2-beta 795 12/12/2023
1.6.0 1,108 12/6/2023
1.5.0.1-beta 856 12/4/2023
1.5.0 991 11/28/2023
1.4.0.9-beta 800 11/28/2023
1.4.0.8-beta 809 11/27/2023
1.4.0.7-beta 855 11/8/2023
1.4.0.6-beta 807 11/7/2023
1.4.0.4-beta 825 11/1/2023
1.4.0.3 922 10/31/2023
1.3.4.10-beta 769 10/25/2023
1.3.4.9-beta 956 10/24/2023
1.3.4.8-beta 835 10/17/2023
1.3.4.7-beta 866 10/10/2023
1.3.4.6-beta 858 10/5/2023
1.3.4.5-beta 882 10/4/2023
1.3.4.4-beta 839 10/3/2023
1.3.4.3-beta 885 10/3/2023
1.3.4.2-beta 924 9/30/2023
1.3.4.1-beta 895 9/30/2023
1.3.4 1,592 9/26/2023
1.3.2.5-beta 876 9/21/2023
1.3.2.4-beta 842 9/20/2023
1.3.2.3-beta 858 9/19/2023
1.3.2.2-beta 825 9/15/2023
1.3.2.1-beta 891 9/14/2023
1.3.2-beta 863 9/13/2023
1.3.1.1-beta 954 9/5/2023
1.3.0 1,171 8/29/2023
1.2.1.11-beta 925 8/24/2023
1.2.1.9-beta 983 8/17/2023
1.2.1.8-beta 1,003 8/8/2023
1.2.1.6-beta 993 8/4/2023
1.2.0 1,155 8/1/2023
1.1.1.11-beta 1,017 7/24/2023
1.1.1.10-beta 1,015 7/22/2023
1.1.1.9-beta 794 7/22/2023
1.1.1.8-beta 788 7/21/2023
1.1.0 1,537 7/11/2023
1.0.2.1 1,127 6/3/2023
1.0.2 1,050 6/3/2023
1.0.0.1 1,063 5/30/2023
1.0.0 1,174 5/28/2023
0.99.0 2,629 5/28/2023
0.98.2-alpha 873 5/27/2023
0.98.0 1,209 5/6/2023
0.96.0 1,414 4/2/2023
0.95.0 1,454 3/5/2023
0.94.2 1,495 2/7/2023
0.94.1 1,507 2/2/2023
0.92.5 1,507 12/31/2022
0.90.0 1,860 11/23/2022
0.89.2 1,427 11/23/2022
0.89.1 978 11/23/2022
0.1.51 1,503 11/21/2022
0.1.50 1,426 10/24/2022
0.1.47 1,397 5/30/2022