From dd843c8f67e64c85153715a58ae623b103aabac1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gina=20H=C3=A4u=C3=9Fge?= Date: Wed, 16 Dec 2015 16:49:00 +0100 Subject: [PATCH] Also recognize F as standalone GCODE command While 3D printers usually don't support that, at least Smoothieware does combined with CNC operations. --- src/octoprint/plugins/virtual_printer/virtual.py | 9 ++++++--- src/octoprint/util/comm.py | 4 +++- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/octoprint/plugins/virtual_printer/virtual.py b/src/octoprint/plugins/virtual_printer/virtual.py index 26f15bd6..2fafabb0 100644 --- a/src/octoprint/plugins/virtual_printer/virtual.py +++ b/src/octoprint/plugins/virtual_printer/virtual.py @@ -17,10 +17,10 @@ from octoprint.settings import settings from octoprint.plugin import plugin_manager class VirtualPrinter(object): - command_regex = re.compile("^([GMT])(\d+)") + command_regex = re.compile("^([GMTF])(\d+)") sleep_regex = re.compile("sleep (\d+)") - sleep_after_regex = re.compile("sleep_after ([GMT]\d+) (\d+)") - sleep_after_next_regex = re.compile("sleep_after_next ([GMT]\d+) (\d+)") + sleep_after_regex = re.compile("sleep_after ([GMTF]\d+) (\d+)") + sleep_after_next_regex = re.compile("sleep_after_next ([GMTF]\d+) (\d+)") custom_action_regex = re.compile("action_custom ([a-zA-Z0-9_]+)(\s+.*)?") def __init__(self, seriallog_handler=None, read_timeout=5.0, write_timeout=10.0): @@ -240,6 +240,9 @@ class VirtualPrinter(object): self.currentExtruder = int(code) self._send("Active Extruder: %d" % self.currentExtruder) + def _gcode_F(self, code, data): + self._send("echo:changed F value") + def _gcode_M104(self, data): self._parseHotendCommand(data) _gcode_M109 = _gcode_M104 diff --git a/src/octoprint/util/comm.py b/src/octoprint/util/comm.py index 9d8b2220..a410962d 100644 --- a/src/octoprint/util/comm.py +++ b/src/octoprint/util/comm.py @@ -39,7 +39,7 @@ regex_float_pattern = "[-+]?[0-9]*\.?[0-9]+" regex_positive_float_pattern = "[+]?[0-9]*\.?[0-9]+" regex_int_pattern = "\d+" -regex_command = re.compile("^\s*((?P[GM]\d+)|(?PT)\d+)") +regex_command = re.compile("^\s*((?P[GM]\d+)|(?PT)\d+|(?PF)\d+)") """Regex for a GCODE command.""" regex_float = re.compile(regex_float_pattern) @@ -2499,6 +2499,8 @@ def gcode_command_for_cmd(cmd): return values["commandGM"] elif "commandT" in values and values["commandT"]: return values["commandT"] + elif "commandF" in values and values["commandF"]: + return values["commandF"] else: # this should never happen return None