View  Edit  Attributes  History  Attach  Print  Search

ACCUEIL | ARDUINO > S'INSTALLER > DEBUTER > APPROFONDIR | PROCESSING | MECATRONIQUE | MATERIEL | OUTILS | TESTS | Plus...|
Python > Shell > ATELIERS Python + Qt > PyQt apps > PyQt+Arduino | Mes Robots | RepRap | Mes lib'Arduino | Mes shields Arduino | Mes distros | Les Mini-PC |
ATELIERS ARDUINO| VIDEOS | COMPRENDRE | REFERENCES | CODER | TECHNIQUE | GNU/LINUX | LIENS | Rien à voir |

Outils > 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