def reset (self): self.serial.setDTR (False) self.serial.setRTS (False) QThread.msleep (250) self.serial.setDTR (True) self.serial.setRTS (True) QThread.msleep (50)
def wait_for(cond, to): """ Wait for the condition function to return True until the timeout is met. The timeout is broken into pieces to make sure the application can continue processing without blocking functionality :param cond: A function that returns a boolean :param to: Timeout in seconds :return: The result of the condition function """ watchdog = 0 msecs = (to / 8.) * 1000 while cond() is False and watchdog < 8: QThread.msleep(msecs) watchdog += 1 return cond()
def open (self, port, baudrate = 115200): try: self.serial.port = port self.serial.baudrate = baudrate self.serial.parity = serial.PARITY_NONE self.serial.stopbits = serial.STOPBITS_ONE self.serial.datasize = serial.EIGHTBITS self.serial.timeout = self.timeout self.serial.open () self.reset () for _i in xrange (10): self.serial.write (const.CMD_STK_GET_SYNC + const.SYNC_CRC_EOP) self.serial.flushInput () QThread.msleep (10) self.waiting = True while self.waiting: self.serial.flushInput () self.serial.write (const.CMD_STK_GET_SYNC + const.SYNC_CRC_EOP) QThread.msleep (random.randrange (500, 1000)) QApplication.processEvents () if self.serial.inWaiting () < 2: continue if self.readBytes (2) == const.RESP_STK_INSYNC + const.RESP_STK_OK: break self.changed.emit (_('Connected')) self.progressUpdated.emit (0) return True except Exception as e: traceback.print_exc () try: self.serial.close () except: pass self.setError (e) return False
def execute (self, cmd, resLength = 0): #print 'SENT: (%02x):' % len (cmd + const.SYNC_CRC_EOP), dump (cmd + const.SYNC_CRC_EOP) self.serial.write (cmd) self.serial.write (const.SYNC_CRC_EOP) QThread.msleep (50) return self.sync (resLength)