Script execution
This commit is contained in:
+31
-41
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user