Please add an OPTIONAL & Customizable checklist feature. When you run your g-code, it pops up and says whatever you want it to say. DID YOU CHECK THIS, DID YOU CHECK THAT, IS YOUR DUST EXTRACTOR ON, Dont you just hate lima beans? etc.
Thanks for the feedback. We intend to use the new Helper area in this fashion in the future - either with a preset checklist before starting or possibly a customizable one. It’s likely we’ll add something similar (a “beginner mode”) for jobs in a future Edge release.
Hello @Windlasher,
So good news, that feature is already kind of available in gSender.
You can achieve this with one or two macros in the Program Events tool in the settings.
This probably isn’t the best topic to do this but I’ll give a couple of examples.
The first example is basic, just a few M0/M1 pauses each followed with a message, this macro would be set as a Program Start Event.
There is a problem with this method though, and that is all the pause messages will pop up every time you start a job. so for example if there’s four files for the job, the pause messages will show four times, which is not always ideal.
Basic Macro -
;// INDIVIDUAL PAUSE MESSAGES
M1; DID YOU CHECK THIS
M0; DID YOU CHECK THAT
M1; IS YOUR DUST EXTRACTOR ON
M0; Dont you just hate lima beans?
;// GROUP PAUSE MESSAGE
M1; _______________________________________________________________________________________________ DID YOU CHECK THIS? ____________________________________________________________________________________________________ DID YOU CHECK THAT?____________________________________________________________________________________________________ IS YOUR DUST EXTRACTOR ON? ____________________________________________________________________________________________________ Don't you just hate lima beans?
There’s a couple ways of alleviating the issue, I think the best way, and the method I use in my next example, is to keep track of time.
This second example has one M1 pause pop up every time it’s ran, and then it also has three separate timers for pop up messages. In the example they’re set to 1, 2 and 4 minutes.
There are other ways of setting up timers, but in the example, two of timers allow pause messages to pop up once, and then only after inactivity for the set time duration will they pop up again.
The other timer delays and then repeats the pop up message after the set amount of time.
So for example you could set one of the first two timers to a bit longer than it takes to do a tool change so the messages only pop up once per job, which would be good for a job setup check list.
And the other could be set for a greater length of time so they pop up only after stopping for an hour or even so they just pop up once a day/gSender session.
The delayed messages would be good for reminders to do stuff after you’ve be running for a longer time period, like checking over the machine, getting rid of chips, eating, sleeping and stuff like that.
At the top of the macro is the entry for the three timers, RESET_TIME_ONE, RESET_TIME_TWO and DELAY_TIME_ONE, Time values are in minutes so 5=5mn, 1.5=1min30sec, (5*60)=300=5hrs.
At the bottom is the entry for the messages, they are used the same as the M0/M1 program pause message commands, for example…
M1; Messages here pop up every time.
[MESSAGE]; Messages here are controlled by RESET_TIME_ONE .
[MESSAGE_HOLD_DELAY]; Messages here are controlled by DELAY_TIME_ONE.
The timed M1 commands are [MESSAGE], [MESSAGE_TWO] and {MESSAGE_DELAY] and the M0 commands are [MESSAGE_HOLD], [MESSAGE_HOLD_TWO] and [MESSAGE_HOLD_DELAY].
It’s a two part macro, Part A of the macro would be set up as a Program Start Event and the Part B, which is just one line, is set as a Program Stop Event.
Advanced Macro Part A - Start Event Macro
;/////////////////////////////////////////
;///// PAUSE/MESSAGE MACRO WITH TIMED EVENTS
;/////////////////////////////////////////
;// SET UP MACRO AS PROGRAM START EVENT
;///////// SET TIME INTERVAL VALUES HERE, MESSAGES ARE SET AT THE BOTTOM.
;/////|||||///// TIME IS IN MINUTES. 1.5 = 1MIN 30SEC
;// ENTRY FOR PAUSE/MESSAGES THAT RUN ONCE AND THEN ARE DELAYED BY SET TIME EVERYTIME MACRO IS RAN.
%RESET_TIME_ONE = 1; //EX: 5.75; // FIVE MINUTES, FORTY FIVE SECONDS
%RESET_TIME_TWO = 2; //EX: (5*60) + 30.50; // FIVE HOURS, THIRTY MINUTES AND THIRTY SECONDS OR 330.50 MINUTES
;// ENTRY FOR PAUSE/MESSAGES THAT ARE DELAYED AND REPEAT BY SET TIME
%DELAY_TIME_ONE = 4;
;/////|||||\\\\\
;/////////
;////////////////
;///////////////
;//// SET UP THE FOLLOWING LINE AS AN EVENT IN PROGRAM STOP WITHOUT THE LEADING SEMICOLON
;//
;// UPDATE GLOBAL TIME VALUE WHEN PROGRAM STOPS
;%global.TIME_WAS = Date.now();
;////
;////////////////
;///////////////
;// GET UNIX TIME IN MILLISECONDS
%TIME = Date.now();
;////////////////////////////////////////////////////////////////
;/// SETUP FOR PAUSE/MESSAGES THAT RUN ONCE AND THEN ARE DELAYED
;///////////////////////////////////////////////////////////////
;// GET GLOBAL LAST TIME IF NOT A VALUE SET TO 0
%TIME_WAS = global.TIME_WAS || 0;
;// CALCULATE CURRENT AND LAST TIME DIFFERENCE IN MINUTES
%TIME_DURATION = (TIME - TIME_WAS) / 1000 / 60;
;// UPDATE GLOBAL, SAVE CURRENT TIME AS LAST TIME
%global.TIME_WAS = TIME;
;// TIMER SETUP, CHECK IF DURATION IS GREATER THAN OR EQUAL TO RESET_TIME ENTRIES
;// TIMER ONE
%TIME_CHECK_ONE = (TIME_DURATION >= RESET_TIME_ONE) ? true : false
;// TIMER TWO
%TIME_CHECK_TWO = (TIME_DURATION >= RESET_TIME_TWO) ? true : false
;// SET UP SO PAUSE/MESSAGE ONLY POP UP IF TIME_CHECKS ARE TRUE
;// TIMER ONE
%MESSAGE_HOLD = (TIME_CHECK_ONE == true) ? "M0" : "(--" ; // M0 PAUSE & HOLD
%MESSAGE = (TIME_CHECK_ONE == true) ? "M1" : "(--" ; // M1 PAUSE
;// TIMER TWO
%MESSAGE_HOLD_TWO = (TIME_CHECK_TWO == true) ? "M0" : "(--" ;
%MESSAGE_TWO = (TIME_CHECK_TWO == true) ? "M1" : "(--" ;
;///////////////////////////////////////////////////////////
;/// SETUP FOR PAUSE/MESSAGES THAT ARE RUN AFTER TIME DELAY
;//////////////////////////////////////////////////////////
;// CALCULATE CURRENT AND START TIME DIFFERENCE IN MINUTES
%TIME_DELAY = (TIME - global.START_TIME) / 1000 / 60;
;// SAVE GLOBAL TIME OF WHEN MACRO WAS FIRST STARTED
%global.START_TIME = global.START_TIME || TIME;
;// DELAY SETUP, CHECK IF DURATION IS GREATER THAN OR EQUAL TO DELAY TIMER ONE
%DELAY_CHECK_ONE = (TIME_DELAY >= DELAY_TIME_ONE) ? true : false
;// SETUP SO GLOBAL DELAY TIME IS RESET WHEN DELAY CHECK IS TRUE
%DELAY_RESET = (DELAY_CHECK_ONE == true) ? Date.now() : global.START_TIME;
;// RESET GLOBAL START VALUE IF CHECK IS TRUE
%global.START_TIME = DELAY_RESET;
;// SET UP PAUSES/MESSAGES TO POP UP ONLY IF DELAY CHECK IS TRUE
%MESSAGE_HOLD_DELAY = (DELAY_CHECK_ONE == true) ? "M0" : "(--" ; // M0 PAUSE & HOLD
%MESSAGE_DELAY = (DELAY_CHECK_ONE == true) ? "M1" : "(--" ; // M1 PAUSE
;////////////////
;////////////////
;///////// PAUSE/MESSAGE SETUP AND ENTRIES
;/////|||||\\\\\
;////
;//// RUNS AND REPEAT ONLY AFTER SET DELAYED TIME
[MESSAGE_DELAY]; CHECK THIS DELAYED!
[MESSAGE_HOLD_DELAY]; CHECK THAT DELAYED!
[MESSAGE_HOLD_DELAY]; --- CHECK LIST--- _______________________________________________________________________________________________ DID YOU CHECK THIS? ____________________________________________________________________________________________________ DID YOU CHECK THAT?____________________________________________________________________________________________________ IS YOUR DUST EXTRACTOR ON? ____________________________________________________________________________________________________ Don't you just hate lima beans? ____________________________________________________________________________________________________ Etc.
;////
;//// RUNS ONCE AND THEN REPEATS ONLY AFTER INACTIVITY SET BY RESET_TIME_TWO
[MESSAGE_HOLD_TWO]; CHECK THIS!
[MESSAGE_TWO]; CHECK THAT!
;////
;//// RUNS ONCE AND THEN REPEATS ONLY AFTER INACTIVITY SET BY RESET_TIME_ONE
[MESSAGE_HOLD]; __________________________________________________________________________________________ DID YOU CHECK THIS? ______________________________________________________________________________________________________________ DID YOU CHECK THAT?
[MESSAGE]; Don't you just hate lima beans?
;////
;//// RUN EVERY TIME MACRO IS RUN
M1; IS YOUR DUST EXTRACTOR ON?
;/////|||||\\\\\
;/////////
Advanced Macro Part B - Stop Event Macro
;// UPDATE TIME VALUE WHEN PROGRAM STOPS
%global.TIME_WAS = Date.now();
Try to avoid using the pop up stop button, it has a few bugs, it doesn’t reliably stop the job. Depending on the button clicked afterwards, it will start the job or throw some errors and possibly lock up gSender.