Traiter une trame

ronandmcdonald Messages postés 24 Date d'inscription dimanche 8 février 2004 Statut Membre Dernière intervention 25 mars 2005 - 14 mars 2004 à 16:49
ronandmcdonald Messages postés 24 Date d'inscription dimanche 8 février 2004 Statut Membre Dernière intervention 25 mars 2005 - 18 mars 2004 à 17:20
Je voudrais savoir comment faire pour traiter une trame :
Nottemment comment séparer les informations de cette dernière.
Je pensse utiliser les vecteurs mais j'avoue que je nage un peu...
Si qlq pouvait m'aider siou plait. :shy)

Et le programmeur créa...
Amen...

6 réponses

ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
14 mars 2004 à 18:33
qu'entend tu par trame ?, si c'est une chaîne de caractères, utilise un pointeur pour parcourir la chaîne et repérer les séparateurs pour extraire des champs.

met un exemple de trame et de résultat escompté , ce sera plus facile de t'aider.
0
ronandmcdonald Messages postés 24 Date d'inscription dimanche 8 février 2004 Statut Membre Dernière intervention 25 mars 2005
17 mars 2004 à 08:29
En fait je dois traiter une trame APRS.
Exemple de trame :
!4112.28N/08403.57W-Test 001234 qui veut dire : Station en temps réel positionnée 41°12".28 Nord 84°03".57 Ouest avec un commentaire "Test 001234".
Merci de m'aider!

Et le programmeur créa...
Amen...
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
17 mars 2004 à 13:18
dans ce cas il te faut 3 pointeurs sur ta chaîne (ou une copie car elle va être modifiée)

char szTrame[64] : ta trame

char* szLat;
char* szLon;
char* szComment;

szLat = strchr(szTrame, '!'); *szLat++='\0';
szLon = strchr(szLat, '/'); *szLon++='\0';
szComment = strche(szLon, '-'); *szComment++='\0';

après cela, tu aura :
szLat = "4112.28N";
szLon = "08403.57W";
szComment = "Test 001234";

ensuite, il te suffit de faire la conversion chaîne->coordonnée.
(si tu veux plus d'aide sur ce point demande-le)
0
ronandmcdonald Messages postés 24 Date d'inscription dimanche 8 février 2004 Statut Membre Dernière intervention 25 mars 2005
17 mars 2004 à 16:46
Ah ben ouais si tu peux m'aider un peu plus je reffuse pas :big)

En tout k merci!!

Et le programmeur créa...
Amen...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
18 mars 2004 à 12:59
Et voila :

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <memory.h>
#include <string.h>

struct TData
{
int latDeg;
float latMin;
char  latSens;
float lat;
int lonDeg;
float lonMin;
char lonSens;
float lon;
char szComment[64];
};

int main(int argc, char* argv[])
{
// trame initiale
const char szTrame[] = "!4112.28N/08403.57W-Test 001234";

// recopie
char szCopy[64];
strcpy(szCopy, szTrame);

// extraction des champs
char *szLat, *szLon, *szComment;szLat strchr(szCopy, '!'); *szLat++ '\0';szLon strchr(szLat, '/'); *szLon++ '\0';szComment strchr(szLon, '-'); *szComment++ '\0';

TData data;

// latitude
data.latDeg = (szLat[0]-'0')*10+(szLat[1]-'0');
data.latMin = (szLat[2]-'0')*10+(szLat[3]-'0')+(szLat[5]-'0')*0.1f+(szLat[6]-'0')*0.01f;
data.latSens = szLat[7];
data.lat = data.latDeg+data.latMin/60;if(data.latSens 'S') data.lat -data.lat;

// longitude
data.lonDeg = (szLon[0]-'0')*100+(szLon[1]-'0')*10+(szLon[2]-'0');
data.lonMin = (szLon[3]-'0')*10+(szLon[4]-'0')+(szLon[6]-'0')*0.1f+(szLon[7]-'0')*0.01f;
data.lonSens = szLon[8];
data.lon = data.lonDeg+data.lonMin/60;if(data.lonSens 'W') data.lon -data.lon;

// commentaire
strcpy(data.szComment, szComment);

return 0;
}

0
ronandmcdonald Messages postés 24 Date d'inscription dimanche 8 février 2004 Statut Membre Dernière intervention 25 mars 2005
18 mars 2004 à 17:20
Franchement c sympa de ta part!!
Je te remercie bien!
@+
;)

Et le programmeur créa...
Amen...
0
Rejoignez-nous