Merge pull request #3759 from thinkyhead/rc_more_printcounter

Printcounter bugfix and some new features
This commit is contained in:
Scott Lahteine 2016-05-14 15:36:31 -07:00
commit c8a40f06a6
20 changed files with 277 additions and 40 deletions

View file

@ -755,6 +755,19 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
#define ABS_PREHEAT_HPB_TEMP 110 #define ABS_PREHEAT_HPB_TEMP 110
#define ABS_PREHEAT_FAN_SPEED 0 // Insert Value between 0 and 255 #define ABS_PREHEAT_FAN_SPEED 0 // Insert Value between 0 and 255
//
// Print job timer
//
// Enable this option to automatically start and stop the
// print job timer when M104 and M109 commands are received.
//
// In all cases the timer can be started and stopped using
// the following commands:
//
// - M75 - Start the print job timer
// - M76 - Pause the print job timer
// - M77 - Stop the print job timer
#define PRINTJOB_TIMER_AUTOSTART
// //
// Print Counter // Print Counter

View file

@ -4248,30 +4248,27 @@ inline void gcode_M42() {
/** /**
* M75: Start print timer * M75: Start print timer
*/ */
inline void gcode_M75() { inline void gcode_M75() { print_job_timer.start(); }
print_job_timer.start();
}
/** /**
* M76: Pause print timer * M76: Pause print timer
*/ */
inline void gcode_M76() { inline void gcode_M76() { print_job_timer.pause(); }
print_job_timer.pause();
}
/** /**
* M77: Stop print timer * M77: Stop print timer
*/ */
inline void gcode_M77() { inline void gcode_M77() { print_job_timer.stop(); }
print_job_timer.stop();
}
#if ENABLED(PRINTCOUNTER) #if ENABLED(PRINTCOUNTER)
/*+ /*+
* M78: Show print statistics * M78: Show print statistics
*/ */
inline void gcode_M78() { inline void gcode_M78() {
print_job_timer.showStats(); // "M78 S78" will reset the statistics
if (code_seen('S') && code_value_short() == 78)
print_job_timer.initStats();
else print_job_timer.showStats();
} }
#endif #endif
@ -4290,21 +4287,23 @@ inline void gcode_M104() {
thermalManager.setTargetHotend(temp == 0.0 ? 0.0 : temp + duplicate_extruder_temp_offset, 1); thermalManager.setTargetHotend(temp == 0.0 ? 0.0 : temp + duplicate_extruder_temp_offset, 1);
#endif #endif
/** #if ENABLED(PRINTJOB_TIMER_AUTOSTART)
* We use half EXTRUDE_MINTEMP here to allow nozzles to be put into hot /**
* stand by mode, for instance in a dual extruder setup, without affecting * We use half EXTRUDE_MINTEMP here to allow nozzles to be put into hot
* the running print timer. * stand by mode, for instance in a dual extruder setup, without affecting
*/ * the running print timer.
if (temp <= (EXTRUDE_MINTEMP)/2) { */
print_job_timer.stop(); if (temp <= (EXTRUDE_MINTEMP)/2) {
LCD_MESSAGEPGM(WELCOME_MSG); print_job_timer.stop();
} LCD_MESSAGEPGM(WELCOME_MSG);
/** }
* We do not check if the timer is already running because this check will /**
* be done for us inside the Stopwatch::start() method thus a running timer * We do not check if the timer is already running because this check will
* will not restart. * be done for us inside the Stopwatch::start() method thus a running timer
*/ * will not restart.
else print_job_timer.start(); */
else print_job_timer.start();
#endif
if (temp > thermalManager.degHotend(target_extruder)) LCD_MESSAGEPGM(MSG_HEATING); if (temp > thermalManager.degHotend(target_extruder)) LCD_MESSAGEPGM(MSG_HEATING);
} }
@ -4443,21 +4442,23 @@ inline void gcode_M109() {
thermalManager.setTargetHotend(temp == 0.0 ? 0.0 : temp + duplicate_extruder_temp_offset, 1); thermalManager.setTargetHotend(temp == 0.0 ? 0.0 : temp + duplicate_extruder_temp_offset, 1);
#endif #endif
/** #if ENABLED(PRINTJOB_TIMER_AUTOSTART)
* We use half EXTRUDE_MINTEMP here to allow nozzles to be put into hot /**
* stand by mode, for instance in a dual extruder setup, without affecting * We use half EXTRUDE_MINTEMP here to allow nozzles to be put into hot
* the running print timer. * stand by mode, for instance in a dual extruder setup, without affecting
*/ * the running print timer.
if (temp <= (EXTRUDE_MINTEMP)/2) { */
print_job_timer.stop(); if (temp <= (EXTRUDE_MINTEMP)/2) {
LCD_MESSAGEPGM(WELCOME_MSG); print_job_timer.stop();
} LCD_MESSAGEPGM(WELCOME_MSG);
/** }
* We do not check if the timer is already running because this check will /**
* be done for us inside the Stopwatch::start() method thus a running timer * We do not check if the timer is already running because this check will
* will not restart. * be done for us inside the Stopwatch::start() method thus a running timer
*/ * will not restart.
else print_job_timer.start(); */
else print_job_timer.start();
#endif
if (temp > thermalManager.degHotend(target_extruder)) LCD_MESSAGEPGM(MSG_HEATING); if (temp > thermalManager.degHotend(target_extruder)) LCD_MESSAGEPGM(MSG_HEATING);
} }

View file

@ -738,6 +738,19 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
#define ABS_PREHEAT_HPB_TEMP 100 #define ABS_PREHEAT_HPB_TEMP 100
#define ABS_PREHEAT_FAN_SPEED 255 // Insert Value between 0 and 255 #define ABS_PREHEAT_FAN_SPEED 255 // Insert Value between 0 and 255
//
// Print job timer
//
// Enable this option to automatically start and stop the
// print job timer when M104 and M109 commands are received.
//
// In all cases the timer can be started and stopped using
// the following commands:
//
// - M75 - Start the print job timer
// - M76 - Pause the print job timer
// - M77 - Stop the print job timer
#define PRINTJOB_TIMER_AUTOSTART
// //
// Print Counter // Print Counter

View file

@ -747,6 +747,19 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
#define ABS_PREHEAT_HPB_TEMP 100 #define ABS_PREHEAT_HPB_TEMP 100
#define ABS_PREHEAT_FAN_SPEED 255 // Insert Value between 0 and 255 #define ABS_PREHEAT_FAN_SPEED 255 // Insert Value between 0 and 255
//
// Print job timer
//
// Enable this option to automatically start and stop the
// print job timer when M104 and M109 commands are received.
//
// In all cases the timer can be started and stopped using
// the following commands:
//
// - M75 - Start the print job timer
// - M76 - Pause the print job timer
// - M77 - Stop the print job timer
#define PRINTJOB_TIMER_AUTOSTART
// //
// Print Counter // Print Counter

View file

@ -749,6 +749,19 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
#define ABS_PREHEAT_HPB_TEMP 110 #define ABS_PREHEAT_HPB_TEMP 110
#define ABS_PREHEAT_FAN_SPEED 0 // Insert Value between 0 and 255 #define ABS_PREHEAT_FAN_SPEED 0 // Insert Value between 0 and 255
//
// Print job timer
//
// Enable this option to automatically start and stop the
// print job timer when M104 and M109 commands are received.
//
// In all cases the timer can be started and stopped using
// the following commands:
//
// - M75 - Start the print job timer
// - M76 - Pause the print job timer
// - M77 - Stop the print job timer
#define PRINTJOB_TIMER_AUTOSTART
// //
// Print Counter // Print Counter

View file

@ -772,6 +772,19 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
#define ABS_PREHEAT_HPB_TEMP 60 // K8200: set back to 110 if you have an upgraded heatbed power supply #define ABS_PREHEAT_HPB_TEMP 60 // K8200: set back to 110 if you have an upgraded heatbed power supply
#define ABS_PREHEAT_FAN_SPEED 0 // Insert Value between 0 and 255 #define ABS_PREHEAT_FAN_SPEED 0 // Insert Value between 0 and 255
//
// Print job timer
//
// Enable this option to automatically start and stop the
// print job timer when M104 and M109 commands are received.
//
// In all cases the timer can be started and stopped using
// the following commands:
//
// - M75 - Start the print job timer
// - M76 - Pause the print job timer
// - M77 - Stop the print job timer
#define PRINTJOB_TIMER_AUTOSTART
// //
// Print Counter // Print Counter

View file

@ -755,6 +755,19 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
#define ABS_PREHEAT_HPB_TEMP 110 #define ABS_PREHEAT_HPB_TEMP 110
#define ABS_PREHEAT_FAN_SPEED 0 // Insert Value between 0 and 255 #define ABS_PREHEAT_FAN_SPEED 0 // Insert Value between 0 and 255
//
// Print job timer
//
// Enable this option to automatically start and stop the
// print job timer when M104 and M109 commands are received.
//
// In all cases the timer can be started and stopped using
// the following commands:
//
// - M75 - Start the print job timer
// - M76 - Pause the print job timer
// - M77 - Stop the print job timer
#define PRINTJOB_TIMER_AUTOSTART
// //
// Print Counter // Print Counter

View file

@ -750,6 +750,19 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
#define ABS_PREHEAT_HPB_TEMP 110 #define ABS_PREHEAT_HPB_TEMP 110
#define ABS_PREHEAT_FAN_SPEED 255 // Insert Value between 0 and 255 #define ABS_PREHEAT_FAN_SPEED 255 // Insert Value between 0 and 255
//
// Print job timer
//
// Enable this option to automatically start and stop the
// print job timer when M104 and M109 commands are received.
//
// In all cases the timer can be started and stopped using
// the following commands:
//
// - M75 - Start the print job timer
// - M76 - Pause the print job timer
// - M77 - Stop the print job timer
#define PRINTJOB_TIMER_AUTOSTART
// //
// Print Counter // Print Counter

View file

@ -763,6 +763,19 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
#define ABS_PREHEAT_HPB_TEMP 100 #define ABS_PREHEAT_HPB_TEMP 100
#define ABS_PREHEAT_FAN_SPEED 255 // Insert Value between 0 and 255 #define ABS_PREHEAT_FAN_SPEED 255 // Insert Value between 0 and 255
//
// Print job timer
//
// Enable this option to automatically start and stop the
// print job timer when M104 and M109 commands are received.
//
// In all cases the timer can be started and stopped using
// the following commands:
//
// - M75 - Start the print job timer
// - M76 - Pause the print job timer
// - M77 - Stop the print job timer
#define PRINTJOB_TIMER_AUTOSTART
// //
// Print Counter // Print Counter

View file

@ -776,6 +776,19 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
#define ABS_PREHEAT_HPB_TEMP 110 #define ABS_PREHEAT_HPB_TEMP 110
#define ABS_PREHEAT_FAN_SPEED 0 // Insert Value between 0 and 255 #define ABS_PREHEAT_FAN_SPEED 0 // Insert Value between 0 and 255
//
// Print job timer
//
// Enable this option to automatically start and stop the
// print job timer when M104 and M109 commands are received.
//
// In all cases the timer can be started and stopped using
// the following commands:
//
// - M75 - Start the print job timer
// - M76 - Pause the print job timer
// - M77 - Stop the print job timer
#define PRINTJOB_TIMER_AUTOSTART
// //
// Print Counter // Print Counter

View file

@ -747,6 +747,19 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
#define ABS_PREHEAT_HPB_TEMP 100 #define ABS_PREHEAT_HPB_TEMP 100
#define ABS_PREHEAT_FAN_SPEED 255 // Insert Value between 0 and 255 #define ABS_PREHEAT_FAN_SPEED 255 // Insert Value between 0 and 255
//
// Print job timer
//
// Enable this option to automatically start and stop the
// print job timer when M104 and M109 commands are received.
//
// In all cases the timer can be started and stopped using
// the following commands:
//
// - M75 - Start the print job timer
// - M76 - Pause the print job timer
// - M77 - Stop the print job timer
#define PRINTJOB_TIMER_AUTOSTART
// //
// Print Counter // Print Counter

View file

@ -755,6 +755,19 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
#define ABS_PREHEAT_HPB_TEMP 110 #define ABS_PREHEAT_HPB_TEMP 110
#define ABS_PREHEAT_FAN_SPEED 0 // Insert Value between 0 and 255 #define ABS_PREHEAT_FAN_SPEED 0 // Insert Value between 0 and 255
//
// Print job timer
//
// Enable this option to automatically start and stop the
// print job timer when M104 and M109 commands are received.
//
// In all cases the timer can be started and stopped using
// the following commands:
//
// - M75 - Start the print job timer
// - M76 - Pause the print job timer
// - M77 - Stop the print job timer
#define PRINTJOB_TIMER_AUTOSTART
// //
// Print Counter // Print Counter

View file

@ -884,6 +884,19 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
#define ABS_PREHEAT_HPB_TEMP 100 #define ABS_PREHEAT_HPB_TEMP 100
#define ABS_PREHEAT_FAN_SPEED 255 // Insert Value between 0 and 255 #define ABS_PREHEAT_FAN_SPEED 255 // Insert Value between 0 and 255
//
// Print job timer
//
// Enable this option to automatically start and stop the
// print job timer when M104 and M109 commands are received.
//
// In all cases the timer can be started and stopped using
// the following commands:
//
// - M75 - Start the print job timer
// - M76 - Pause the print job timer
// - M77 - Stop the print job timer
#define PRINTJOB_TIMER_AUTOSTART
// //
// Print Counter // Print Counter

View file

@ -884,6 +884,19 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
#define ABS_PREHEAT_HPB_TEMP 100 #define ABS_PREHEAT_HPB_TEMP 100
#define ABS_PREHEAT_FAN_SPEED 255 // Insert Value between 0 and 255 #define ABS_PREHEAT_FAN_SPEED 255 // Insert Value between 0 and 255
//
// Print job timer
//
// Enable this option to automatically start and stop the
// print job timer when M104 and M109 commands are received.
//
// In all cases the timer can be started and stopped using
// the following commands:
//
// - M75 - Start the print job timer
// - M76 - Pause the print job timer
// - M77 - Stop the print job timer
#define PRINTJOB_TIMER_AUTOSTART
// //
// Print Counter // Print Counter

View file

@ -888,6 +888,19 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
#define ABS_PREHEAT_HPB_TEMP 100 #define ABS_PREHEAT_HPB_TEMP 100
#define ABS_PREHEAT_FAN_SPEED 255 // Insert Value between 0 and 255 #define ABS_PREHEAT_FAN_SPEED 255 // Insert Value between 0 and 255
//
// Print job timer
//
// Enable this option to automatically start and stop the
// print job timer when M104 and M109 commands are received.
//
// In all cases the timer can be started and stopped using
// the following commands:
//
// - M75 - Start the print job timer
// - M76 - Pause the print job timer
// - M77 - Stop the print job timer
#define PRINTJOB_TIMER_AUTOSTART
// //
// Print Counter // Print Counter

View file

@ -881,6 +881,19 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
#define ABS_PREHEAT_HPB_TEMP 100 #define ABS_PREHEAT_HPB_TEMP 100
#define ABS_PREHEAT_FAN_SPEED 255 // Insert Value between 0 and 255 #define ABS_PREHEAT_FAN_SPEED 255 // Insert Value between 0 and 255
//
// Print job timer
//
// Enable this option to automatically start and stop the
// print job timer when M104 and M109 commands are received.
//
// In all cases the timer can be started and stopped using
// the following commands:
//
// - M75 - Start the print job timer
// - M76 - Pause the print job timer
// - M77 - Stop the print job timer
#define PRINTJOB_TIMER_AUTOSTART
// //
// Print Counter // Print Counter

View file

@ -889,6 +889,19 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
#define ABS_PREHEAT_HPB_TEMP 100 #define ABS_PREHEAT_HPB_TEMP 100
#define ABS_PREHEAT_FAN_SPEED 255 // Insert Value between 0 and 255 #define ABS_PREHEAT_FAN_SPEED 255 // Insert Value between 0 and 255
//
// Print job timer
//
// Enable this option to automatically start and stop the
// print job timer when M104 and M109 commands are received.
//
// In all cases the timer can be started and stopped using
// the following commands:
//
// - M75 - Start the print job timer
// - M76 - Pause the print job timer
// - M77 - Stop the print job timer
#define PRINTJOB_TIMER_AUTOSTART
// //
// Print Counter // Print Counter

View file

@ -758,6 +758,19 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = false; // set to true to invert the l
#define ABS_PREHEAT_HPB_TEMP 100 #define ABS_PREHEAT_HPB_TEMP 100
#define ABS_PREHEAT_FAN_SPEED 255 // Insert Value between 0 and 255 #define ABS_PREHEAT_FAN_SPEED 255 // Insert Value between 0 and 255
//
// Print job timer
//
// Enable this option to automatically start and stop the
// print job timer when M104 and M109 commands are received.
//
// In all cases the timer can be started and stopped using
// the following commands:
//
// - M75 - Start the print job timer
// - M76 - Pause the print job timer
// - M77 - Stop the print job timer
#define PRINTJOB_TIMER_AUTOSTART
// //
// Print Counter // Print Counter

View file

@ -749,6 +749,19 @@ const bool Z_MIN_PROBE_ENDSTOP_INVERTING = true; // set to true to invert the lo
#define ABS_PREHEAT_HPB_TEMP 100 #define ABS_PREHEAT_HPB_TEMP 100
#define ABS_PREHEAT_FAN_SPEED 255 // Insert Value between 0 and 255 #define ABS_PREHEAT_FAN_SPEED 255 // Insert Value between 0 and 255
//
// Print job timer
//
// Enable this option to automatically start and stop the
// print job timer when M104 and M109 commands are received.
//
// In all cases the timer can be started and stopped using
// the following commands:
//
// - M75 - Start the print job timer
// - M76 - Pause the print job timer
// - M77 - Stop the print job timer
#define PRINTJOB_TIMER_AUTOSTART
// //
// Print Counter // Print Counter

View file

@ -149,7 +149,9 @@ void PrintCounter::stop() {
PrintCounter::debug(PSTR("stop")); PrintCounter::debug(PSTR("stop"));
#endif #endif
if (!this->isRunning()) return;
super::stop(); super::stop();
this->data.finishedPrints++; this->data.finishedPrints++;
this->data.printTime += this->deltaDuration(); this->data.printTime += this->deltaDuration();
this->saveStats(); this->saveStats();