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

📄 nmea_8c-source.html

📁 avr cpu 库源代码 对avr单片机编程很有帮助
💻 HTML
📖 第 1 页 / 共 2 页
字号:
00130             foundpacket = NMEA_GPGGA;00131         }00132         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(!strncmp(NmeaPacket, <span class="stringliteral">"GPVTG"</span>, 5))00133         {00134             <span class="comment">// process packet of this type</span>00135             nmeaProcessGPVTG(NmeaPacket);00136             <span class="comment">// report packet type</span>00137             foundpacket = NMEA_GPVTG;00138         }00139     }00140     <span class="keywordflow">else</span> <span class="keywordflow">if</span>(rxBuffer-&gt;<a class="code" href="structstruct__cBuffer.html#o2">datalength</a> &gt;= rxBuffer-&gt;<a class="code" href="structstruct__cBuffer.html#o1">size</a>)00141     {00142         <span class="comment">// if we found no packet, and the buffer is full</span>00143         <span class="comment">// we're logjammed, flush entire buffer</span>00144         <a class="code" href="group__buffer.html#ga7">bufferFlush</a>(rxBuffer);00145     }00146     <span class="keywordflow">return</span> foundpacket;00147 }00148 00149 <span class="keywordtype">void</span> nmeaProcessGPGGA(u08* packet)00150 {00151     u08 i;00152     <span class="keywordtype">char</span>* endptr;00153     <span class="keywordtype">double</span> degrees, minutesfrac;00154 00155 <span class="preprocessor">    #ifdef NMEA_DEBUG_GGA</span>00156 <span class="preprocessor"></span>    rprintf(<span class="stringliteral">"NMEA: "</span>);00157     <a class="code" href="group__rprintf.html#ga2">rprintfStr</a>(packet);00158     <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00159 <span class="preprocessor">    #endif</span>00160 <span class="preprocessor"></span>00161     <span class="comment">// start parsing just after "GPGGA,"</span>00162     i = 6;00163     <span class="comment">// attempt to reject empty packets right away</span>00164     <span class="keywordflow">if</span>(packet[i]==<span class="charliteral">','</span> &amp;&amp; packet[i+1]==<span class="charliteral">','</span>)00165         <span class="keywordflow">return</span>;00166 00167     <span class="comment">// get UTC time [hhmmss.sss]</span>00168     GpsInfo.PosLLA.TimeOfFix.f = strtod(&amp;packet[i], &amp;endptr);00169     <span class="keywordflow">while</span>(packet[i++] != <span class="charliteral">','</span>);              <span class="comment">// next field: latitude</span>00170     00171     <span class="comment">// get latitude [ddmm.mmmmm]</span>00172     GpsInfo.PosLLA.lat.f = strtod(&amp;packet[i], &amp;endptr);00173     <span class="comment">// convert to pure degrees [dd.dddd] format</span>00174     minutesfrac = modf(GpsInfo.PosLLA.lat.f/100, &amp;degrees);00175     GpsInfo.PosLLA.lat.f = degrees + (minutesfrac*100)/60;00176     <span class="comment">// convert to radians</span>00177     GpsInfo.PosLLA.lat.f *= (M_PI/180);00178     <span class="keywordflow">while</span>(packet[i++] != <span class="charliteral">','</span>);              <span class="comment">// next field: N/S indicator</span>00179     00180     <span class="comment">// correct latitute for N/S</span>00181     <span class="keywordflow">if</span>(packet[i] == <span class="charliteral">'S'</span>) GpsInfo.PosLLA.lat.f = -GpsInfo.PosLLA.lat.f;00182     <span class="keywordflow">while</span>(packet[i++] != <span class="charliteral">','</span>);              <span class="comment">// next field: longitude</span>00183     00184     <span class="comment">// get longitude [ddmm.mmmmm]</span>00185     GpsInfo.PosLLA.lon.f = strtod(&amp;packet[i], &amp;endptr);00186     <span class="comment">// convert to pure degrees [dd.dddd] format</span>00187     minutesfrac = modf(GpsInfo.PosLLA.lon.f/100, &amp;degrees);00188     GpsInfo.PosLLA.lon.f = degrees + (minutesfrac*100)/60;00189     <span class="comment">// convert to radians</span>00190     GpsInfo.PosLLA.lon.f *= (M_PI/180);00191     <span class="keywordflow">while</span>(packet[i++] != <span class="charliteral">','</span>);              <span class="comment">// next field: E/W indicator</span>00192 00193     <span class="comment">// correct latitute for E/W</span>00194     <span class="keywordflow">if</span>(packet[i] == <span class="charliteral">'W'</span>) GpsInfo.PosLLA.lon.f = -GpsInfo.PosLLA.lon.f;00195     <span class="keywordflow">while</span>(packet[i++] != <span class="charliteral">','</span>);              <span class="comment">// next field: position fix status</span>00196 00197     <span class="comment">// position fix status</span>00198     <span class="comment">// 0 = Invalid, 1 = Valid SPS, 2 = Valid DGPS, 3 = Valid PPS</span>00199     <span class="comment">// check for good position fix</span>00200     <span class="keywordflow">if</span>( (packet[i] != <span class="charliteral">'0'</span>) &amp;&amp; (packet[i] != <span class="charliteral">','</span>) )00201         GpsInfo.PosLLA.updates++;00202     <span class="keywordflow">while</span>(packet[i++] != <span class="charliteral">','</span>);              <span class="comment">// next field: satellites used</span>00203     00204     <span class="comment">// get number of satellites used in GPS solution</span>00205     GpsInfo.numSVs = atoi(&amp;packet[i]);00206     <span class="keywordflow">while</span>(packet[i++] != <span class="charliteral">','</span>);              <span class="comment">// next field: HDOP (horizontal dilution of precision)</span>00207     <span class="keywordflow">while</span>(packet[i++] != <span class="charliteral">','</span>);              <span class="comment">// next field: altitude</span>00208     00209     <span class="comment">// get altitude (in meters)</span>00210     GpsInfo.PosLLA.alt.f = strtod(&amp;packet[i], &amp;endptr);00211 00212     <span class="keywordflow">while</span>(packet[i++] != <span class="charliteral">','</span>);              <span class="comment">// next field: altitude units, always 'M'</span>00213     <span class="keywordflow">while</span>(packet[i++] != <span class="charliteral">','</span>);              <span class="comment">// next field: geoid seperation</span>00214     <span class="keywordflow">while</span>(packet[i++] != <span class="charliteral">','</span>);              <span class="comment">// next field: seperation units</span>00215     <span class="keywordflow">while</span>(packet[i++] != <span class="charliteral">','</span>);              <span class="comment">// next field: DGPS age</span>00216     <span class="keywordflow">while</span>(packet[i++] != <span class="charliteral">','</span>);              <span class="comment">// next field: DGPS station ID</span>00217     <span class="keywordflow">while</span>(packet[i++] != <span class="charliteral">'*'</span>);              <span class="comment">// next field: checksum</span>00218 }00219 00220 <span class="keywordtype">void</span> nmeaProcessGPVTG(u08* packet)00221 {00222     u08 i;00223     <span class="keywordtype">char</span>* endptr;00224 00225 <span class="preprocessor">    #ifdef NMEA_DEBUG_VTG</span>00226 <span class="preprocessor"></span>    rprintf(<span class="stringliteral">"NMEA: "</span>);00227     <a class="code" href="group__rprintf.html#ga2">rprintfStr</a>(packet);00228     <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00229 <span class="preprocessor">    #endif</span>00230 <span class="preprocessor"></span>00231     <span class="comment">// start parsing just after "GPVTG,"</span>00232     i = 6;00233     <span class="comment">// attempt to reject empty packets right away</span>00234     <span class="keywordflow">if</span>(packet[i]==<span class="charliteral">','</span> &amp;&amp; packet[i+1]==<span class="charliteral">','</span>)00235         <span class="keywordflow">return</span>;00236 00237     <span class="comment">// get course (true north ref) in degrees [ddd.dd]</span>00238     GpsInfo.VelHS.heading.f = strtod(&amp;packet[i], &amp;endptr);00239     <span class="keywordflow">while</span>(packet[i++] != <span class="charliteral">','</span>);              <span class="comment">// next field: 'T'</span>00240     <span class="keywordflow">while</span>(packet[i++] != <span class="charliteral">','</span>);              <span class="comment">// next field: course (magnetic north)</span>00241 00242     <span class="comment">// get course (magnetic north ref) in degrees [ddd.dd]</span>00243     <span class="comment">//GpsInfo.VelHS.heading.f = strtod(&amp;packet[i], &amp;endptr);</span>00244     <span class="keywordflow">while</span>(packet[i++] != <span class="charliteral">','</span>);              <span class="comment">// next field: 'M'</span>00245     <span class="keywordflow">while</span>(packet[i++] != <span class="charliteral">','</span>);              <span class="comment">// next field: speed (knots)</span>00246 00247     <span class="comment">// get speed in knots</span>00248     <span class="comment">//GpsInfo.VelHS.speed.f = strtod(&amp;packet[i], &amp;endptr);</span>00249     <span class="keywordflow">while</span>(packet[i++] != <span class="charliteral">','</span>);              <span class="comment">// next field: 'N'</span>00250     <span class="keywordflow">while</span>(packet[i++] != <span class="charliteral">','</span>);              <span class="comment">// next field: speed (km/h)</span>00251 00252     <span class="comment">// get speed in km/h</span>00253     GpsInfo.VelHS.speed.f = strtod(&amp;packet[i], &amp;endptr);00254     <span class="keywordflow">while</span>(packet[i++] != <span class="charliteral">','</span>);              <span class="comment">// next field: 'K'</span>00255     <span class="keywordflow">while</span>(packet[i++] != <span class="charliteral">'*'</span>);              <span class="comment">// next field: checksum</span>00256 00257     GpsInfo.VelHS.updates++;00258 }00259 </pre></div><hr size="1"><address style="align: right;"><small>Generated on Sun Oct 29 03:41:07 2006 for Procyon AVRlib by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.2 </small></address></body></html>

⌨️ 快捷键说明

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