def PID_controller_input(self, user, P=0.2, I=0.0, D=0.0, SETPOINT=1.0, TS=0.05, SAMPLES=100, WAVETYPE={}): output = {} if self.controller_thread is None or self.controller_thread.isAlive( ) == False or self.controller_thread.failed["status"]: self.controller_thread = PID.ControllerThread( daqmxlib.Reader({"ai0": 1}, device=self.device), daqmxlib.Actuator(["ao0"], device=self.device), user, P=P, I=I, D=D, SETPOINT=SETPOINT, TS=TS, SAMPLES=SAMPLES, WAVETYPE=WAVETYPE) self.controller_thread.start() output["completed"] = self.controller_thread.completed output["controller"] = self.controller_thread.type output["success"] = True output["message"] = "Actuated successfully." output["status"] = 200 else: output["message"] = "Controller is still running." output["success"] = False output["status"] = 200 output["timestamp"] = str(datetime.now()) return output