Bonjour à toutes et à tous,
Si je viens vers vous , c'est pour demander humblement de l'aide.
En effet, voilà 1 semaine que je planche sur un projet en C...et malgré tous mes efforts je n'avance pas.
La date limite approche, il me reste moins d'une mois pour terminer mon travail, et je suis très loin du but.
Vous trouvez ci-dessous mon projet.
Je vous remercie d'avance
1 Cahier des charges : Température sondes oregon
Les sondes de température/humidité oregon permettent une acquisition des données et un envoi de ces données sous forme structurée au format json.
On se propose de réaliser une application permettant de gérer ces informations c'est-à-dire de les afficher, les extraire, les supprimer. Par donnée on entend des valeurs sous le format suivant : date heure, température, humidité, numéro de sonde
Exemple du fichier de données au format json :
{"datetime": "2017-04-29 20:26:55", "temperature": "24.600000", "humidity": "46.000000", "channel": "3" }
{"datetime": "2017-04-29 20:28:22", "temperature": "24.500000", "humidity": "46.500000", "channel": "1" }
Un fichier brut est donc constitué d'une suite de lignes de données de ce type. Le numéro de channel représente en réalité le numéro du capteur (de 1 à 9)
Projet oregon
2 Spécifications fonctionnelles
2.1 L'interface Homme machine
Lorsque l'on édite le fichier de données, on peut constater que :
Il est constitué de données horodatées qui sont issues de capteurs différents (1,2 ou 3). La transmission étant réalisée sous forme hertzienne, certaines données ne sont pas valides et dans ce cas le numéro de capteur vaut alors -1.
Le nombre de données par période est variable (au maximum toutes les 30 secondes)
L’application devra permettre à l'utilisateur de :
1. Saisir le nom du fichier de données à ouvrir
2. Afficher un résumé des informations disponibles dans ce fichier sous la forme :
Capteur 1 : du 2017-04-29 20:26:55 au 2017-04-29 23:29:55 Capteur 3 : du 2017-04-29 12:00:55 au 2017-04-29 23:29:55
3. Extraire les données d'un capteur particulier dans un fichier séparé dont le nom sera de la forme datedebut_heuredebut_datefin_heurefin_captN.json avec
datedebut correspondant à la première date de ce capteur dans le fichier datefin correspondant à la dernière date de ce capteur dans le fichier
N correspondant au numéro de capteur
4. Normaliser les données extraites d'un capteur : En effet le nombre de données par heure est variable (de 0 à plus de 7000). La température et l'humidité variant lentement, on ne désire conserver que une seule donnée par intervalle de 5mn. On aura donc au plus 12 données par heure. Le nom du fichier généré sera de la forme datedebut_heuredebut_datefin_heurefin_captN_Normalise.json
5. Afficher par journée les min max de température
Ces fonctionnalités peuvent être sélectionnées par un menu via une interface homme machine
en mode texte dont l’apparence sera la suivante :
Projet temperature 2
2.2 Fonction principale
L’application est de type guidée par menu, c’est à dire qu’après avoir effectué une fonction on retourne à la saisie d’une nouvelle commande (afficher par exemple).
Application temperature
Sélectionner le fichier à ouvrir
Afficher le résumé du fichier
Extraire les données d'un capteur Normaliser les données d'un capteur Afficher les min/max de chaque journée Sortir
tapez 1 tapez 2 tapez 3 tapez 4 tapez 5 tapez 6
Tant que l’utilisateur n’a pas tapé la touche correspondant à la commande Sortir , alors on traite la touche qui est appuyée :
Si c’est la touche 1, alors on appelle la fonction ouvrir
Si c’est la touche 2, alors on appelle la fonction resume
Si c’est la touche 3, alors on appelle la fonction extraire
Si c’est la touche 4, alors on appelle la fonction normaliser Si c’est la touche 5, alors on appelle la fonction minmax Si c’est la touche 6, alors on sort de l'application
Sinon, on affiche le message « commande inconnue » 2.3 Fonction ouvrir( )
Objectif : on désire choisir un fichier a traiter
Cette fonction peut etre appellée par le choix 1.
Cependant, dans le cas ou l'utilisateur commencerait par le choix 2 à5, il sera nécessaire de demander à l'utilisateur de choisir un fichier à traiter.
L'utilisateur saisit le nom du fichier à ouvrir, un message est affiché si le fichier n'existe pas.
2.4 Fonction resume( )
Objectif : On veut informer l'utilisateur sur le contenu du fichier ouvert, notamment sur les dates de debut et de fin de l'acquisition par capteur.
Exemple d'affichage produit :
Le fichier jsonfile.txt contient des informations sur : Capteur 1 : du 2017-04-29 20:26:55 au 2017-04-29 23:29:55
...
Capteur 5 : du 2017-04-29 12:00:55 au 2017-04-29 23:29:55
Remarque : Si l'utilisateur n'est pas encore passé par le choix 1, l'application doit alors demander à l'utilisateur quel est le fichier à ouvrir.
jj sekowski Projet temperature 3
2.5 Fonction extraire ( )
Objectif : on extrait les données d'un capteur particulier dans un nouveau fichier. L'application nous demande le numéro de capteur N dont on désire extraire les données.
Si des données sont disponibles, l'application écrira les données dans un fichier dont le nom sera de la forme datedebut_heuredebut_datefin_heurefin_captN.json avec
datedebut correspondant à la première date de ce capteur dans le fichier datefin correspondant à la dernière date de ce capteur dans le fichier
N correspondant au numéro de capteur
Le fichier ne contiendra donc que les données d'un capteur particulier
2.6 Fonction normaliser( )
Objectif : On désire normaliser le fichier, c'est-à-dire ne conserver que une seule donnée par période de 5mn.
L'application nous demande le numéro de capteur N dont on désire extraire les données.
Les données seront écrite dans un fichier dont le nom sera de la forme datedebut_heuredebut_datefin_heurefin_captN_normalise.json
2.7 Fonction minmax( )
Objectif : on affiche par journée, les valeurs min et mas de température pour un capteur
donné.
L'application nous demande quel capteur est à afficher. On affiche alors
2015-04-28 capeur 3 temperature min : 24.600000, max = 25.600000 2015-04-29 capeur 3 temperature min : 22.600000, max = 26.600000
3 Evaluation du projet
La note attribuée sera constituée à partir des éléments suivants :
25% pour l'analyse, le paramétrage des 5 fonctions et le respect de la qualité : commentaire, lisibilité, simplicité.
50% pour le fonctionnement de chaque fonctionnalité de 1 à 5
25%pour la participation et l'implication personnelle
Le programme ne devra pas avoir de variables globales
Projet temperature 4
Problématiques à résoudre :
exercice sur deplacement fichier : expliquez le fonctionnement
exercice sur extraction de temperature : temperature :26.0001 vers une var float
soit la chaine char tab[] = "temperature :26.0001" ;
soit la variable réelle char temp = 0.0;
en utilisant les fonctions strstr(char *source, char *val); qui cherche val dans source et float atof(char * chaine); qui convertit chaine (qui ne doit contenir que des digit 0 à 9 et le point) en une valeur float,
ecrire le programme de conversion de tab vers la variable temp; (temp devra donc contenir 26.001)
Partager