J'utilise Python 3.5 et j'ai un peu de mal à essayer d'imprimer mes données en direct sur un CSV pour le post-traitement. J'utilise un Arduino pour recueillir des données à partir d'une jauge de contrainte et d'un capteur photo pour une mise à jour en direct de Dyno pour l'équipe de mon école. Jusqu'à présent, j'ai réussi à imprimer la dernière ligne de données en format CSV, mais ce n'est pas suffisant.Écrire des données en temps réel d'un Arduino à un CSV en Python
Je l'ai besoin pour imprimer toutes ces données après que l'équipe a terminé leurs tests pour voir ce que leurs modifications ont fait pour le moteur. J'ai toutes les données pertinentes affichées dans un moniteur série, mais ce serait formidable pour eux s'ils pouvaient avoir les données pour passer en revue les tests précédents.
import serial
import csv
import time
import numpy as np
import warnings
import serial
import serial.tools.list_ports
arduino_ports = [
p.device
for p in serial.tools.list_ports.comports()
if 'Arduino' in p.description
]
if not arduino_ports:
raise IOError("No Arduino found")
if len(arduino_ports) > 1:
warnings.warn('Multiple Arduinos found - using the first')
Arduino = serial.Serial(arduino_ports[0])
Arduino.flush()
Arduino.reset_input_buffer()
start_time=time.time()
Distance = 0.5 # This is how long the lever arm is in feet
while True:
while (Arduino.inWaiting()==0):
pass
try:
data = Arduino.readline()
dataarray = data.decode().rstrip().split(',')
Arduino.reset_input_buffer()
Force = float(dataarray[0])
RPM = float (dataarray[1])
Torque = Force * Distance
HorsePower = Torque * RPM/5252
Run_time = time.time()-start_time
print (Force , 'Grams',"," , RPM ,'RPMs',"," ,Torque,"ft-lbs",",", HorsePower, "hp", Run_time, "Time Elasped")
except (KeyboardInterrupt, SystemExit,IndexError,ValueError):
pass
with open('DynoData.csv', 'w') as outfile:
outfileWrite = csv.writer(outfile)
outfileWrite.writerow([Force, RPM])
outfile.close()
Cela semblait avoir résolu mon problème, mais quand il enregistre les informations, il semble avoir un espace vide entre les lignes. Ce n'est pas un problème critique cependant d'avoir une feuille de calcul nette de toutes leurs données, je pense qu'il serait plus agréable de ne pas un espace entre chaque ligne. Par exemple, un ensemble d'échantillons comportant 20 points de données utiliserait 40 lignes. –
Juste noté une erreur dans ce que je vous ai donné: déplacez le '= csv.writer (outfile)' à _outside_ de la boucle while. Évidemment pas nuisible, car cela a fonctionné, mais pas correct non plus. C'est la seule source de nouvelle ligne supplémentaire que je peux voir. Maintenant, il y a exactement une instruction qui écrit dans le fichier. Voir si cela résout votre problème? – hunteke
Malheureusement, il n'y avait aucun changement dans le fichier de sortie avec ce changement, mais j'apprécie de savoir la bonne façon de faire cette partie d'un code. –