From 1a9dd0164f694350227b7680a81c9d1c3617f16b Mon Sep 17 00:00:00 2001 From: gac-S_Changer Date: Mon, 27 Feb 2017 09:29:20 +0100 Subject: [PATCH] Script execution --- script/RobotTCP.py | 72 ++++++++++++++++++++-------------------------- 1 file changed, 31 insertions(+), 41 deletions(-) diff --git a/script/RobotTCP.py b/script/RobotTCP.py index 42aa86c..76a888e 100644 --- a/script/RobotTCP.py +++ b/script/RobotTCP.py @@ -55,11 +55,6 @@ class RobotTCP(TcpDevice, Stoppable): return rx.split(self.array_separator) return rx - def read_event(self): - ev = self._sendReceive("EVT") - if ev.strip() == "": return None - return ev - def evaluate(self, cmd, timeout=None): ret = self.execute('eval', cmd, timeout=timeout) if ret.strip() != "": raise Exception(ret) @@ -159,7 +154,7 @@ class RobotTCP(TcpDevice, Stoppable): return self.powered def get_monitor_speed(self): - return self.eval_int("getMonitorSpeed()") + self.speed = self.eval_int("getMonitorSpeed()") def set_monitor_speed(self, speed): ret = self.eval_int("setMonitorSpeed(" + str(speed) + ")") @@ -177,25 +172,28 @@ class RobotTCP(TcpDevice, Stoppable): def is_calibrated(self): return self.eval_bool("isCalibrated()") + def _update_working_mode(self, mode, status): + if mode==1: + self.working_mode = "manual" + self.status = "hold" if status==6 else "move" + elif mode==2: + self.working_mode = "test" + self.status = "hold" if status==3 else "move" + elif mode==3: + self.working_mode = "local" + self.status = "hold" if status==2 else "move" + elif mode==4: + self.working_mode = "remote" + self.status = "hold" if status==2 else "move" + else: + self.working_mode = "invalid" + self.status = "invalid" + def read_working_mode(self): try: mode = self.eval_int("workingMode(arr)") status = int(self.get_var("arr[0]")) - if mode==1: - self.working_mode = "manual" - self.status = "hold" if status==6 else "move" - elif mode==2: - self.working_mode = "test" - self.status = "hold" if status==3 else "move" - elif mode==3: - self.working_mode = "local" - self.status = "hold" if status==2 else "move" - elif mode==4: - self.working_mode = "remote" - self.status = "hold" if status==2 else "move" - else: - self.working_mode = "invalid" - self.status = "invalid" + self._update_working_mode(mode, status) except: self.working_mode = "invalid" return self.working_mode @@ -320,29 +318,21 @@ class RobotTCP(TcpDevice, Stoppable): else: status = self.execute('get_help', code) return (code,status) - #Updating - def update_status(self): - #TODO: This can optimized with a single call - self.read_working_mode() - self.is_powered() - self.get_monitor_speed() - self.is_empty() - self.is_settled() - - def poll_events(self): - ev = self.read_event() - if ev is not None: - self.getLogger().info(ev) - self.on_event(ev) - def doUpdate(self): try: start = time.time() - self.update_status() - self.poll_events() - self.setState(State.Busy if self.status=="move" else State.Ready) - self.setState(State.Ready if self.empty and self.settled else State.Busy) - #print time.time() - start + #sts = self._sendReceive("EVT").strip().split(self.array_separator) + sts = self.execute("get_status") + self._update_working_mode(int(sts[0]), int(sts[1])) + self.powered = sts[2] == "1" + self.speed = int(sts[3]) + self.empty = sts[4] == "1" + self.settled = sts[5] == "1" + ev = sts[6] if len(sts)>6 else "" + if len(ev.strip()) >0: + self.getLogger().info(ev) + self.on_event(ev) + #print time.time() - start except: print >> sys.stderr, "Update error: " + str(sys.exc_info()[1]) self.setState(State.Offline)