Skip to content
Snippets Groups Projects
Commit d5a682a3 authored by Anton Tetov Johansson's avatar Anton Tetov Johansson
Browse files

working reader

parent a5ad6874
Branches
No related tags found
No related merge requests found
......@@ -29,8 +29,6 @@ class EGMClient:
self.socket.bind(("", port))
self.socket.setblocking(False)
# def _ensure_socket_ready(self, timeout=1):
# # try:
# # except select.error as err:
......@@ -48,25 +46,37 @@ class EGMClient:
def _get_last_packet(self):
last_recieved = (None, None)
self.socket.setblocking(False)
while True:
try:
data, addr = self.socket.recvfrom(1024)
data, addr = self.socket.recvfrom(2048) # read from socket
if data:
last_recieved = (data, addr)
last_recieved = (data, addr) # store last data and addr
except socket.error as err:
# EWOULDBLOCK: recvfrom would block since socket buffer is empty
if err.args[0] == socket.EWOULDBLOCK:
return last_recieved # return last data recieved
if last_recieved[0]: # if last data got picked up
break
else:
continue # else wait for data
else:
self.socket.setblocking(True)
raise err # if there is another error, raise exception
def receive_from_robot(self, timeout=0):
self.socket.setblocking(True)
return last_recieved
data, addr = self.socket.recvfrom(1024)
def receive_from_robot(self):
if not self.robot_controller_address:
data, addr = self._get_last_packet()
# the address used for sending to the robot is picked up here
if not self.robot_controller_address or self.robot_controller_address != addr:
self.robot_controller_address = addr
# use the message description from the proto file to create a python
# class from incoming data
msg = EgmRobot()
msg.ParseFromString(data)
......
......@@ -6,10 +6,11 @@ try:
except ImportError:
raise ImportWarning("abb_egm not found, have you installed the package?")
UDP_PORT = 6510
UDP_PORT = 6511
log = logging.getLogger("egm_client")
def print_egm_feedback() -> None:
"""Print EGM feedback.
......@@ -24,8 +25,9 @@ def print_egm_feedback() -> None:
while True:
try:
msg = egm_client.receive_from_robot()
print(f"Header:\n{msg.header.seqno}")
# print(f"Feedback:\n{msg.feedBack}")
print(f"Sequence number: {msg.header.seqno}")
print(f"Body: {msg.feedBack}")
except Exception as exc:
log.error(f"Exception raised {exc}")
log.info("Retrying")
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment