Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
A
abb_egm_pyclient
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Container registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Robotlab
abb_egm_pyclient
Commits
d5a682a3
Commit
d5a682a3
authored
3 years ago
by
Anton Tetov Johansson
Browse files
Options
Downloads
Patches
Plain Diff
working reader
parent
a5ad6874
Branches
Branches containing commit
No related tags found
No related merge requests found
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
abb_egm_client/egm_client.py
+19
-9
19 additions, 9 deletions
abb_egm_client/egm_client.py
examples/print_egm_feedback.py
+5
-3
5 additions, 3 deletions
examples/print_egm_feedback.py
with
24 additions
and
12 deletions
abb_egm_client/egm_client.py
+
19
−
9
View file @
d5a682a3
...
...
@@ -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
)
...
...
This diff is collapsed.
Click to expand it.
examples/print_egm_feedback.py
+
5
−
3
View file @
d5a682a3
...
...
@@ -6,10 +6,11 @@ try:
except
ImportError
:
raise
ImportWarning
(
"
abb_egm not found, have you installed the package?
"
)
UDP_PORT
=
651
0
UDP_PORT
=
651
1
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
"
)
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment