| Versions |
 |
|
| Author |
Topic  |
|
admin_0
1 Posts |
Posted - 14 avr. 2005 : 16:08:17
|
Salut Vmatias , excuse moi de te déranger, voila je suis en 1ère année de DUT GTR et je bosse sur un projet qui utilise un GPS et je dois récupérer les différentes trames du GPS et faut que je les renvois sur un afficheur LCD.Je voudrais savoir si tu pourrais pas m'envoyer s'il te plait ton code source si tu le partage ??? merci!
Mickael |
 |
|
|
vmatias
France
385 Posts |
Posted - 21 avr. 2005 : 10:43:44
|
Bonjour à tous, J'ai été absent, c'est pour cette raison que je n'ai pas répondu. Me voilà de retour ........ Je tenterais de répondre à vos questions ce week-end.
Bien à vous !!! |
 |
|
|
vmatias
France
385 Posts |
Posted - 21 avr. 2005 : 15:35:40
|
Salut LeForm, Le seul code existant est celui qui ce trouve ici. Il a été crée spécialement pour GPSPassion (Ascorbik) dans un but pédagogique. Recopie-le, apporte-lui les modifications dont tu as besoin. Si tu bloques sur un problème particulier, fait-le savoir. Bon courage Victor |
 |
|
|
vmatias
France
385 Posts |
Posted - 22 avr. 2005 : 14:20:39
|
Salut BobbyTrez
Je suis désolé de t'annoncer que tu n'as pas recopié le code dan son intégralité.
1 - Je ne sais pas pourquoi tu as ajouté la ligne "for (i=0;i<32;i++) tmpbuff[i] = 'b';" 2 - Je ne sais pas ce que tu cherches à faire avec. Elle fausse tous les appels à la fonction "atoi" ou "atof"
3 - Cette ligne ne correspond pas non plus "fprintf(fp3," Longitude %4c-%2d-%2.3f %1.1s\n",.....)"
Si vous ne comprenez pas ce que vous faites, ne le faites pas !!!!. Petite précision. Ce forum n'est pas un forum où l'on apprend à écrire des programmes en C ou C++, pour cela dirigez-vous vers des forums spécialisés dans ce domaine.
Amicalement Victor
|
 |
|
|
vmatias
France
385 Posts |
Posted - 22 avr. 2005 : 17:19:54
|
Salut BobbyTrez
Le code de décodage de la longiture corrigé et testé les "memset(tmpbuff,0x00,32);" sont obligatoires pour les "atoi" et "atof"
// Décodage Longiture ici memset(tmpbuff,0x00,32); debut = strstr(debut,",")+1; // On cherche la première "," med = strstr(debut,"."); // On cherche le point "." fin = strstr(debut,","); // On cherche la suivante "," memcpy(&tmpbuff,debut,3); // Récupération des degés maLongiture.degre = atoi(tmpbuff); // On converti en numérique
memset(tmpbuff,0x00,32); memcpy(&tmpbuff,debut+3,2); // Idem pour les minutes maLongiture.minut = atoi(tmpbuff); // ASCII => Numérique
memset(tmpbuff,0x00,32); l = (fin - med); // Nombre de décimales pour les secondes (en degés) memcpy(&tmpbuff,debut+5,l); // On les récupère maLongiture.secon = (atof(tmpbuff))*60.0; // ASCII => Numérique => en secondes debut = strstr(debut,",")+1; // On cherche la première "," // On affiche le tout (y compris E/W) printf("Longitude %3d %2d %2.3f %1.1s\n",maLongiture.degre,maLongiture.minut,maLongiture.secon,debut); |
 |
|
|
naynai
France
3 Posts |
Posted - 09 mars 2006 : 16:31:14
|
Salut, j'ai utilisé les lignes de decodage des trames que vous avez donné, elle decode bien les données GPS. Je pense avoir compris le decodage mais savoir si ce que j'ai compris et bon. Je m'explique: la ligne: debut = strstr(debut,",")+1; // On cherche la première "," on recherche la premier virgule dans la chaine de caractère "debut" que l'on mets dans "debut".
J'aimerai savoir à quoi sert le tmpbuff exactement à par rapport à memset et au atoi et atof.
J'ai aussi un autre probleme, ma longitude ne reste jamais fixe, cela peut-il venir du programme ou du gps? |
 |
|
|
vmatias
France
385 Posts |
Posted - 11 mars 2006 : 20:14:04
|
quote: Merci d'éviter de quoter le message juste au dessus
Salut ! Désolé de répondre si tardivement. Je tenterais de t'aider. Mais, il y a toujours un mais. Une petite précision s'impose, ici ce n'est pas un cours de programmation en langage C. Je parts du principe que ceux qui y postent et qui utilisent les programmes de cette rubrique ont un minimum de connaissances dans ce domaine. Dans le cas contraire cette rubrique doit être dans un forum de programmation et non pas de GPS. Que pensent les modérateurs ?
Dans ton cas : «tmpbuff» est une variable temporaire utilisée lors de la conversion des chaînes de caractères en nombres (car les données reçues au formaet NMEA sont en ASCII). «memset» sert à remplir cette variable d’octets à «0»(zéro) car les fonctions «atoi» et «atof» convertissent une chaîne de caractères qui doit se terminer par un «0» ou si dès que le caractère suivant n’est pas un nombre. Comme en langage C les variables ne sont pas initialisées à la création il faut le faire manuellement, sinon on risque d’y rencontrer n’importe quoi. Le fait que les valeurs des coordonnées changent sans arrêt vient du manque de précision lors des calculs.
Voilà Bonne programmation (sans rancune)
Vic Laguna II + Carminat |
 |
|
|
jlb
France
29368 Posts |
|
|
vmatias
France
385 Posts |
Posted - 11 mars 2006 : 22:22:36
|
Continuez à poser vos questions. Si elles font partie de mon domaine de connaissances (et de GPS), j'y réponderais avec plaisir. Amicalement |
 |
|
|
etxegarraia
France
14893 Posts |
|
|
naynai
France
3 Posts |
Posted - 12 mars 2006 : 12:12:57
|
Pour ma part ce n'étais qu'une confirmation de ce que je pensais, car je programme en C depuis plusieur année. Et Merci de votre aide.
|
 |
|
|
vmatias
France
385 Posts |
Posted - 13 mars 2006 : 09:52:54
|
quote: EDIT
Bonjour, Cela ne me dérange pas de répondre (au contraire). Je voulais tout simplement recadrer le sujet. Les questions qui apparaissent le plus souvent concernent essentiellement les «près requis» du langage. Essayons tous de rester au cœur du sujet, le GPS. Une remarque : C’est avec nostalgie que je constate que cette rubrique évolue lentement pour ne pas dire du tout.
Vic Laguna II + Carminat |
 |
|
|
naynai
France
3 Posts |
Posted - 13 mars 2006 : 16:35:13
|
quote: Originally posted by vmatias
Le fait que les valeurs des coordonnées changent sans arrêt vient du manque de précision lors des calculs.
il n'y a pas un moyen d'ameliorer la precision des calculs car lors que je recois les données sur ma fenêtre dos, en l'espace de 2 second j'ai un changement de 5 à 20 degree sur ma longitude alors que sur la latitude je n'ai pas le probléme. |
Edited by - naynai on 13 mars 2006 16:36:03 |
 |
|
|
vmatias
France
385 Posts |
Posted - 15 mars 2006 : 15:24:05
|
quote: Quotes inutiles édités
Une légère explication : Lorsque que ton système GPS reçoit les signaux des satellites, il effectue une série de calculs qui lui permettent de déterminer longitude/latitude. Les signaux émis à destination du grand publique sont volontairement imprécis de ce fait entre deux lectures les valeurs obtenues ne sont pas les mêmes. Viennent s’ajouter : - La qualité des signaux reçus, - La sensibilité du capteur GPS - Le nombre de satellites observés - La qualité do logiciel embarqué. - Etc.
Vic Laguna II + Carminat |
 |
|
|
admin_0
1 Posts |
Posted - 18 avr. 2006 : 23:23:02
|
salut je suis a peu pres dans le meme pb!! en fait je cherche un code en C qui permet au rabbit(microcontroleur) de demander au GPS( EM 406) d envoyer ses données, et ainsi decoder la trame envoyer sur le port serie du rabbit par le GPS et l afficher Merci de m aider au plus vite. je suis dans de sals draps...... |
 |
|
Topic  |
|
|
|
| This page was generated in 0,92 seconds. |
 |
|