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