diff --git a/script/local.py b/script/local.py index 2cabf52..4d2cd31 100644 --- a/script/local.py +++ b/script/local.py @@ -14,7 +14,9 @@ class RobotTCP(TcpDevice): self.retries = retries self.header = None self.trailer = "\n" + self.array_separator = ',' self.msg_id = 0 + self.setPolling(1000) def _sendReceive(self, msg_id, msg = ""): tx = self.header if (self.header != None) else "" @@ -22,11 +24,10 @@ class RobotTCP(TcpDevice): if (len(tx)>127): raise Exception("Exceeded maximum message size") self.getLogger().finer("TX = '" + str(tx)+ "'") - print "TX = '" + str(tx)+ "'" if (self.trailer != None): tx = tx + self.trailer rx = self.sendReceive(tx, None, self.trailer , 0, self.timeout, self.retries) + rx=rx[:-1] #Remove 0A self.getLogger().finer("RX = '" + str(rx) + "'") - print "RX = '" + str(rx) + "'" if rx[:3] != msg_id: print rx raise Exception("Received invalid message id: " + str(rx[:3]) + " - expecting:" + msg_id ) @@ -34,7 +35,7 @@ class RobotTCP(TcpDevice): raise Exception("Invalid message size: " + str(len(rx)) ) if rx[3] == "*": raise Exception(rx[4:]) - return rx[4:-1] + return rx[4:] def call(self, msg): id = "%03d" % self.msg_id @@ -47,13 +48,26 @@ class RobotTCP(TcpDevice): raise Exception("Exceeded maximum number of parameters") for arg in argv: msg = msg + "," + str(arg) - return self.call(msg) + rx = self.call(msg) + if rx.count(self.array_separator)>0: + return rx.split(self.array_separator) + return rx - def get_event(self): - return self._sendReceive("EVT") + def read_event(self): + ev = self._sendReceive("EVT") + if ev.strip() == "": return None + return ev + + def eval(self, cmd): + return self.execute('eval', cmd) def mount(self, puck, sample): - return self.execute('Mount', puck, sample) + return self.execute('mount', puck, sample) + + def doUpdate(self): + ev = self.read_event() + if ev is not None: + self.getLogger().info(ev) add_device(RobotTCP("robot_tcp", "129.129.126.100:1000"), force = True)