csvFile.py 1.1 KB

1234567891011121314151617181920212223242526272829303132
  1. import csv
  2. import os
  3. from datetime import datetime
  4. from structures.measurement import CurrentMeasurement
  5. class CSVFile:
  6. lastMeas = [None] * 16
  7. path = "logs"
  8. def __init__(self) -> None:
  9. if not os.path.exists(self.path):
  10. os.mkdir(self.path)
  11. filename = os.path.join(self.path, F"current_{datetime.now().strftime('%Y-%m-%d_%H-%M-%S')}.csv")
  12. self.file = open(filename, "a", newline='')
  13. self.writer = csv.writer(self.file, delimiter=' ')
  14. def write(self, values: list):
  15. meas: CurrentMeasurement
  16. for i, meas in enumerate(values):
  17. prev : CurrentMeasurement = self.lastMeas[meas.channel]
  18. if prev == None:
  19. self.writer.writerow([meas.timestamp, meas.source, meas.channel, meas.current])
  20. meas.saved = True
  21. elif prev.current != meas.current:
  22. if not prev.saved:
  23. self.writer.writerow([prev.timestamp, prev.source, prev.channel, prev.current])
  24. self.writer.writerow([meas.timestamp, meas.source, meas.channel, meas.current])
  25. meas.saved = True
  26. self.lastMeas[meas.channel] = meas
  27. self.file.flush()