diff --git a/Marlin/cardreader.cpp b/Marlin/cardreader.cpp index 2fead538232b36ff1ab3c9345c54ef5ff194c92c..3910bee4ee0958bffca58f41468d57c813d1f2bf 100644 --- a/Marlin/cardreader.cpp +++ b/Marlin/cardreader.cpp @@ -282,6 +282,13 @@ void CardReader::pauseSDPrint() { if (sdprinting) sdprinting = false; } +void CardReader::stopSDPrint() { + if (sdprinting) { + sdprinting = false; + file.close(); + } +} + void CardReader::openLogFile(char* name) { logging = true; openFile(name, false); diff --git a/Marlin/cardreader.h b/Marlin/cardreader.h index a18b718b5648e0286e35bbfc37f7502dba838b87..78280fc8d18c157dd0054e0ffdf37f0caa8039f2 100644 --- a/Marlin/cardreader.h +++ b/Marlin/cardreader.h @@ -48,6 +48,7 @@ public: void openAndPrintFile(const char *name); void startFileprint(); void pauseSDPrint(); + void stopSDPrint(); void getStatus(); void printingHasFinished(); diff --git a/Marlin/ultralcd.cpp b/Marlin/ultralcd.cpp index 5372626849d0e3687bbaf4dc7a54918b58f6d719..6f5990acadaf8889e6185c1c859933f84a9540d6 100755 --- a/Marlin/ultralcd.cpp +++ b/Marlin/ultralcd.cpp @@ -496,17 +496,16 @@ static void lcd_status_screen() { } static void lcd_sdcard_stop() { - stepper.quick_stop(); - #if DISABLED(DELTA) && DISABLED(SCARA) - set_current_position_from_planner(); - #endif // !DELTA && !SCARA + card.stopSDPrint(); clear_command_queue(); - card.sdprinting = false; - card.closefile(); + stepper.quick_stop(); print_job_timer.stop(); thermalManager.autotempShutdown(); cancel_heatup = true; lcd_setstatus(MSG_PRINT_ABORTED, true); + #if DISABLED(DELTA) && DISABLED(SCARA) + set_current_position_from_planner(); + #endif // !DELTA && !SCARA } #endif //SDSUPPORT