<?xml-stylesheet type="text/xsl" href="https://community.element14.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>C++ parser library for NMEA GPS data - pt. 1: ideas, concepts, early design</title><link>/technologies/embedded/b/blog/posts/c-parser-library-for-nmea---pt-1-ideas-concepts-early-design</link><description>I wrote an OO driver for Teseo-LIV3 GPS module (as used in shabaz &amp;#39; GPS / Galileo / BeiDou / GLONASS receiver ). It knows how to retrieve info from the GPS, in NMEA format. In this series, I&amp;#39;m designing an OO lib to parse the ...</description><dc:language>en-US</dc:language><generator>Telligent Community 12</generator><item><title>RE: C++ parser library for NMEA GPS data - pt. 1: ideas, concepts, early design</title><link>https://community.element14.com/technologies/embedded/b/blog/posts/c-parser-library-for-nmea---pt-1-ideas-concepts-early-design</link><pubDate>Tue, 06 Aug 2024 21:33:45 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:265dc6ce-c703-43b4-aaf6-53c111760146</guid><dc:creator>Jan Cumps</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;When integrating with a GPS, this could be the output of data collected by this parser:&lt;/p&gt;
&lt;pre&gt;+-- start --+&lt;br /&gt;GLL source: gps. lat: 50.863354 lon: 7.042959, time: 21:33:19.000.&lt;br /&gt;GSV source: gps.&lt;br /&gt;sat prn: 24, elev: 88, azim: 83, snr: 18.&lt;br /&gt;sat prn: 12, elev: 51, azim: 224, snr: 18.&lt;br /&gt;sat prn: 19, elev: 41, azim: 83, snr: 18.&lt;br /&gt;sat prn: 15, elev: 30, azim: 176, snr: 33.&lt;br /&gt;GSV source: gps.&lt;br /&gt;sat prn: 17, elev: 29, azim: 52, snr: 0.&lt;br /&gt;sat prn: 10, elev: 23, azim: 293, snr: 18.&lt;br /&gt;sat prn: 22, elev: 21, azim: 55, snr: 0.&lt;br /&gt;sat prn: 25, elev: 18, azim: 235, snr: 0.&lt;br /&gt;GSV source: gps.&lt;br /&gt;sat prn: 23, elev: 18, azim: 254, snr: 0.&lt;br /&gt;sat prn: 32, elev: 16, azim: 317, snr: 0.&lt;br /&gt;sat prn: 13, elev: 11, azim: 148, snr: 14.&lt;br /&gt;sat prn: 49, elev: 31, azim: 179, snr: 35.&lt;br /&gt;GSV source: glonass.&lt;br /&gt;sat prn: 73, elev: 69, azim: 294, snr: 0.&lt;br /&gt;sat prn: 71, elev: 58, azim: 252, snr: 0.&lt;br /&gt;sat prn: 80, elev: 43, azim: 53, snr: 17.&lt;br /&gt;sat prn: 72, elev: 33, azim: 323, snr: 0.&lt;br /&gt;GSV source: glonass.&lt;br /&gt;sat prn: 70, elev: 26, azim: 193, snr: 30.&lt;br /&gt;sat prn: 74, elev: 27, azim: 261, snr: 0.&lt;br /&gt;sat prn: 82, elev: 24, azim: 80, snr: 0.&lt;br /&gt;sat prn: 81, elev: 21, azim: 29, snr: 0.&lt;br /&gt;GSV source: glonass.&lt;br /&gt;sat prn: 83, elev: 6, azim: 118, snr: 0.&lt;br /&gt;sat prn: 0, elev: 0, azim: 0, snr: 0.&lt;br /&gt;sat prn: 0, elev: 0, azim: 0, snr: 0.&lt;br /&gt;sat prn: 0, elev: 0, azim: 0, snr: 0.&lt;br /&gt;RMC source: gps. lat: 50.863354 lon: 7.042968. 21:33:20.000. 2024-08-06.&lt;br /&gt;+-- end --+&lt;/pre&gt;
&lt;p&gt;The output above is generated by a Teseo connected to a Pico via I2C, running this example: &lt;a href="https://github.com/jancumps/pico_gps_teseo/blob/7aa9c509de7ac34749df427e6a78523f2eca32fe/teseo_with_nmea_parse.cpp" rel="noopener noreferrer nofollow" target="_blank" data-e14adj="t"&gt;https://github.com/jancumps/pico_gps_teseo/blob/7aa9c509de7ac34749df427e6a78523f2eca32fe/teseo_with_nmea_parse.cpp&lt;/a&gt;&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=28213&amp;AppID=7&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item><item><title>RE: C++ parser library for NMEA GPS data - pt. 1: ideas, concepts, early design</title><link>https://community.element14.com/technologies/embedded/b/blog/posts/c-parser-library-for-nmea---pt-1-ideas-concepts-early-design</link><pubDate>Thu, 01 Aug 2024 14:09:39 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:265dc6ce-c703-43b4-aaf6-53c111760146</guid><dc:creator>Jan Cumps</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;The initial version had custom classes to hold dates and times. I&amp;#39;ve replaced those by these standard C++ classes:&lt;/p&gt;
&lt;p&gt;std::chrono::year_month_day&lt;/p&gt;
&lt;p&gt;std::chrono::hh_mm_ss&lt;br /&gt;(it can actually hold subseconds)&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;You may find remnants of the original date and time_ms in the text of the posts.&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=28213&amp;AppID=7&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item><item><title>RE: C++ parser library for NMEA GPS data - pt. 1: ideas, concepts, early design</title><link>https://community.element14.com/technologies/embedded/b/blog/posts/c-parser-library-for-nmea---pt-1-ideas-concepts-early-design</link><pubDate>Wed, 31 Jul 2024 18:40:46 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:265dc6ce-c703-43b4-aaf6-53c111760146</guid><dc:creator>Jan Cumps</dc:creator><slash:comments>2</slash:comments><description>&lt;p&gt;The attached archive contains the library&amp;nbsp;sources&amp;nbsp;and a test bed. It&amp;#39;s a&amp;nbsp;zipped Eclipse project.&lt;br /&gt;Only files needed in a project are nmea.h and nmea.cpp.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Your toolchain must support - and needs to be set minimal to - the C++ standard -std=c++23&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;As soon as I&amp;#39;ve figured out how to make both Teseo GPS library and this NMEA parser library available on GitHub,&lt;br /&gt;in a way that makes it easy to use them separate or together,&lt;br /&gt;I&amp;#39;ll create the repository online.&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=28213&amp;AppID=7&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item><item><title>RE: C++ parser library for NMEA GPS data - pt. 1: ideas, concepts, early design</title><link>https://community.element14.com/technologies/embedded/b/blog/posts/c-parser-library-for-nmea---pt-1-ideas-concepts-early-design</link><pubDate>Tue, 30 Jul 2024 23:20:27 GMT</pubDate><guid isPermaLink="false">93d5dcb4-84c2-446f-b2cb-99731719e767:265dc6ce-c703-43b4-aaf6-53c111760146</guid><dc:creator>shabaz</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;That looks great! And clean having the separate classes per important NMEA message type.&lt;/p&gt;
&lt;p&gt;Personally I much prefer this&amp;nbsp;technique compared to the existing libraries I&amp;#39;ve seen. It seems very straightforward from the user perspective, to have the objects populate from the&amp;nbsp;reply content as you&amp;#39;ve shown. Also, another benefit from the separation that you did; it is possible for users to test their projects in different countries virtually : ) or replay scenarios, by populating the reply strings themselves, i.e. as test vectors.&lt;/p&gt;&lt;img src="https://community.element14.com/aggbug?PostID=28213&amp;AppID=7&amp;AppType=Weblog&amp;ContentType=0" width="1" height="1"&gt;</description></item></channel></rss>