From 342b113cdbe11de2d627094a485837f13d5c2447 Mon Sep 17 00:00:00 2001 From: "Reid D. 'arrdem' McKenzie" Date: Tue, 31 May 2022 09:41:32 -0600 Subject: [PATCH] A single-stepping GCODE tool --- projects/octostep/BUILD | 10 +++++++++ projects/octostep/__main__.py | 42 +++++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 projects/octostep/BUILD create mode 100644 projects/octostep/__main__.py diff --git a/projects/octostep/BUILD b/projects/octostep/BUILD new file mode 100644 index 0000000..58bbbc4 --- /dev/null +++ b/projects/octostep/BUILD @@ -0,0 +1,10 @@ +zapp_binary( + name = "octostep", + shebang = "/usr/bin/env /usr/bin/python3", + main = "__main__.py", + deps = [ + py_requirement("colored"), + py_requirement("octorest"), + py_requirement("pyyaml"), + ], +) diff --git a/projects/octostep/__main__.py b/projects/octostep/__main__.py new file mode 100644 index 0000000..726f982 --- /dev/null +++ b/projects/octostep/__main__.py @@ -0,0 +1,42 @@ +"""A quick and dirty octoprint status screen""" + +from configparser import ConfigParser +import os + +from octorest.client import OctoRest + + +if __name__ == "__main__": + config = ConfigParser() + config.read(os.path.expanduser("~/.config/octoprint-cli.ini")) + + client = OctoRest(url="http://" + config["server"]["ServerAddress"], + apikey=config["server"]["ApiKey"]) + + for line in open(sys.argv[1], "r"): + l = line.split(";")[0] + l = l.strip() + if not l: + continue + + while True: + print(f"\n> {l}") + cmd = input("[seq?] >>> ") + if cmd == "s": + client.gcode(l) + break + elif cmd == "e": + client.gcode("M112") + elif cmd == "q": + exit(0) + elif cmd == "n": + break + elif cmd == "?": + print("""\ +s[tep] - run the next g-code line in the file +n[ext] - skip this line +e[stop] - issue an emergency stop +q[uit] - exit the debugger""") + + else: + client.gcode(line)