Script execution

This commit is contained in:
gac-S_Changer
2017-02-27 09:29:20 +01:00
parent 5fae1834a9
commit 1a9dd0164f
+31 -41
View File
@@ -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)