Bonjour a tous !
J'aurais besoin de votre aide svp.
Sur ma carte psoc, je recois bien ma latitude et longitude, mais celles ci, dont en NMEA. J'aimerai donc les convertir en degrés.
J'ai trouvé la formule pour convertir, mais impossible de savoir comment programmer tout ca.. ( en langage C )
Voici mon code ci dessous. En vous remerciant.
Exemple de conversion: 32 18.0489 N = 32degrées + 18.0489/60= 32.300815 N
64 47.5086 >= 64degrées + 47.5086/60= 64.79181 W
Code:#include <project.h> void main() { unsigned char compteur,caractere; /* Place your initialization/startup code here (e.g. MyInst_Start()) */ UART_1_Start();//demarrage UART LCD_Char_1_Start();//demarrage LCD LCD_Char_1_Position(0,0); LCD_Char_1_ClearDisplay(); int tableau; char entete[6],trame[50]; /* CYGlobalIntEnable; */ /* Uncomment this line to enable global interrupts. */ for(;;) { caractere=UART_1_GetChar(); if (caractere=='$') { for (tableau=0; tableau<5; tableau ++) { caractere=UART_1_GetChar(); while(caractere==0) { caractere=UART_1_GetChar(); } entete[tableau]=caractere; } entete[tableau]='\0'; if(strcmp(entete,"GPGGA")==0) { for (tableau=0; tableau<50; tableau ++) { caractere=UART_1_GetChar(); while(caractere==0) { caractere=UART_1_GetChar(); } trame[tableau]=caractere; } trame[tableau]='\0'; } int inc = 0; char longi [15],lati[15]; while(inc <11) { longi[inc]=trame[inc+24]; lati[inc]=trame[inc+12]; inc++; } longi[inc]=trame[inc+24]; longi[inc+1]='\0'; lati[inc]='\0'; LCD_Char_1_Position(1,0); LCD_Char_1_PrintString(longi); LCD_Char_1_Position(0,0); LCD_Char_1_PrintString(lati); } // Opération coordonnées 1234,56 = 12+(34,56)/60 } } /* [] END OF FILE */
-----