我使用Python 3.5和我有麻煩一點點嘗試打印我的實時數據到CSV進行後處理。我正在使用Arduino從應變計和照片傳感器收集數據,以便爲我的學校車隊實時更新Dyno。到目前爲止,我已經設法將最後一行數據打印成CSV,但這還不夠。寫作生活,從一個Arduino數據到CSV在Python
我需要球隊與他們的測試,看看他們所做的修改對發動機做了之後它打印所有的數據。我確實已將所有相關數據顯示在串行監視器中,但如果他們能夠獲得用於查看以前測試的數據,那麼這對他們來說會很好。
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()
這似乎已經解決了我的問題,但是當它保存的信息好像還行之間的空白。這不是一個關鍵的問題,但是要有一個整齊的電子表格來顯示他們所有的數據,我認爲最好不要在每行之間留出空格。例如,具有20個數據點的樣本集將使用40行。 –
只是指出一個錯誤在什麼我給你:移動'= csv.writer(OUTFILE)'來_outside_ while循環。顯然不是有害的,因爲它的工作,但不正確。這是我能看到的額外換行符的唯一來源。現在只有一條寫入文件的語句。看看是否解決了你的問題? – hunteke
可悲的是,輸出文件沒有發生變化,但我很欣賞知道如何使代碼的這部分成爲可能。 –