Désencapsulation de trames Météo

Signaler
Messages postés
8
Date d'inscription
jeudi 3 mars 2005
Statut
Membre
Dernière intervention
19 mai 2005
-
Messages postés
1
Date d'inscription
vendredi 6 juin 2008
Statut
Membre
Dernière intervention
15 janvier 2009
-
URGENT !!!!!!!!!!!!!!!
Bonjour à tous,

Voilà j'ai commencé mon projet de BTS IRIS et celui-ci consiste à récuperer
des trames météo grâca à un port série RS232.
J'ai réussi à établir la liaison RS232 ( ouverture,ecriture,lecture,fermeture).

Maintenant, il me reste à désencapsuler chaque données métorologiques se
trouvant dans les trames.

Je voudrais savoir, quelles fonctions faut-il utilisées pour ce genre de trames ?
Sur le site aucune personne n'a ce genre de code à proposer.
Il me reste qu'à esperer que l'un d'entre vous puisse m'aiguiller.

Merci d'avance,
Cordialement,

Ruben

7 réponses

Messages postés
92
Date d'inscription
mardi 25 février 2003
Statut
Membre
Dernière intervention
15 mai 2006

heu précise ton probleme, di nous si tu programme en c ou c++,

et je voi pas trop ou est le pb, tu recoi des infos que tu range ds une variable je suppose.

Si tes données sont en binnaire, bein, pr les récupéré, tu fai comme en
cours de logique: des ET des OR (pour les masques) et des décalage a
droite ou a gauche, je pense que c'est es principaux outils.

Maintenant si c'est des chaine de caractere que tu recoi, c'est un peu
plus simple, tu utilise les fonction de string.h et ca ira tou seul
Messages postés
8
Date d'inscription
jeudi 3 mars 2005
Statut
Membre
Dernière intervention
19 mai 2005

Je code en C++
Je recois des trames météo de protocole WMR918 (station météo WMR918 ONCORE) qui sont envoyés par chaque capteurs ( capteur pluie, vent,
température,...).
Mon problème est tout simple.
Je voudrais savoir comment on fait pour prendre les données utiles dans ces
trames, les convertir et les mettre dans un tableau.
Le protocole de cs trames sont spécifique à la station météo WMR918.

Quelles fonctions utilise t-on ?

Je ne vois pas quels éléments je pourrais vous donner .

Merci d'avance de votre aide.
Messages postés
8
Date d'inscription
jeudi 3 mars 2005
Statut
Membre
Dernière intervention
19 mai 2005

URGENTISME !!!!!!!!!!
Détaille en plus:

- trames qu'il faut convertir d'ascii en héxa.
- 9 trames différentes au total identifiable sur le sixième octet.
0: vent 1: pluie 3:temperature, etc...

-chaque trame a la même en-tête 'FF FF'.

je pense qu'il faudrait que je mette le trame dans un tableau mais que c'est pas comment m'y prendre pour séparer chaque trame et y mettre des condition ainsi que des pointeurs

chaque trame trames contiennent des données qui doivent etre extraite séparément.

Ex: trame pluie

FF FF 00 04 45 03 51 00 00 00 58 BG

FF FF : en-tête 00: Identifiant capteur (ici pluie)
04: état batterie 45: direction du vent
etc....

Les données peuvent être soit de type float soit de type int.

Merci d'avance pour ce qui peuvent m'aiguiller...
Messages postés
1
Date d'inscription
mardi 15 novembre 2005
Statut
Membre
Dernière intervention
22 février 2006

Bonjour, j'ai la meme chose a effectuer mais je ne vois pas quelle fonction utiliser pour recuperer les informartions codes en hexadecimal. Si quelqu'un peut m'aider, sa serait cool. J'ai mon premier oral dans 2 semaines
Messages postés
3
Date d'inscription
dimanche 18 décembre 2005
Statut
Membre
Dernière intervention
14 mai 2006

Je suis egalement en BTS IRIS, mon projet est le même que toi. J'ai effectuer la liaison entre la station et le PC.
Tout d'abord j'ai utilisé un Thread d'écoute permettant de ne pas bouffer toute la memoire vive car je lis continuellement sur la RS242. J'effectu donc un partage de memoire. Dans ce Thread, je devrais recevoir une trame, la decoder, la moyenner avec la precedente et la renger dans une structure.

Tout d'abord,
Il faut lire la trame, non comme un tout mais plutot comme une serie d'informations qu'il faut extraire.

FF FF 00 04 45 03 51 00 00 00 58 BG

Tu dois d'abord extraire l'entete pour aprés reccuperer le type de la trame (pluie ici).
Tu (nous) vas donc devoir apeller la fonction readfile pour lire la trame.

Pour degager l'entete, il faut declarer un tabeleau de 3 octets (1 pour FF, 1 pour FF et 1 pour le type)

void CRS232::LireXOctets(3 ,EnTete ) //3 est le nombre d'octet à lire. EnTete est du type char

{
unsigned long OctetsLus;
ReadFile( hCom , Entete , 3 , &OctetsLus , NULL );
};

puis tantque le premier ou le deuxieme octet de EnTete ne sont pas egals à FF tu fait un decalage à gauche.
En sortie de la boucle tu te retrouves donc avec EnTete qui est egale à : "FF FF 00" où 00 est le type.

while( ( EnTete[0] != 0xFF ) || ( EnTete[1] != 0xFF ) )
{
EnTete[0] = EnTete[1];
EnTete[1] = EnTete[2];
ObjetCRS232.LireXOctets( 1 , &EnTete[2] );
};
Selon le type (EnTete[2]) tu va relire X octets sur le port serie. (le nombre d'octets est differents suivant le type de la trame)
Ensuite il suffit de ranger la "vraie" trame (donc sans l'entete FF FF et sans le type) dans SA structure appropriée.
Créé une structure pour chaque type de trame.

ex structure trame pluie :

struct Rain
{
bool RateOver;
bool TotalOver;
bool YesterdayOver;
unsigned int CurrentRainRate;
float TotalRainFall;
unsigned int YesterdayRainFall;
struct Horloge TotalStartDate;
};

Ce n'est qu'une idée parmis tant d'autres...mais je n'est trouvé que celle ci :p
Le code est en cours d'ellaboration.
En tout cas j'espere t'avoir aidé!!
Pour plus d'info contact moi : chooloveloo@hotmail.fr
Messages postés
1
Date d'inscription
vendredi 6 juin 2008
Statut
Membre
Dernière intervention
15 janvier 2009

Bonjour,
Alors suite a ce poste très enrichissant et étant donnée que je me confronte au même problème que citer précédemment j'aimerais rouvrir ce topic pour avoir plus de détails. En effet on trouve très peut de données ou de documentation sur la station météo WMR 918 sur internet c'est pourquoi j'aimerais avoir des nouvelles et des détails supplémentaire sur la structure des trames, etc... Voilà si les personnes ayant déjà réussi à créer des programmes pour cette station qu'il mette leurs codes.

Merci d'avance pour votre aide vous pouvez me contacter directement par mail à l'adresse suivante :

[mailto:laisse_betom@hotmail.com laisse_betom@hotmail.com]
Messages postés
933
Date d'inscription
dimanche 1 avril 2001
Statut
Modérateur
Dernière intervention
9 janvier 2012
2
Bonjour,

Si tu ne donne aucune précision je ne vois pas comment on pourrait t'aider.

@+
Arnotic,
Admin CS, MVP Visual C++