{"id":21196645,"url":"https://github.com/sandervandevelde/nmeaparser","last_synced_at":"2025-07-10T05:30:44.099Z","repository":{"id":40909619,"uuid":"199469287","full_name":"sandervandevelde/nmeaparser","owner":"sandervandevelde","description":"Light-weight parser for NMEA messages. Currently parses GSV, GGA, GSA, GLL, GMC, VTG and TXT","archived":false,"fork":false,"pushed_at":"2022-12-08T04:31:20.000Z","size":76,"stargazers_count":6,"open_issues_count":3,"forks_count":2,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-06-01T19:31:10.200Z","etag":null,"topics":["gps","nmea","nmea-parser","nmea0183"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sandervandevelde.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-07-29T14:30:46.000Z","updated_at":"2024-08-31T21:36:25.000Z","dependencies_parsed_at":"2023-01-24T10:30:14.948Z","dependency_job_id":null,"html_url":"https://github.com/sandervandevelde/nmeaparser","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/sandervandevelde/nmeaparser","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sandervandevelde%2Fnmeaparser","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sandervandevelde%2Fnmeaparser/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sandervandevelde%2Fnmeaparser/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sandervandevelde%2Fnmeaparser/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sandervandevelde","download_url":"https://codeload.github.com/sandervandevelde/nmeaparser/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sandervandevelde%2Fnmeaparser/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264211827,"owners_count":23573603,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gps","nmea","nmea-parser","nmea0183"],"created_at":"2024-11-20T19:40:38.742Z","updated_at":"2025-07-10T05:30:43.810Z","avatar_url":"https://github.com/sandervandevelde.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# nmeaparser\n\nParser for NMEA messages. Currently parses GSV, GGA, GSA, GLL, GMC, VTG and TXT\n\n## Usage\n\nThe parser parses message like '$GNGLL,4513.13795,N,01859.19702,E,143717.00,A,A*72'\n\n        ...\n        _parser = new NmeaParser();\n\n        _parser.NmeaMessageParsed += NmeaMessageParsed;\n\n        _parser.Parse(sentence);\n        ...\n\n        private static void NmeaMessageParsed(object sender, NmeaMessage e)\n        {\n            Console.WriteLine($\"{e}\");\n            \n            if (e is GnrmcMessage)\n            {\n               // Use message\n            }   \n        }\n\nOnce the message is parsed, a derived NmeaMessage is made available in the 'NmeaMessageParsed' event.\n\n### Multiple parsers?\n\nIf you have multiple NMEA devices please check out the 'NmeaParserList' class. This class is designed to support multiple parsers without crossing input.\n\n## Why events?\n\nThe event is used because some NMEA messages are splitted up in multiple sentences like GSA and GSV.\n\nFor these messages, the result is buffered. Once the complete message is made available, the event is raised.\n\n## Degrees\n\nThe location degrees are calculated as decimal degrees. \n\n        (d)dd + (mm.mmmm/60) (* -1 for W and S)\n\n## Serial Reader\n\nFor testing purposes, a reader for serial ports is added in the test application. If uses .Net Standard System IO access to serial ports.\n\n### System.IO.Ports\n\nThe example app only supports Windows due to the usage of the System.IO.Ports library. \n\n## NuGet\n\nYou can use this library as a [Nuget](https://www.nuget.org/packages/svelde-nmea-parser) Package:\n\n    Install-Package svelde-nmea-parser -Version 1.0.5\n\n## Tested devices\n\nThe following devices are used to test the parser:\n\n* BEITIAN USB GNSS GPS Receiver BN-85U (U-Blox UBX-M8030)\n* Webio GRB-288 Bluetooth GPS mouse \n* GSpace GS-R238 GPS mouse (SiRFstarIII)\n\n*Note: If you want to have your GPS device tested and officially supported here, please send me a DM on github or twitter @svelde*\n\n## Azure IoT Edge\n\nThis code is used in the Azure IoT Edge module [iot-edge-nmea](https://github.com/sandervandevelde/iot-edge-nmea).\n\nYou can check it out on [Docker Hub](https://cloud.docker.com/repository/docker/svelde/iot-edge-nmea).\n\n## Contribute\n\nThe code of this logic is [open source](https://github.com/sandervandevelde/nmeaparser) and licenced under the MIT license.\n\nWant to contribute? Throw me a pull request....\n\nWant to know more about me? Check out [my blog](https://blog.vandevelde-online.com).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsandervandevelde%2Fnmeaparser","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsandervandevelde%2Fnmeaparser","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsandervandevelde%2Fnmeaparser/lists"}