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
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 """ 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()
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
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()
Partager