aboutsummaryrefslogtreecommitdiffstats
path: root/klippy/gcode.py
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2018-09-12 18:27:33 -0400
committerKevin O'Connor <kevin@koconnor.net>2018-09-12 21:06:54 -0400
commit91691afdcf30e021c3f080af7097a9c4a68e5332 (patch)
tree87a3fce736edb154112189e6bac3442e5556958d /klippy/gcode.py
parentd1da6100a6ce3cf832397953a852b2027b648b25 (diff)
downloadkutter-91691afdcf30e021c3f080af7097a9c4a68e5332.tar.gz
kutter-91691afdcf30e021c3f080af7097a9c4a68e5332.tar.xz
kutter-91691afdcf30e021c3f080af7097a9c4a68e5332.zip
gcode: Catch errors on fd read and write
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'klippy/gcode.py')
-rw-r--r--klippy/gcode.py22
1 files changed, 16 insertions, 6 deletions
diff --git a/klippy/gcode.py b/klippy/gcode.py
index 4158007f..04b1ca4c 100644
--- a/klippy/gcode.py
+++ b/klippy/gcode.py
@@ -183,7 +183,11 @@ class GCodeParser:
m112_r = re.compile('^(?:[nN][0-9]+)?\s*[mM]112(?:\s|$)')
def process_data(self, eventtime):
# Read input, separate by newline, and add to pending_commands
- data = os.read(self.fd, 4096)
+ try:
+ data = os.read(self.fd, 4096)
+ except os.error:
+ logging.exception("Read g-code")
+ return
self.input_log.append((eventtime, data))
self.bytes_read += len(data)
lines = data.split('\n')
@@ -256,15 +260,21 @@ class GCodeParser:
def ack(self, msg=None):
if not self.need_ack or self.is_fileinput:
return
- if msg:
- os.write(self.fd, "ok %s\n" % (msg,))
- else:
- os.write(self.fd, "ok\n")
+ try:
+ if msg:
+ os.write(self.fd, "ok %s\n" % (msg,))
+ else:
+ os.write(self.fd, "ok\n")
+ except os.error:
+ logging.exception("Write g-code ack")
self.need_ack = False
def respond(self, msg):
if self.is_fileinput:
return
- os.write(self.fd, msg+"\n")
+ try:
+ os.write(self.fd, msg+"\n")
+ except os.error:
+ logging.exception("Write g-code response")
def respond_info(self, msg):
logging.debug(msg)
lines = [l.strip() for l in msg.strip().split('\n')]