Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Conversione stringhe Gps

Raccolta di codici sorgenti

Moderatore: Foto UtentePaolino

2
voti

[21] Re: Conversione stringe Gps

Messaggioda Foto UtentePaolino » 9 ago 2012, 7:46

A dire il vero la moltiplicazione per 1000000 io l'avrei eseguita all'inizio, proprio per evitare l'uso dei float.

Paolo.
"Houston, Tranquillity Base here. The Eagle has landed." - Neil A.Armstrong

-------------------------------------------------------------

PIC Experience - http://www.picexperience.it
Avatar utente
Foto UtentePaolino
32,6k 8 12 13
G.Master EY
G.Master EY
 
Messaggi: 4226
Iscritto il: 20 gen 2006, 11:42
Località: Vigevano (PV)

0
voti

[22] Re: Conversione stringe Gps

Messaggioda Foto Utentericello9 » 9 ago 2012, 8:59

Così dovrebbe essere giusto:
Codice: Seleziona tutto
void conversione(void){
                  
unsigned int coordinata[]={1,4,5,4,9,0,2,9,1,7};

unsigned int risultato=0;
unsigned long risultato1=0;
unsigned long risultato2=0;
unsigned long risultato3=0;
unsigned long risultato5=0;
unsigned long parteintera=0;
unsigned long partedecimale=0;
//4549.2917,N
//45 + (49.2917/60)= 45,821528333

risultato=(coordinata[1]*10)+coordinata[2];// -> 45
risultato1=((coordinata[3]*10)+coordinata[4])*10000000;// -> 490000000
risultato2=(coordinata[6]*1000)+(coordinata[7]*100)+(coordinata[8]*10)+(coordinata[9]);// ->2917
risultato3= risultato1+risultato2;// -> 492917000
risultato5= risultato3/60;// -> 8215283
parteintera=(risultato5/10000000)+risultato;// -> 45
partedecimale=risultato5-parteintera;// ->8215283
}


Adesso sto provando ad usare la funzione sprintf() ma non riesco a capire la specifica di conversione che devo usare;
Codice: Seleziona tutto
unsigned int coordinata_finale[10];

sprintf(coordinata_finale,"%s",parteintera);


Dov'è cha sbalgio.
Grazie per l'aiuto.

Marcello.
Avatar utente
Foto Utentericello9
195 1 3 7
Stabilizzato
Stabilizzato
 
Messaggi: 360
Iscritto il: 16 mar 2009, 0:13

2
voti

[23] Re: Conversione stringe Gps

Messaggioda Foto UtentePaolino » 9 ago 2012, 15:15

prova con:
Codice: Seleziona tutto
char *CoordinataFinale;

sprintf(CoordinataFinale,"%02d.%l",ParteIntera, ParteDecimale);


Dovrai mettere i nomi esatti delle variabili, io ho messo ParteIntera e ParteDecimale.

Attenzione: tra %02d e %l c'è un segno di punto (.). Serve per separare parte intera da quella decimale, nella visualizazione, così che hai 45.123456

Ho un dubbio, sul %l... devo controllare la formattazione.

Paolo.
"Houston, Tranquillity Base here. The Eagle has landed." - Neil A.Armstrong

-------------------------------------------------------------

PIC Experience - http://www.picexperience.it
Avatar utente
Foto UtentePaolino
32,6k 8 12 13
G.Master EY
G.Master EY
 
Messaggi: 4226
Iscritto il: 20 gen 2006, 11:42
Località: Vigevano (PV)

0
voti

[24] Re: Conversione stringe Gps

Messaggioda Foto Utentericello9 » 9 ago 2012, 19:53

Ciao, ho provato ad usare la funzione sprintf() come mi hai indicato tu ma non riesco ad interpretare il risultato.
Sto provando con mplab e il debugger MPLAB SIM ma l'array coordinatafinale, composta da 20 caratteri, dopo la funzione
Codice: Seleziona tutto
sprintf(coordinatafinale,"%02d.%l",parteintera, partedecimale);
mi da questo risultato.
Codice: Seleziona tutto
coordinatafinale[0] -> 48
coordinatafinale[1] -> 48
coordinatafinale[2] -> 46
coordinatafinale[3] -> 37
coordinatafinale[4] -> 0
coordinatafinale[5] -> 0
coordinatafinale[6] -> 0
coordinatafinale[8] -> 0
coordinatafinale[9] -> 1
e tutti gli altri a 0.

Questo è il codice completo.
Codice: Seleziona tutto
void conversione(void){
                  
unsigned int coordinata[]={1,4,5,4,9,0,2,9,1,7};
unsigned char coordinatafinale[20];

unsigned int risultato=0;
unsigned long risultato1=0;
unsigned long risultato2=0;
unsigned long risultato3=0;
unsigned long risultato5=0;
unsigned long parteintera=0;
unsigned long partedecimale=0;

risultato=(coordinata[1]*10)+coordinata[2];// -> 45
risultato1=((coordinata[3]*10)+coordinata[4])*10000000;// -> 490000000
risultato2=(coordinata[6]*1000)+(coordinata[7]*100)+(coordinata[8]*10)+(coordinata[9]);// ->2917
risultato3= risultato1+risultato2;// -> 492917000
risultato5= risultato3/60;// -> 8215283
parteintera=(risultato5/10000000)+risultato;// -> 45
partedecimale=risultato5-parteintera;// ->8215283
sprintf(coordinatafinale,"%02d.%l",parteintera, partedecimale);
}


Ti posto l'immagine della schermata :
Immagine

Grazie.
Marcello.
Avatar utente
Foto Utentericello9
195 1 3 7
Stabilizzato
Stabilizzato
 
Messaggi: 360
Iscritto il: 16 mar 2009, 0:13

2
voti

[25] Re: Conversione stringe Gps

Messaggioda Foto UtentePaolino » 9 ago 2012, 20:59

Prova a dichiarare:

Codice: Seleziona tutto
char *coordinatafinale;


Poi riprova e dimmi.

Paolo.
"Houston, Tranquillity Base here. The Eagle has landed." - Neil A.Armstrong

-------------------------------------------------------------

PIC Experience - http://www.picexperience.it
Avatar utente
Foto UtentePaolino
32,6k 8 12 13
G.Master EY
G.Master EY
 
Messaggi: 4226
Iscritto il: 20 gen 2006, 11:42
Località: Vigevano (PV)

0
voti

[26] Re: Conversione stringe Gps

Messaggioda Foto Utentericello9 » 10 ago 2012, 10:56

Ciao, ho provato con la modifica suggerita e il risultato é questo:

Codice: Seleziona tutto
                         Value.        Hex.          Decimal.      Char
coordinatafinale[0] -> 0x3030.      0x3030.      12336.          '00'
coordinatafinale[1] -> 0x252E.      0x252E.       9518.          '%.'
coordinatafinale[2] -> tutto a zero
coordinatafinale[3] -> tutto a zero
coordinatafinale[4] -> 0x0100.       0x0100.      256.             '..'
Tutto il resto a zero...


Non riesco a postarti un'immagine perché sono fuori casa e la connessione internet c'é
l'ho solo sul tablet.

Grazie per l'aiuto.
Marcello
Avatar utente
Foto Utentericello9
195 1 3 7
Stabilizzato
Stabilizzato
 
Messaggi: 360
Iscritto il: 16 mar 2009, 0:13

1
voti

[27] Re: Conversione stringhe Gps

Messaggioda Foto UtentePaolino » 10 ago 2012, 14:15

Mi sono dimenticato di dirti di inserire:

Codice: Seleziona tutto
#include <stdio.h>


Più tardi guardo con calma.

Paolo.
"Houston, Tranquillity Base here. The Eagle has landed." - Neil A.Armstrong

-------------------------------------------------------------

PIC Experience - http://www.picexperience.it
Avatar utente
Foto UtentePaolino
32,6k 8 12 13
G.Master EY
G.Master EY
 
Messaggi: 4226
Iscritto il: 20 gen 2006, 11:42
Località: Vigevano (PV)

0
voti

[28] Re: Conversione stringhe Gps

Messaggioda Foto Utentericello9 » 10 ago 2012, 17:08

Codice: Seleziona tutto
#include <stdio.h>

L'avevo già incluso.

Grazie.
Marcello.
Avatar utente
Foto Utentericello9
195 1 3 7
Stabilizzato
Stabilizzato
 
Messaggi: 360
Iscritto il: 16 mar 2009, 0:13

1
voti

[29] Re: Conversione stringhe Gps

Messaggioda Foto UtentePaolino » 11 ago 2012, 8:55

Allora,
ho simulato con MPLAB C18 ed è venuto fuori qualche cosa di interessante.
Il codice è il seguente:

Codice: Seleziona tutto
unsigned int coordinata[]={1,4,5,4,9,0,2,9,1,7};
char coordinatafinale[20];

unsigned int risultato=0;
unsigned long risultato1=0;
unsigned long risultato2=0;
unsigned long risultato3=0;
unsigned long risultato5=0;
unsigned long int parteintera=0;
unsigned long int partedecimale=0;

risultato=(coordinata[1]*10)+coordinata[2];// -> 45
risultato1=((coordinata[3]*10)+coordinata[4])*10000000;// -> 490000000
risultato2=(coordinata[6]*1000)+(coordinata[7]*100)+(coordinata[8]*10)+(coordinata[9]);// ->2917
risultato3= risultato1+risultato2;// -> 492917000
risultato5= risultato3/60;// -> 8215283
parteintera=(risultato5/10000000)+risultato;// -> 45
partedecimale=risultato5-parteintera;// ->8215283

sprintf(coordinatafinale,"%02d.%04d",(int)parteintera, (unsigned int)(partedecimale/1000));


Quello che ottengo è coordinatafinale = "45.8166"

Ora, la cosa curiosa è che il %l (l= elle) è ben documentato e indica variabili long int o unsigned long int, però sembra non funzionare.

Dimmi se così può andare.

Paolo.
"Houston, Tranquillity Base here. The Eagle has landed." - Neil A.Armstrong

-------------------------------------------------------------

PIC Experience - http://www.picexperience.it
Avatar utente
Foto UtentePaolino
32,6k 8 12 13
G.Master EY
G.Master EY
 
Messaggi: 4226
Iscritto il: 20 gen 2006, 11:42
Località: Vigevano (PV)

0
voti

[30] Re: Conversione stringhe Gps

Messaggioda Foto Utentericello9 » 11 ago 2012, 12:28

Ciao Paolo, ti chiedo l'ennesimo piacere.
Siccome posso navigare solo con il tablet e non é compatibile con flash player non riesco a scorrere la finestra dove mi hai scritto il codice perciò visualizzo solo la prima parte.
Riesci e copiarmi il codice senza peró inserirlo nei tag "code".
Grazie mille per tutto l'aiuto che mi stai dando.

Ciao Marcello.
Avatar utente
Foto Utentericello9
195 1 3 7
Stabilizzato
Stabilizzato
 
Messaggi: 360
Iscritto il: 16 mar 2009, 0:13

PrecedenteProssimo

Torna a Firmware e programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 10 ospiti