IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Enregistrer données port série dans un fichier ?


Sujet :

Python

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2008
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 19
    Points : 10
    Points
    10
    Par défaut Enregistrer données port série dans un fichier ?
    Bonjour,
    Voici mon projet : Je possède un petit arduino ( carte électronique de développement ) qui envoi des données via la liaison série sur un port usb ( des valeurs numériques de tensions ) le seul problème c'est que je ne sais pas comment faire pour que le PC enregistre chaque donné sur le PC dans un fichier texte ou .csv ( pour pouvoir exploiter avec excel ).
    Je possède windows seven pro.

    Savez vous si je peux le faire simplement avec python ou je dois me tourner vers d'autres langages ? ( java ? C ? VB ? ... )

    Je vous remercie du temps que vous me consacrerez

  2. #2
    Membre expérimenté
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    946
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 946
    Points : 1 351
    Points
    1 351
    Par défaut
    Salut,

    bien sûr que tu peux le faire en python. Tu ouvres le port com vers ton montage, tu ouvres un fichier texte en sortie et tu fais une boucle infinie. Dans cette boucle, tu lis les données reçues, tu les envoies dans le fichier et tu fais un time.sleep pour que l'os puissse se consacrer aux autres processus qui tournent sur ta machine. Quelquechose comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    import serial
    import time
    import sys
     
    uart = serial.Serial(port=8)
    fp = open("output.csv", "a")
     
    while True:
        recorded = 0
        while uart.inWaiting() !=0:
            byte = ord(uart.read(1))
            now = time.localtime()
            timestamp = "\"%04u/%02u/%02u %02u:%02u:%02u\""%(now.tm_year, now.tm_mon, now.tm_mday, now.tm_hour, now.tm_min, now.tm_sec)
            fp.write("%s:%u\n"%(timestamp, byte))
            sys.stdout.write("%02x "%byte)
            recorded = 1
        if recorded:
            fp.flush()
        time.sleep(0.02)

  3. #3
    Membre à l'essai
    Inscrit en
    Décembre 2008
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    Merci bien je vais utiliser le bout de code que tu m'as donné mais j'ai un problème finalement ça ne va pas car je génère une ligne toutes les 10ms autant dire que ça se remplie vite et la mesure s'enregistre pendant 10min au moins ( le fichier texte ou csv fera 60 000 lignes ) et finalement je ne peux pas tracer la courbe avec excel ( trop de lignes .. )
    Connaitriez vous un logiciel qui pourrait tracer ma courbe ? ( l'allonger au maximum pour avoir une minute voir moins sur la largeur de l'écran )
    Je vous remercie

  4. #4
    Membre expérimenté
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    946
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 946
    Points : 1 351
    Points
    1 351
    Par défaut
    Matplotlib est la référence du traçé de courbes. Il faut d'abord télécharger et installer le module.

Discussions similaires

  1. Réponses: 5
    Dernier message: 25/04/2006, 09h33
  2. enregistrer une liste chainée dans un fichier?
    Par ALF-Teams dans le forum C
    Réponses: 7
    Dernier message: 08/03/2006, 18h42
  3. Réponses: 12
    Dernier message: 27/01/2006, 11h07
  4. Recevoir données port série
    Par Vodkha dans le forum Composants VCL
    Réponses: 3
    Dernier message: 01/09/2005, 11h45
  5. Réponses: 10
    Dernier message: 16/12/2004, 15h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo