from datetime import datetime from time import sleep, time from serial import Serial class Arduino(object): def __init__(self, logger, location, channels): logger("[ARDUINO]", "Opening serial port...") try: self.ser = Serial(location, 115200, timeout=0.1) except Exception as e: logger("[ARDUINO]", "ERROR: Could not open serial port") raise FileNotFoundError("Serial port not found") from e logger("[ARDUINO]", "Starting board...") #self._reset() # Reset do arduino para reinicio da leitura #self.ser.readline() # Espera o Arduino inicializar #self.ser.write(bytes("press",'utf-8')) #self.ser.readline() logger("[ARDUINO]", "Board started, good luck!") today = datetime.now().strftime("%Y-%m-%d-%H:%M:%S") self.logFile = open("/home/phckopper/logs/{}-calib.csv".format(today), "w") self.logFile.write("Tempo (Unix), Calibrante (V), Pressão (bar)\n") def read(self): pass def readAll(self): print("Reading:") self.ser.flushInput() # Limpeza do buffer de entrada val = [] self.ser.write(bytes(":MEAS:VOLT:DC? A0\r\n", "utf-8")) # Trigga leitura reading = self.ser.readline().strip() print(reading) val.append(float(reading)) self.ser.write(bytes(":MEAS:VOLT:DC? A3\r\n", "utf-8")) # Trigga leitura reading = self.ser.readline().strip() print(reading) val.append(float(reading) * (250.0/10.0)) self.logFile.write("{},{},{}\n".format(time(), val[0], val[1])) self.logFile.flush() #data = self.ser.readline().split(bytes(" ", "utf-8")) # Leitura de todos os valores em uma linha #return [int(x) for x in data] return val def _reset(self): self.ser.setDTR(False) sleep(0.05) self.ser.setDTR(True)