X-Git-Url: http://git.hcoop.net/clinton/Smoothieware.git/blobdiff_plain/224af3d453bd8fd89c7934fe2214d5d8647051d0..721b502e381a8abf6e843f629164823450e4b16b:/smoothie-stream.py diff --git a/smoothie-stream.py b/smoothie-stream.py index 54564a69..c3b50176 100644 --- a/smoothie-stream.py +++ b/smoothie-stream.py @@ -8,8 +8,14 @@ Based on GRBL stream.py from __future__ import print_function import sys import telnetlib +import re import argparse +def write_raw_sequence(tn, seq): + sock = tn.get_socket() + if sock is not None: + sock.send(seq) + # Define command line argument interface parser = argparse.ArgumentParser(description='Stream g-code file to Smoothie over telnet.') parser.add_argument('gcode_file', type=argparse.FileType('r'), @@ -18,34 +24,51 @@ parser.add_argument('ipaddr', help='Smoothie IP address') parser.add_argument('-q','--quiet',action='store_true', default=False, help='suppress output text') +parser.add_argument('-l','--log',action='store_true', default=False, + help='suppress output text and output to file (gcode file with .log appended)') +parser.add_argument('-c','--comment',action='store_true', default=False, + help='Send gcode comments to printer (text after ;)') args = parser.parse_args() f = args.gcode_file -verbose = not args.quiet +verbose = not (args.quiet or args.log) # Stream g-code to Smoothie print("Streaming " + args.gcode_file.name + " to " + args.ipaddr) +outlog = None +if args.log: + outlog = open(args.gcode_file.name + ".log", 'w') tn = telnetlib.Telnet(args.ipaddr) +# turn on prompt +#write_raw_sequence(tn, telnetlib.IAC + telnetlib.DO + "\x55") + # read startup prompt -tn.read_until("> ") +tn.read_until("Smoothie command shell") okcnt= 0 linecnt= 0 for line in f: - tn.write(line) - linecnt+=1 - rep= tn.read_eager() - okcnt += rep.count("ok") - if verbose: print("SND " + str(linecnt) + ": " + line.strip() + " - " + str(okcnt)) - + if not args.comment: + line = re.sub("[ ]*;.*", '', line) # remove everything after ; + line = line.strip() #send only the bare necessity. + if len(line) > 0: + tn.write(line + "\n") + linecnt+=1 + rep= tn.read_eager() + okcnt += rep.count("ok") + if verbose: print("SND " + str(linecnt) + ": " + line.strip() + " - " + str(okcnt)) + if args.log: outlog.write("SND " + str(linecnt) + ": " + line.strip() + " - " + str(okcnt) + "\n" ) print("Waiting for complete...") while okcnt < linecnt: rep= tn.read_some() okcnt += rep.count("ok") if verbose: print(str(linecnt) + " - " + str(okcnt) ) + if args.log: outlog.write(str(linecnt) + " - " + str(okcnt) + "\n" ) + +if args.log: outlog.close() tn.write("exit\n") tn.read_all()