diff --git a/script/RobotSC.py b/script/RobotSC.py index 7cae203..dcdb408 100644 --- a/script/RobotSC.py +++ b/script/RobotSC.py @@ -26,9 +26,16 @@ class RobotSC(RobotTCP): self.get_joint_forces() for dev in [jf1, jf2, jf3, jf4,jf5, jf6, jfc]: dev.update() - #print time.time() -start + def start_task(self, program, *args, **kwargs): + #TODO: Check safe position + RobotTCP.start_task(self, program, *args, **kwargs) + + def stop_task(self, program, *args, **kwargs): + RobotTCP.stop_task() + #TODO: Restore safe position + diff --git a/script/RobotTCP.py b/script/RobotTCP.py index 2d05d6b..4f96a8f 100644 --- a/script/RobotTCP.py +++ b/script/RobotTCP.py @@ -19,7 +19,7 @@ class RobotTCP(TcpDevice, Stoppable): self.status = None self.lock = threading.Lock() self.joint_forces = None - self.running_task = None + self.current_task = None self.high_level_tasks = [] def _sendReceive(self, msg_id, msg = "", timeout = None): @@ -344,7 +344,7 @@ class RobotTCP(TcpDevice, Stoppable): #self.setState(State.Busy if self.status=="move" else State.Ready) if self.state==State.Offline: print "Communication resumed" - if (not self.settled) or (self.running_task is not None): self.setState(State.Busy) + if (not self.settled) or (self.current_task is not None): self.setState(State.Busy) if not self.empty: self.setState(State.Paused) else: self.setState(State.Ready) @@ -362,8 +362,8 @@ class RobotTCP(TcpDevice, Stoppable): if len(ev.strip()) >0: self.getLogger().info(ev) self.on_event(ev) - if ((self.running_task is not None) and (self.get_task_status(self.running_task)<=0)): - self.running_task = None + if ((self.current_task is not None) and (self.get_task_status(self.current_task)<=0)): + self.current_task = None self._update_state() self.setCache({"powered": self.powered, "speed": self.speed, @@ -385,6 +385,10 @@ class RobotTCP(TcpDevice, Stoppable): self.current_task = program self.task_create(program, *args, **kwargs) + def stop_task(self, program, *args, **kwargs): + for task in (self.high_level_tasks + [program]): + if self.get_task_status(task)[0]>=0: + self.task_kill(task) def on_event(self,ev): pass