Rev 568 | Rev 586 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 568 | Rev 576 | ||
---|---|---|---|
Line 724... | Line 724... | ||
724 | 724 | ||
725 | //$GPGGA,HHMMSS.ss,BBBB.BBBB,b,LLLLL.LLLL,l,Q,NN,D.D,H.H,h,G.G,g,A.A,RRRR*PP |
725 | //$GPGGA,HHMMSS.ss,BBBB.BBBB,b,LLLLL.LLLL,l,Q,NN,D.D,H.H,h,G.G,g,A.A,RRRR*PP |
726 | //$GPGGA,191410,4735.5634,N,00739.3538,E,1,04,4.4,351.5,M,48.0,M,,*45 |
726 | //$GPGGA,191410,4735.5634,N,00739.3538,E,1,04,4.4,351.5,M,48.0,M,,*45 |
727 | //$GPGGA,092120.20,,,,,0,00,99.99,,,,,,*6C |
727 | //$GPGGA,092120.20,,,,,0,00,99.99,,,,,,*6C |
- | 728 | //http://www.kowoma.de/gps/zusatzerklaerungen/NMEA.htm |
|
728 | //http://www.kowoma.de/gps/zusatzerklaerungen/NMEA.htm |
729 | |
729 | void CreateNmeaGGA(void) |
730 | void CreateNmeaGGA(void) |
730 | { |
731 | { |
731 | u8 array[200], i = 0, crc = 0, x; |
732 | u8 array[200], i = 0, crc = 0, x; |
Line 748... | Line 749... | ||
748 | i += sprintf(&array[i],"%02d",(s16)tmp1); |
749 | i += sprintf(&array[i],"%02d",(s16)tmp1); |
Line 749... | Line 750... | ||
749 | 750 | ||
750 | tmp1 = abs(GPSData.Position.Latitude)%10000000L; |
751 | tmp1 = abs(GPSData.Position.Latitude)%10000000L; |
751 | tmp1 *= 6; // in Minuten |
752 | tmp1 *= 6; // in Minuten |
752 | tmp2 = tmp1 / 1000000L; |
753 | tmp2 = tmp1 / 1000000L; |
753 | i += sprintf(&array[i],"%02d", (s16)tmp2); |
754 | i += sprintf(&array[i],"%02d", (u16)tmp2); |
754 | tmp2 = tmp1 % 1000000L; |
755 | tmp2 = tmp1 % 1000000L; |
755 | tmp2 /= 10; // eine Stelle zu viel |
756 | tmp2 /= 100; // zwei Stellen zu viel |
Line 756... | Line 757... | ||
756 | i += sprintf(&array[i],".%05d,", (s16)tmp2); |
757 | i += sprintf(&array[i],".%04d,", (u16)tmp2); |
757 | 758 | ||
758 | if(GPSData.Position.Latitude >= 0) i += sprintf(&array[i],"N,"); |
759 | if(GPSData.Position.Latitude >= 0) i += sprintf(&array[i],"N,"); |
Line 759... | Line 760... | ||
759 | else i += sprintf(&array[i],"S,"); |
760 | else i += sprintf(&array[i],"S,"); |
760 | // +++++++++++++++++++++++++++++++++++++++++++ |
761 | // +++++++++++++++++++++++++++++++++++++++++++ |
Line 761... | Line 762... | ||
761 | 762 | ||
762 | tmp1 = abs(GPSData.Position.Longitude)/10000000L; |
763 | tmp1 = abs(GPSData.Position.Longitude)/10000000L; |
763 | i += sprintf(&array[i],"%03d", (s16)tmp1); |
764 | i += sprintf(&array[i],"%03d", (u16)tmp1); |
764 | 765 | ||
765 | tmp1 = abs(GPSData.Position.Longitude)%10000000L; |
766 | tmp1 = abs(GPSData.Position.Longitude)%10000000L; |
766 | tmp1 *= 6; // in Minuten |
767 | tmp1 *= 6; // in Minuten |
767 | tmp2 = tmp1 / 1000000L; |
768 | tmp2 = tmp1 / 1000000L; |
Line 768... | Line 769... | ||
768 | i += sprintf(&array[i],"%02d", (s16)tmp2); |
769 | i += sprintf(&array[i],"%02d", (u16)tmp2); |
769 | tmp2 = tmp1 % 1000000L; |
770 | tmp2 = tmp1 % 1000000L; |
770 | tmp2 /= 10; // eine Stelle zu viel |
771 | tmp2 /= 100; // zwei Stellen zu viel |
Line 823... | Line 824... | ||
823 | tmp1 = abs(GPSData.Position.Latitude)%10000000L; |
824 | tmp1 = abs(GPSData.Position.Latitude)%10000000L; |
824 | tmp1 *= 6; // in Minuten |
825 | tmp1 *= 6; // in Minuten |
825 | tmp2 = tmp1 / 1000000L; |
826 | tmp2 = tmp1 / 1000000L; |
826 | i += sprintf(&array[i],"%02d", (s16)tmp2); |
827 | i += sprintf(&array[i],"%02d", (s16)tmp2); |
827 | tmp2 = tmp1 % 1000000L; |
828 | tmp2 = tmp1 % 1000000L; |
828 | tmp2 /= 10; // eine Stelle zu viel |
829 | tmp2 /= 100; // zwei Stellen zu viel |
829 | i += sprintf(&array[i],".%05d,", (s16)tmp2); |
830 | i += sprintf(&array[i],".%04d,", (s16)tmp2); |
830 | if(GPSData.Position.Latitude >= 0) i += sprintf(&array[i],"N,"); |
831 | if(GPSData.Position.Latitude >= 0) i += sprintf(&array[i],"N,"); |
831 | else i += sprintf(&array[i],"S,"); |
832 | else i += sprintf(&array[i],"S,"); |
832 | // +++++++++++++++++++++++++++++++++++++++++++ |
833 | // +++++++++++++++++++++++++++++++++++++++++++ |
833 | tmp1 = abs(GPSData.Position.Longitude)/10000000L; |
834 | tmp1 = abs(GPSData.Position.Longitude)/10000000L; |
834 | i += sprintf(&array[i],"%03d", (s16)tmp1); |
835 | i += sprintf(&array[i],"%03d", (s16)tmp1); |
Line 836... | Line 837... | ||
836 | tmp1 = abs(GPSData.Position.Longitude)%10000000L; |
837 | tmp1 = abs(GPSData.Position.Longitude)%10000000L; |
837 | tmp1 *= 6; // in Minuten |
838 | tmp1 *= 6; // in Minuten |
838 | tmp2 = tmp1 / 1000000L; |
839 | tmp2 = tmp1 / 1000000L; |
839 | i += sprintf(&array[i],"%02d", (s16)tmp2); |
840 | i += sprintf(&array[i],"%02d", (s16)tmp2); |
840 | tmp2 = tmp1 % 1000000L; |
841 | tmp2 = tmp1 % 1000000L; |
841 | tmp2 /= 10; // eine Stelle zu viel |
842 | tmp2 /= 100; // zwei Stellen zu viel |
842 | i += sprintf(&array[i],".%05d,", (s16)tmp2); |
843 | i += sprintf(&array[i],".%04d,", (s16)tmp2); |
843 | if(GPSData.Position.Longitude >= 0) i += sprintf(&array[i],"E,"); |
844 | if(GPSData.Position.Longitude >= 0) i += sprintf(&array[i],"E,"); |
844 | else i += sprintf(&array[i],"W,"); |
845 | else i += sprintf(&array[i],"W,"); |
845 | // +++++++++++++++++++++++++++++++++++++++++++ |
846 | // +++++++++++++++++++++++++++++++++++++++++++ |
846 | tmp_int = GPSData.Speed_Ground; // in cm/sek |
847 | tmp_int = GPSData.Speed_Ground; // in cm/sek |
847 | tmp_int *= 90; |
848 | tmp_int *= 90; |
Line 860... | Line 861... | ||
860 | } |
861 | } |
861 | // +++++++++++++++++++++++++++++++++++++++++++ |
862 | // +++++++++++++++++++++++++++++++++++++++++++ |
862 | i += sprintf(&array[i],"%d.%1d,", abs(GeoMagDec)/10,abs(GeoMagDec)%10); |
863 | i += sprintf(&array[i],"%d.%1d,", abs(GeoMagDec)/10,abs(GeoMagDec)%10); |
863 | if(GeoMagDec < 0) i += sprintf(&array[i], "W,"); else i += sprintf(&array[i], "E,"); |
864 | if(GeoMagDec < 0) i += sprintf(&array[i], "W,"); else i += sprintf(&array[i], "E,"); |
864 | // +++++++++++++++++++++++++++++++++++++++++++ |
865 | // +++++++++++++++++++++++++++++++++++++++++++ |
865 | if(GPSData.Flags & FLAG_DIFFSOLN) i += sprintf(&array[i], "D,"); |
866 | if(GPSData.Flags & FLAG_DIFFSOLN) i += sprintf(&array[i], "D*"); |
866 | else i += sprintf(&array[i], "A,"); |
867 | else i += sprintf(&array[i], "A*"); |
867 | } |
868 | } |
868 | else // kein Satfix |
869 | else // kein Satfix |
869 | { |
870 | { |
870 | i += sprintf(&array[i], "V,,,,,,,,,,N*"); |
871 | i += sprintf(&array[i], "V,,,,,,,,,,N*"); |
871 | } |
872 | } |