From 1ae3438c15c8270bbecb30c220ba38293a4b6170 Mon Sep 17 00:00:00 2001 From: Artem30801 Date: Thu, 18 Apr 2019 20:48:59 +0300 Subject: [PATCH] Fixes: receiving multiple messages at once, added rospy init --- Drone/copter_client.py | 4 +++- Server/server_qt.py | 2 +- messaging_lib.py | 11 +++++------ 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/Drone/copter_client.py b/Drone/copter_client.py index c732122..8e975a2 100644 --- a/Drone/copter_client.py +++ b/Drone/copter_client.py @@ -37,7 +37,8 @@ class CopterClient(client.Client): @messaging.request_callback("selfcheck") def _response_selfcheck(): - return FlightLib.selfcheck() + check = FlightLib.selfcheck() + return check if check else "OK" @messaging.request_callback("batt_voltage") @@ -71,5 +72,6 @@ def _command_takeoff(*args, **kwargs): if __name__ == "__main__": + rospy.init_node('Swarm_client', anonymous=True) copter_client = CopterClient() copter_client.start() diff --git a/Server/server_qt.py b/Server/server_qt.py index 53e480a..6096b26 100644 --- a/Server/server_qt.py +++ b/Server/server_qt.py @@ -64,7 +64,7 @@ class MainWindow(QtWidgets.QMainWindow): model.setData(model.index(row, col), "{} %".format(round(batt_percent, 3))) elif col == 4: if value != "OK": - model.setData(model.index(row, col), str(value)) + model.setData(model.index(row, col), str(value)) # TODO different handling else: model.setData(model.index(row, col), str(value)) diff --git a/messaging_lib.py b/messaging_lib.py index 79f2ae3..79d36f9 100644 --- a/messaging_lib.py +++ b/messaging_lib.py @@ -229,7 +229,7 @@ class ConnectionManager(object): def read(self): self._read() - if self._recv_buffer: + while self._recv_buffer: if not self._received_queue or (self._received_queue[0].content is not None): self._received_queue.appendleft(MessageManager()) @@ -242,9 +242,9 @@ class ConnectionManager(object): self._recv_buffer = self._received_queue[0].income_raw + self._recv_buffer self._received_queue[0].income_raw = b'' - if self._received_queue: - if self._received_queue[-1].content: - self.process_received() + if self._received_queue: + if self._received_queue[-1].content: + self.process_received(self._received_queue.popleft()) def _read(self): try: @@ -263,8 +263,7 @@ class ConnectionManager(object): raise RuntimeError("Peer closed.") - def process_received(self): - income_message = self._received_queue.pop() + def process_received(self, income_message): message_type = income_message.jsonheader["message-type"] logging.debug("Received message! Header: {}, content: {}".format( income_message.jsonheader, income_message.content))