Messergebnisse in eine CSV-Datei auslagern
Verfasst: Donnerstag 28. Dezember 2017, 22:36
Hallo,
ich möchte alle meine Messergebnisse in main "speed" und "timedelta" in eine CSV-Datei auslagern und mit einem testnamen versehen. Habe dafür folgenden Programmcode ab Zeile 48 geschrieben. Gibt es eine Verbesserung dazu? Danke!
ich möchte alle meine Messergebnisse in main "speed" und "timedelta" in eine CSV-Datei auslagern und mit einem testnamen versehen. Habe dafür folgenden Programmcode ab Zeile 48 geschrieben. Gibt es eine Verbesserung dazu? Danke!
Code: Alles auswählen
#!/usr/bin/python
# Projekt_Schiefe_Ebene_2017
import time
import RPi.GPIO as gpio # Einbinden der RPi.GPIO Bibliothek
import lcddriver # Einbinden des LC-Display Treibers
GPIO_SENSOR_PINS = [22, 23, 24, 25, 26] # Erstellen einer Liste mit den GPIO_SENSOR_PINS
SETUP = [
{'pin': 23, 'distance': 10.0, 'timeout': 5},
{'pin': 24, 'distance': 40.0, 'timeout': 10},
{'pin': 25, 'distance': 90.0, 'timeout': 15},
{'pin': 26, 'distance':160.0, 'timeout': 20},]
class TimeoutError(Exception):
pass
def get_lowtime(pin, timeout=36):
start = time.time()
if gpio.wait_for_edge(pin, gpio.RISING, timeout=timeout*1000) is None:
raise TimeoutError()
return time.time() - start
def main():
# Programm starten und Sensoren initialisieren:
gpio.setmode(gpio.BCM)
gpio.setup(GPIO_SENSOR_PINS, gpio.IN)
lcd = lcddriver.lcd()
lcd.lcd_clear()
_ = get_lowtime(GPIO_SENSOR_PINS[0]) # Warten auf den Start
for nr, setup in enumerate(SETUP, 1):
try:
timedelta = get_lowtime(setup['pin'], setup['timeout'])
except TimeoutError:
lcd.lcd_clear()
lcd.lcd_display_string("Timeout %d" % nr, 1)
return
speed = setup['distance'] / timedelta
print("%d. Geschwindigkeit" % nr, speed)
print("%d. Zeit" % nr, timedelta)
lcd.lcd_display_string("v: %.2f cm/s" % speed, 1)
lcd.lcd_display_string("t: %.2f s" % timedelta, 2)
if __name__ == '__main__': # Idiom erstellen
main()
try:
while True:
testname = input("Geben Sie einen Namen für diesen Test ein: ")
result = main(speed)
with open('Lichtschranke.csv','a') as out:
for i in result:
out.write("{};{};{}\n".format(testname,i,result[i]))
except KeyboardInterrupt:
print("Test beendet")