Logo Mon Club Elec

Processing : Fichiers : Enregistrer des données à intervalle régulier dans un fichier texte au format CSV

http://web.archive.org/web/20210804223007/https://www.mon-club-elec.fr/pmwiki_mon_club_elec/pmwiki.php?n=MAIN.ArduinoExpertCapteursComplexesDS18B20

Le traitement des données est une tâche importante pour de nombreuses applications. Une des méthodes les plus courantes pour enregistrer des données est le format CSV (Comma Separated Values). Ce format est très pratique car il permet de stocker des données sous forme de tableau, ce qui facilite leur analyse et leur manipulation. Dans ce tutoriel, nous allons voir comment enregistrer des données à intervalle régulier dans un fichier texte au format CSV à l’aide du logiciel Processing.

Processing : Fichiers : Enregistrer des données à intervalle régulier dans un fichier texte au format CSV

Explication

  • Ce programme utilise un objet PrintWriter que l’on initialise avec un fichier existant ce qui va permettre d’ajouter les données au fichier sans l’effacer lors de la création comme le ferait l’instruction createWriter()
  • Un message est écrit dans le fichier à intervalle régulier, posant la base du datalogging avec stockage dans un fichier texte. Le format des données est ici « CSV like » ce qui permet de les utiliser immédiatement dans un tableur par simple copier-coller.

Ressources utiles

  • Aucune

Le programme

// Programme processing
// généré avec le générateur de code Processing
// du site www.mon-club-elec.fr
// par X. HINAULT – tous droits réservés

// Programme écrit le : 7/9/2011.

// ——- Licence du code de ce programme : GPL v3—–
//  This program is free software: you can redistribute it and/or modify
//  it under the terms of the GNU General Public License as published by
//  the Free Software Foundation, either version 3 of the License,
//  or any later version.
//  This program is distributed in the hope that it will be useful,
//  but WITHOUT ANY WARRANTY; without even the implied warranty of
//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//  GNU General Public License for more details.
//  You should have received a copy of the GNU General Public License
//  along with this program.  If not, see <http://www.gnu.org/licenses/>.

/////////////// Description du programme ////////////

// XXXXXXXXXXXXXXXXXXXXXX ENTETE DECLARATIVE XXXXXXXXXXXXXXXXXXXXXX

// inclusion des librairies utilisées

// déclaration objets

//—- pour écriture dans fichier texte
PrintWriter output = null; // initialise un objet PrintWriter pour stocker le flux de donnée à écrire dans le fichier

String cheminAbsoluFichier=« /home/hinault/Bureau/trans/datalog.txt »;
// le fichier doit exister – chemin entier obligatoire

// déclaration variables globales
int second0=second();
// XXXXXXXXXXXXXXXXXXXXXX  Fonction SETUP XXXXXXXXXXXXXXXXXXXXXX

void setup(){ // fonction d’initialisation exécutée 1 fois au démarrage

// — initialisation des objets et fonctionnalités utilisées —

       //—– ouvre le fichier de datalogging texte —
       output=ouvreFichier(cheminAbsoluFichier);   // ouvre le fichier existant dans un PrintWriter
        //le fichier doit exister – chemin entier obligatoire

       output.println(« ———— Debut Nouvel enregistrement ————-« ); // Ajoute la ligne au fichier
       output.print(day()+« / »+month()+« / »+year()+« ; »); //Ecrit la date dans le fichier suivi ;
       output.println(hour()+« : »+minute()+« : »+second()+« ; »); // Ecrit l’heure dans le fichier
       output.println(« ———— Format CSV  ————-« ); // Ajoute la ligne au fichier
       output.println(« Jour/mois/annee; heure:minutes:secondes; valeur; »); // Ajoute la ligne au fichier

} // fin fonction Setup

// XXXXXXXXXXXXXXXXXXXXXX Fonction Draw XXXXXXXXXXXXXXXXXXXX

void  draw() { // fonction exécutée en boucle

       if (second()>second0) { //si une seconde de passée

       second0=second(); //réinitialise second0

       //—– Code type pour datalogging dans fichier texte —

       //Ecriture d’une ligne dans le fichier au format « Jour/mois/annee; heure:minutes:secondes; valeur; »
       output.print(day()+« / »+month()+« / »+year()+« ; »); //Ecrit la date dans le fichier suivi ;
       output.print(hour()+« : »+minute()+« : »+second()+« ; »); // Ecrit l’heure dans le fichier
       output.print(000); // Ecrit la valeur dans le fichier
       output.println(); // Ajoute saut de ligne

       output.flush(); // Ecrit les données du PrintWriter dans le fichier

       } // fin if second()> second0

        // while(true); // stoppe boucle draw

} // fin de la fonction draw()

// XXXXXXXXXXXXXXXXXXXXXX Autres Fonctions XXXXXXXXXXXXXXXXXXXXXX

//—– Fonction ouvre Fichier—

PrintWriter ouvreFichier( String cheminAbsoluFichier) {

// ouvre le fichier existant dans un PrintWriter- le fichier doit exister – chemin entier obligatoire
// adapté de la source suivante : http://processing.org/discourse/yabb2/YaBB.pl?num=1267767630

       PrintWriter pw=null;

       try //obligé ici…
       {
       // ouvre le fichier existant – le fichier doit exister – chemin entier obligatoire
       pw = new PrintWriter(new BufferedWriter(new FileWriter(cheminAbsoluFichier, true))); // true means: « append »
       }

       catch (IOException e)
       {
       // Report problem or handle it
       }

       return (pw); // renvoie l’objet pw

} // fin de ouvreFichier

//XXXXXXXXXXXXXXXXXX Fin du programme XXXXXXXXXXXXXXXXX
 

Noter cet article

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Archive Mon Club Elec

Articles populaires

Newsletter

Inscrivez-vous maintenant et bénéficiez d'un soutien continu pour réaliser vos travaux électriques en toute sécurité.