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 :

Aide Programme Python pour lancer d'autres programmes


Sujet :

Python

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 9
    Points : 7
    Points
    7
    Par défaut Aide Programme Python pour lancer d'autres programmes
    Bonjour,

    Voilà je viens à votre aide car je ne trouve pas d'explications précises sur le net qui fasse ce que je souhaiterais et étant débutant Python, je ne suis pas sur à 100% de ce que je vais faire.

    Voila je bosse sur un système embarqué qui comprend une Arduino et ses capteurs et une raspberry pi. J'ai crée un petit script Python qui récupère sur le port série les infos d'arduino et les enregistre dans un fichier txt.

    J'ai également un script Python qui va reprendre mon fichier et le traiter pour me le mettre en format CSV souhaité.

    Mon problème est que je voudrais créer un programme Python qui dit quel script lancé et quand selon ce qu'il recevra par une antenne radio xbee.

    C'est à dire que le programme d'acquisition devrait pouvoir tourner sans soucis, mais que le programme englobant écoute en permanence pour voir si un ordre a été reçu et auquel cas arrêter le programme et lancer le suivant.

    Je me suis renseigné du côté des threads mais je pense que cela soit un peu lourd au premier abords. Je pensais plutôt utilisé une commande de type

    importsubprocess

    subprocess.call("start python prog2.py")
    et utiliser des signaux pour arrêter le script.

    Seulement voilà je n'ai pas trouvé de tutos développés sur l'utilisation des signaux et comment les utiliser entre programmes.

    Voici mon code pour copié sur la carte SD

    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
    20
    21
    22
    """ Module de communication serial"""
    import serial
    import time
     
     
    def lireOrdre()
        """Fonction Permettant de lire sur le port série
        et d'afficher a chaque fois qu'il  reçoit quelque chose
        """
        ser=serial.Serial('/dev/ttyACM0',115200,timeout=1)
        time.sleep(1)
     
        logfile=open('LogFile.txt','a')
     
        while 1:
            line=ser.readline()
            a="%s,%s"%(line,"\n")
            print (a)
            logfile.write(a)
            logfile.flush()
        logfile.close()
        ser.close()
    et le code pour traiter les données

    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
    20
    21
    22
    23
    24
    """ Module de copie csv"""
    import serial
    import time
     
    def Traiter()
        source=open("LogFile.txt","r")
        destination=open("LogExploitable.txt",'a')
     
        while source.readline()!="":
            line=source.readline()
            pos1=line.find('ledebut')
            pos2=line.find('lafin')
            pos3=line.find('ledebut2')
            pos4=line.find('lafin2')
            unesouschaine=line[pos1+5:pos2]
            uneautre=line[pos3+7:pos4]
            a="%s,%s,%s,%s"%(unesouschaine,";",uneautre,"\n")
            print (a)
            destination.write(a)
            destination.flush()
        destination.close()
     
     
        source.close()
    Voilà ce que j'ai et ça me fait bien le taf, j'aimerais juste des petits éclaircissements sur comment faire mon programme qui lance l'un ou l'autre et qui interromp selon la commande que j'enverraisJe vous remercie d'avance pour ceux qui prendront le temps de me lire et de me répondre

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Citation Envoyé par GuillaumeRosa Voir le message
    Je me suis renseigné du côté des threads mais je pense que cela soit un peu lourd au premier abords. Je pensais plutôt utilisé une commande de type subprocess.call("start python prog2.py")
    ...
    Seulement voilà je n'ai pas trouvé de tutos développés sur l'utilisation des signaux et comment les utiliser entre programmes
    subprocess.Popen vous retourne un objet qui a une méthode .terminate(): pas besoin de passer par des signaux.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    D'accord, mais ce terminate peut donc être appelé par le premier programme ? Faut il faire une méthode associer dans le programme ?
    Car lorsque je vais lancer le terminate, ça va kill le processus instantanément ? Car vu que j'écris dans le fichier, j'aurais aimer effectuer sa fermeture avant d'arrêter le programme.

    Ou alors il n'y a pas besoin de faire de fermeture de fichier dans ces cas là ?

    En tout cas merci de ta réponse rapide !

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par GuillaumeRosa Voir le message
    Ou alors il n'y a pas besoin de faire de fermeture de fichier dans ces cas là ?
    S'il n'y a que çà qui vous inquiète, vous pourriez écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
       while True
            line=ser.readline()
            with open('LogFile.txt','a') as f:
                   print (a, file=f)
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Ok je m'en vais essayer avec cela ! Et si ça ne marche pas/ne me conviens pas, je passerais avec du thread.

    Bonne journée et encore merci !

Discussions similaires

  1. Réponses: 2
    Dernier message: 28/11/2014, 21h21
  2. lancer un autre programme.
    Par lilington dans le forum Débuter
    Réponses: 7
    Dernier message: 30/09/2011, 19h35
  3. [Système] syntaxe pour lancer un autre programme
    Par mioke dans le forum Langage
    Réponses: 3
    Dernier message: 28/05/2008, 11h08
  4. Réponses: 5
    Dernier message: 04/02/2008, 18h13

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