|
import serial
|
|
import csv
|
|
import re
|
|
|
|
# Configuration du port série
|
|
port_serie = serial.Serial(port='COM4', baudrate=115200, timeout=1) # Timeout de 1 seconde
|
|
|
|
# Nom du fichier CSV
|
|
csv_file = '/Users/a.imthadulla/Desktop/Punch/UART_data.csv'
|
|
|
|
# Créer et ouvrir le fichier CSV en mode écriture
|
|
with open(csv_file, mode='w', newline='') as file:
|
|
csv_writer = csv.writer(file)
|
|
|
|
# Ajouter une ligne d'en-tête au fichier CSV
|
|
csv_writer.writerow(["Test", "Entrée", "Sortie", "Statut", "Temps (ticks)"])
|
|
|
|
print("Lecture des données UART... Appuyez sur Ctrl+C pour arrêter.")
|
|
|
|
while True:
|
|
try:
|
|
# Lire une ligne complète depuis le port série
|
|
line = port_serie.readline().decode('utf-8').strip()
|
|
|
|
# Vérifier si la ligne correspond au format attendu
|
|
match = re.match(r"Test (\d+): Entrée: ([\d\s]+)-> Sortie: ([\d\s]+)-> (\w+) \| Temps: (\d+) ticks", line)
|
|
if match:
|
|
# Extraire les groupes correspondants
|
|
test_number = int(match.group(1)) # Numéro du test
|
|
input_vector = match.group(2).strip() # Vecteur d'entrée (en chaîne)
|
|
output_vector = match.group(3).strip() # Vecteur de sortie (en chaîne)
|
|
status = match.group(4) # Statut (Bon ou Échoué)
|
|
time_ticks = int(match.group(5)) # Temps en ticks
|
|
|
|
# Afficher les données extraites
|
|
print(f"Test: {test_number}, Entrée: {input_vector}, Sortie: {output_vector}, Statut: {status}, Temps: {time_ticks} ticks")
|
|
|
|
# Écrire les données dans le fichier CSV
|
|
csv_writer.writerow([test_number, input_vector, output_vector, status, time_ticks])
|
|
except KeyboardInterrupt:
|
|
print("\nArrêt du script.")
|
|
break
|
|
except Exception as e:
|
|
print(f"Erreur : {e}")
|
|
|
|
# Fermer le port série
|
|
port_serie.close()
|
|
print("Port série fermé.")
|