For M291, there are currently 4 options:
- No buttons are displayed (non-blocking)
- Only "Close" is displayed (non-blocking)
- Only "OK" is displayed (blocking, send M292 to resume the execution)
- "OK" and "Cancel" are displayed (blocking, send M292 to resume the execution or M292 P1 to cancel the operation in progress)
Can we get a 5th option that elaborates on #3's "OK" and "cancel" and maybe allows more than 2 buttons? Instead of "OK" and "cancel", allow us to insert our own button text followed by a Gcode or meta command for each instance which would allow the buttons to lead out of the current program into a subprogram. An example of where this would be handy is for machine setup where we have loads of machines in a farm and not all of them are identical. Individual programs stored in the macros to do specific functions would be linked together in a procedural manner by the mechanism of using buttons containing M98
commands in a main program. When it comes to regular maintenance in a program called something like maintenanceROUTINE.g
, the first prompt would be something like:
MACHINE MAINTENANCE ROUTINES
What components were changed?
[Bed surface]
[Hotend]
[Feeder]
[New Printer Setup]
=>Selecting Bed surface
could call G32
=>Selecting Hotend
could call my macro to calibrate the heater PID and Z positions
=>Selecting Feeder
could call my macro to guide through my measuring and tuning process of how to plug in settings for steps applied/mm
=>Selecting New Printer Setup
would behave much like "OK" currently does allowing the current program to continue, guiding the technician through the entire process, ensuring they dont miss a step.
When each step is completed, a prompt for "Finished" to exit the program or "Do more" which would lead back to the start allowing multiple items to be addressed.
Another use: when having the printer start by a subprogram such as printBEGIN.g
, you can have M291
ask if the printer bed is cleared. Currently, clicking "cancel" stops the subprogram and leads back into the main program, thus, starting the print in a manner that was not intended to run without printBEGIN.g
.