diff --git a/script/RobotTCP.py b/script/RobotTCP.py index 5d5d2dc..59cdd57 100644 --- a/script/RobotTCP.py +++ b/script/RobotTCP.py @@ -196,6 +196,8 @@ class RobotTCP(TcpDevice, Stoppable): self._update_working_mode(mode, status) except: self.working_mode = "invalid" + self.status = "invalid" + self._update_state() return self.working_mode def get_emergency_stop_sts(self): @@ -222,10 +224,12 @@ class RobotTCP(TcpDevice, Stoppable): def is_empty(self): self.empty = self.eval_bool("isEmpty()") + self._update_state() return self.empty def is_settled(self): self.settled = self.eval_bool("isSettled()") + self._update_state() return self.powered def get_move_id(self): @@ -287,9 +291,13 @@ class RobotTCP(TcpDevice, Stoppable): #Task control def task_create(self, program, *args, **kwargs): + program = str(program) priority = 10 if (kwargs is None) or (not kwargs.has_key("priority")) else kwargs["priority"] - name = program if (kwargs is None) or (not kwargs.has_key("name")) else kwargs["name"] + name = str(program if (kwargs is None) or (not kwargs.has_key("name")) else kwargs["name"]) + if self.get_task_status(name)[0] != -1: + raise Exception("Task already exists: " + name) + #taskCreate "t1", 10, read(sMessage) cmd = 'taskCreate "' + name + '", ' + str(priority) + ', ' + program + '(' for i in range(len(args)): @@ -318,6 +326,12 @@ class RobotTCP(TcpDevice, Stoppable): else: status = self.execute('get_help', code) return (code,status) + def _update_state(self): + #self.setState(State.Busy if self.status=="move" else State.Ready) + if not self.settled: self.setState(State.Busy) + if not self.empty: self.setState(State.Paused) + else self.setState(State.Ready) + def doUpdate(self): try: start = time.time() @@ -331,7 +345,8 @@ class RobotTCP(TcpDevice, Stoppable): ev = sts[6] if len(sts)>6 else "" if len(ev.strip()) >0: self.getLogger().info(ev) - self.on_event(ev) + self.on_event(ev) + self._update_state() #print time.time() - start except: print >> sys.stderr, "Update error: " + str(sys.exc_info()[1])