From 5c92439130640c9506e02ae0d116efefd9302e5b Mon Sep 17 00:00:00 2001 From: gac-S_Changer Date: Tue, 28 Feb 2017 09:03:30 +0100 Subject: [PATCH] Closedown --- script/RobotTCP.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/script/RobotTCP.py b/script/RobotTCP.py index 6a6dcb4..84bfb90 100644 --- a/script/RobotTCP.py +++ b/script/RobotTCP.py @@ -1,3 +1,5 @@ +import threading + class RobotTCP(TcpDevice, Stoppable): def __init__(self, name, server, timeout = 1000, retries = 1): TcpDevice.__init__(self, name, server) @@ -15,6 +17,7 @@ class RobotTCP(TcpDevice, Stoppable): self.empty = None self.working_mode = None self.status = None + self.lock = threading.Lock() def _sendReceive(self, msg_id, msg = "", timeout = None): tx = self.header if (self.header != None) else "" @@ -36,9 +39,13 @@ class RobotTCP(TcpDevice, Stoppable): return rx[4:] def call(self, msg, timeout = None): - id = "%03d" % self.msg_id - self.msg_id = (self.msg_id+1)%1000 - return self._sendReceive(id, msg, timeout) + self.lock.aquire() + try: + id = "%03d" % self.msg_id + self.msg_id = (self.msg_id+1)%1000 + return self._sendReceive(id, msg, timeout) + finally: + self.lock.release() def execute(self, command, *args, **kwargs): timeout = None if (kwargs is None) or (not kwargs.has_key("timeout")) else kwargs["timeout"]