⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nmea_8c-source.html

📁 ATMEL的AVR单片机库文件
💻 HTML
📖 第 1 页 / 共 2 页
字号:
00108 00109     <span class="keywordflow">if</span>(foundpacket)00110     {00111         <span class="comment">// check message type and process appropriately</span>00112         <span class="keywordflow">if</span>(!strncmp(NmeaPacket, <span class="stringliteral">"GPGGA"</span>, 5))00113             nmeaProcessGPGGA(NmeaPacket);00114         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(!strncmp(NmeaPacket, <span class="stringliteral">"GPVTG"</span>, 5))00115             nmeaProcessGPVTG(NmeaPacket);00116     }00117     <span class="keywordflow">return</span> foundpacket;00118 }00119 00120 <span class="keywordtype">void</span> nmeaProcessGPGGA(u08* packet)00121 {00122     u08 i;00123     <span class="keywordtype">char</span>* endptr;00124 00125     <span class="keywordflow">if</span>(debug)00126     {00127         rprintf(<span class="stringliteral">"NMEA: "</span>);00128         <a class="code" href="rprintf_8h.html#a8">rprintfStr</a>(packet);00129         <a class="code" href="rprintf_8c.html#a9">rprintfCRLF</a>();00130     }00131 00132     <span class="comment">// start parsing just after "GPGGA,"</span>00133     i = 6;00134 00135     <span class="comment">// get UTC time [hhmmss.sss]</span>00136     GpsInfo.PosLLA.TimeOfFix.f = strtod(&amp;packet[i], &amp;endptr);00137     <span class="keywordflow">while</span>(packet[i++] != <span class="charliteral">','</span>);              <span class="comment">// next field: latitude</span>00138     00139     <span class="comment">// get latitude [ddmm.mmmmm]</span>00140     GpsInfo.PosLLA.lat.f = strtod(&amp;packet[i], &amp;endptr);00141     <span class="keywordflow">while</span>(packet[i++] != <span class="charliteral">','</span>);              <span class="comment">// next field: N/S indicator</span>00142     00143     <span class="comment">// correct latitute for N/S</span>00144     <span class="keywordflow">if</span>(packet[i] == <span class="charliteral">'S'</span>) GpsInfo.PosLLA.lat.f = -GpsInfo.PosLLA.lat.f;00145     <span class="keywordflow">while</span>(packet[i++] != <span class="charliteral">','</span>);              <span class="comment">// next field: longitude</span>00146     00147     <span class="comment">// get longitude [ddmm.mmmmm]</span>00148     GpsInfo.PosLLA.lon.f = strtod(&amp;packet[i], &amp;endptr);00149     <span class="keywordflow">while</span>(packet[i++] != <span class="charliteral">','</span>);              <span class="comment">// next field: E/W indicator</span>00150 00151     <span class="comment">// correct latitute for E/W</span>00152     <span class="keywordflow">if</span>(packet[i] == <span class="charliteral">'W'</span>) GpsInfo.PosLLA.lon.f = -GpsInfo.PosLLA.lon.f;00153     <span class="keywordflow">while</span>(packet[i++] != <span class="charliteral">','</span>);              <span class="comment">// next field: position fix status</span>00154 00155     <span class="comment">// position fix status</span>00156     <span class="comment">// 0 = Invalid, 1 = Valid SPS, 2 = Valid DGPS, 3 = Valid PPS</span>00157     <span class="comment">// check for good position fix</span>00158     <span class="keywordflow">if</span>( (packet[i] != <span class="charliteral">'0'</span>) &amp;&amp; (packet[i] != <span class="charliteral">','</span>) )00159         GpsInfo.PosLLA.updates++;00160     <span class="keywordflow">while</span>(packet[i++] != <span class="charliteral">','</span>);              <span class="comment">// next field: satellites used</span>00161     00162     <span class="comment">// get number of satellites used in GPS solution</span>00163     GpsInfo.numSVs = atoi(&amp;packet[i]);00164     <span class="keywordflow">while</span>(packet[i++] != <span class="charliteral">','</span>);              <span class="comment">// next field: HDOP (horizontal dilution of precision)</span>00165     <span class="keywordflow">while</span>(packet[i++] != <span class="charliteral">','</span>);              <span class="comment">// next field: altitude</span>00166     00167     <span class="comment">// get altitude (in meters)</span>00168     GpsInfo.PosLLA.alt.f = strtod(&amp;packet[i], &amp;endptr);00169 00170     <span class="keywordflow">while</span>(packet[i++] != <span class="charliteral">','</span>);              <span class="comment">// next field: altitude units, always 'M'</span>00171     <span class="keywordflow">while</span>(packet[i++] != <span class="charliteral">','</span>);              <span class="comment">// next field: geoid seperation</span>00172     <span class="keywordflow">while</span>(packet[i++] != <span class="charliteral">','</span>);              <span class="comment">// next field: seperation units</span>00173     <span class="keywordflow">while</span>(packet[i++] != <span class="charliteral">','</span>);              <span class="comment">// next field: DGPS age</span>00174     <span class="keywordflow">while</span>(packet[i++] != <span class="charliteral">','</span>);              <span class="comment">// next field: DGPS station ID</span>00175     <span class="keywordflow">while</span>(packet[i++] != <span class="charliteral">'*'</span>);              <span class="comment">// next field: checksum</span>00176 }00177 00178 <span class="keywordtype">void</span> nmeaProcessGPVTG(u08* packet)00179 {00180     u08 i;00181     <span class="keywordtype">char</span>* endptr;00182 00183     <span class="keywordflow">if</span>(debug)00184     {00185         rprintf(<span class="stringliteral">"NMEA: "</span>);00186         <a class="code" href="rprintf_8h.html#a8">rprintfStr</a>(packet);00187         <a class="code" href="rprintf_8c.html#a9">rprintfCRLF</a>();00188     }00189 00190     <span class="comment">// start parsing just after "GPVTG,"</span>00191     i = 6;00192     <span class="comment">// get course (true north ref) in degrees [ddd.dd]</span>00193     GpsInfo.VelHS.heading.f = strtod(&amp;packet[i], &amp;endptr);00194     <span class="keywordflow">while</span>(packet[i++] != <span class="charliteral">','</span>);              <span class="comment">// next field: 'T'</span>00195     <span class="keywordflow">while</span>(packet[i++] != <span class="charliteral">','</span>);              <span class="comment">// next field: course (magnetic north)</span>00196 00197     <span class="comment">// get course (magnetic north ref) in degrees [ddd.dd]</span>00198     <span class="comment">//GpsInfo.VelHS.heading.f = strtod(&amp;packet[i], &amp;endptr);</span>00199     <span class="keywordflow">while</span>(packet[i++] != <span class="charliteral">','</span>);              <span class="comment">// next field: 'M'</span>00200     <span class="keywordflow">while</span>(packet[i++] != <span class="charliteral">','</span>);              <span class="comment">// next field: speed (knots)</span>00201 00202     <span class="comment">// get speed in knots</span>00203     <span class="comment">//GpsInfo.VelHS.speed.f = strtod(&amp;packet[i], &amp;endptr);</span>00204     <span class="keywordflow">while</span>(packet[i++] != <span class="charliteral">','</span>);              <span class="comment">// next field: 'N'</span>00205     <span class="keywordflow">while</span>(packet[i++] != <span class="charliteral">','</span>);              <span class="comment">// next field: speed (km/h)</span>00206 00207     <span class="comment">// get speed in km/h</span>00208     GpsInfo.VelHS.speed.f = strtod(&amp;packet[i], &amp;endptr);00209     <span class="keywordflow">while</span>(packet[i++] != <span class="charliteral">','</span>);              <span class="comment">// next field: 'K'</span>00210     <span class="keywordflow">while</span>(packet[i++] != <span class="charliteral">'*'</span>);              <span class="comment">// next field: checksum</span>00211 00212     GpsInfo.VelHS.updates++;00213 }00214 </pre></div><hr size="1"><address style="align: right;"><small>Generated on Fri Oct 15 03:50:22 2004 for Procyon AVRlib by<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border=0 > </a>1.3.6 </small></address></body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -