X-Git-Url: https://git.realraum.at/?a=blobdiff_plain;f=door_daemon.py;h=74532380a22d573cf63777c49d0e1501884430ad;hb=6773f3ff20c2826dc0f32e4d20b73572769f6e40;hp=fefc6cd75b06dd39fe08ccb5f99e2deccb5b9c06;hpb=889622e0c6757408211798cfe8562a026a93b5b2;p=svn42.git diff --git a/door_daemon.py b/door_daemon.py index fefc6cd..7453238 100755 --- a/door_daemon.py +++ b/door_daemon.py @@ -47,10 +47,12 @@ class ArduinoUSBThread ( threading.Thread ): self.running=True self.lastline="" self.last_status=None + self.shortsleep = 0 self.cv_updatestatus = threading.Condition(); #lock ist automatically created withing condition self.file_dev_ttyusb=file_dev_ttyusb #self.fh = open(self.file_dev_ttyusb,"w+") - self.fh = os.fdopen(os.open(self.file_dev_ttyusb, os.O_RDWR | os.O_NONBLOCK),"r+") + self.fh = os.fdopen(os.open(self.file_dev_ttyusb, os.O_RDWR | os.O_NONBLOCK),"r+") + #pythons sucks just like perl: we need nonblock or we can't write to FileHandle while we block reading on same filehandle self.statusdisplay = StatusDisplay() threading.Thread.__init__(self) @@ -93,15 +95,17 @@ class ArduinoUSBThread ( threading.Thread ): self.cv_updatestatus.release() def send_reset(self): - logging.info("Resetting Door") - print("\nSending r..") + self.shortsleep = 20 + logging.info("Resetting Door") + #print("\nSending r..") self.fh.write("r"); - print("done\n") + #print("done\n") def send_statusrequest(self): - print("\nSending s..") + self.shortsleep = 20 + #print("\nSending s..") self.fh.write("s"); - print("done\n") + #print("done\n") self.cv_updatestatus.acquire() self.cv_updatestatus.wait(5.0) self.cv_updatestatus.release() @@ -111,7 +115,11 @@ class ArduinoUSBThread ( threading.Thread ): try: line = self.fh.readline(); except IOError, e: - time.sleep(0.5) + if self.shortsleep > 0: + time.sleep(0.05) + self.shortsleep -= 1 + else: + time.sleep(0.5) continue self.cv_updatestatus.acquire() self.lastline=line.strip() @@ -206,6 +214,8 @@ arduino.start() ctrlfifo = ControlFIFOThread(fifofile,arduino) ctrlfifo.start() +arduino.send_statusrequest() + def exit_handler(signum, frame): global arduino, ctrlfifo logging.info("Door Daemon stopping") @@ -221,4 +231,4 @@ signal.signal(signal.SIGQUIT, exit_handler) logging.info("Door Daemon started") arduino.join() -ctrlfifo.join() \ No newline at end of file +ctrlfifo.join()