Browse Source
Closes #3826 : SD printing will now pause and stop the print counter
The LCD menu items for SD printing pause/stop have been updated to control
also the print job timer. This commit also fixes a small output bug with
M78, the failed print counter was displaying the wrong value.
pull/1/head
João Brázio
9 years ago
No known key found for this signature in database
GPG Key ID: F62CFD37DFFDB540
2 changed files with
10 additions and
3 deletions
Marlin/printcounter.cpp
Marlin/ultralcd.cpp
@ -86,7 +86,7 @@ void PrintCounter::showStats() {
SERIAL_ECHOPGM ( " , Failed: " ) ;
SERIAL_ECHOPGM ( " , Failed: " ) ;
SERIAL_ECHO ( this - > data . totalPrints - this - > data . finishedPrints
SERIAL_ECHO ( this - > data . totalPrints - this - > data . finishedPrints
- ( this - > isRunning ( ) | | this - > isPaused ( ) ) ? 1 : 0 ) ; // Removes 1 from failures with an active counter
- ( ( this - > isRunning ( ) | | this - > isPaused ( ) ) ? 1 : 0 ) ) ; // Removes 1 from failures with an active counter
uint32_t t = this - > data . printTime / 60 ;
uint32_t t = this - > data . printTime / 60 ;
SERIAL_ECHOPGM ( " , Total print time: " ) ;
SERIAL_ECHOPGM ( " , Total print time: " ) ;
@ -470,14 +470,21 @@ inline void line_to_current(AxisEnum axis) {
# if ENABLED(SDSUPPORT)
# if ENABLED(SDSUPPORT)
static void lcd_sdcard_pause ( ) { card . pauseSDPrint ( ) ; }
static void lcd_sdcard_pause ( ) {
card . pauseSDPrint ( ) ;
print_job_timer . pause ( ) ;
}
static void lcd_sdcard_resume ( ) { card . startFileprint ( ) ; }
static void lcd_sdcard_resume ( ) {
card . startFileprint ( ) ;
print_job_timer . start ( ) ;
}
static void lcd_sdcard_stop ( ) {
static void lcd_sdcard_stop ( ) {
stepper . quick_stop ( ) ;
stepper . quick_stop ( ) ;
card . sdprinting = false ;
card . sdprinting = false ;
card . closefile ( ) ;
card . closefile ( ) ;
print_job_timer . stop ( ) ;
thermalManager . autotempShutdown ( ) ;
thermalManager . autotempShutdown ( ) ;
cancel_heatup = true ;
cancel_heatup = true ;
lcd_setstatus ( MSG_PRINT_ABORTED , true ) ;
lcd_setstatus ( MSG_PRINT_ABORTED , true ) ;