__copyright__ = "Copyright (C) 2013 David Braam - Released under terms of the AGPLv3 License"
import sys
+import threading
import time
import os
import json
sys.stdout.write('progress:%d\n' % (lineNr))
def mcZChange(self, newZ):
- sys.stdout.write('changeZ:%d\n' % (newZ))
+ pass
def monitorStdin(self):
- while not self._comm.isClosed():
- line = sys.stdin.readline().strip()
- line = line.split(':', 1)
+ while not (self._comm.isClosed() or sys.stdin.closed):
+ line = sys.stdin.readline()
+ # If readline returns an empty string it means that
+ # we've hit stdin's EOF, probably because the parent was
+ # closed, so we need to exit as well instead of spamming stderr.
+ if line == '':
+ break
+ line = line.strip().split(':', 1)
if line[0] == 'STOP':
self._comm.cancelPrint()
self._gcodeList = ['M110']
self._comm.sendCommand(line[1])
elif line[0] == 'START':
self._comm.printGCode(self._gcodeList)
+ elif line[0] == 'PAUSE':
+ self._comm.setPause(True)
+ elif line[0] == 'RESUME':
+ self._comm.setPause(False)
else:
sys.stderr.write(str(line))
def startMonitor(portName, baudrate):
sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)
comm = serialComm(portName, baudrate)
- comm.monitorStdin()
+ thread = threading.Thread(target=comm.monitorStdin)
+ thread.start()
+ while thread.is_alive():
+ time.sleep(0.1)
def main():
if len(sys.argv) != 3: