69 lines
2.1 KiB
Python
69 lines
2.1 KiB
Python
#!/usr/bin/python3
|
|
# -*- coding: UTF8 -*-
|
|
|
|
# Reception de données depuis un arduino via port série
|
|
|
|
version = "0.1"
|
|
|
|
#Configuration du port série
|
|
port_serie = "/dev/ttyACM1"
|
|
#port_serie_alt = "/dev/ttyACM1"
|
|
|
|
baud_rate = 115200
|
|
|
|
#############
|
|
import serial
|
|
from pprint import pprint
|
|
|
|
str_line = [] #une ligne de donnée lue sur le port série et prétraitée
|
|
data = dict() #une donnée d'un capteur
|
|
data_package = dict() #un paquet de donnée à un moment
|
|
data_set = dict() #ensemble des paquets de données
|
|
|
|
with serial.Serial(port_serie, baud_rate) as comm: #, timeout = 0
|
|
|
|
print("Initialization du microcontroleur en cours...")
|
|
|
|
while True:
|
|
line = comm.readline()
|
|
if line == b'###Init_end###\r\n' :
|
|
break
|
|
else:
|
|
print(".")
|
|
|
|
while True:
|
|
line = comm.readline()
|
|
if line == b'###Data_start###\r\n' :
|
|
break
|
|
else:
|
|
print("En attente d'un nouveau paquet de données...")
|
|
|
|
while True:
|
|
line = comm.readline()
|
|
if line == b'###Data_start###\r\n' :
|
|
print("Nouveau paquet de données !")
|
|
#break
|
|
elif line == b'###Data_end###\r\n' :
|
|
print("Fin du paquet de données !")
|
|
else:
|
|
#Nettoyage des caractères spéciaux inutile (retour chariot...) et
|
|
# conversion en liste de chaînes de caractères
|
|
str_line = line.decode("ascii").strip().split('\t')
|
|
#Mise en tableau de données
|
|
data['type'] = str_line[0].strip()
|
|
data['sensor'] = str_line[1].strip()
|
|
data['value'] = str_line[2].strip()
|
|
if len(str_line) > 3 and str_line[3].strip() != "-":
|
|
data['unit'] = str_line[3].strip()
|
|
else:
|
|
data['unit'] = None
|
|
|
|
if len(str_line) > 4:
|
|
data['comment'] = str_line[4]
|
|
else:
|
|
data['comment'] = None
|
|
|
|
data_package[data['type'] + "_" + data['sensor']] = data
|
|
data = {}
|
|
|
|
pprint(data_package) |