Set Ready

This commit is contained in:
3d-gussner 2023-10-25 17:13:17 +02:00
parent bbae8dd956
commit d276695ce7
22 changed files with 133 additions and 5 deletions

View File

@ -311,6 +311,19 @@ bool printJobOngoing();
bool printer_active(); bool printer_active();
enum class PrinterStatus : uint8_t
{
NotReady = 0,
IsReady = 1,
Idle = 2,
SDPrintingFinished = 3,
HostPrintingFinished = 4,
IsSDPrinting = 5,
IsHostPrinting = 6,
};
extern PrinterStatus printer_status;
//! Beware - mcode_in_progress is set as soon as the command gets really processed, //! Beware - mcode_in_progress is set as soon as the command gets really processed,
//! which is not the same as posting the M600 command into the command queue //! which is not the same as posting the M600 command into the command queue
//! There can be a considerable lag between posting M600 and its real processing which might result //! There can be a considerable lag between posting M600 and its real processing which might result

View File

@ -520,6 +520,8 @@ bool __attribute__((noinline)) printer_active() {
|| mesh_bed_leveling_flag; || mesh_bed_leveling_flag;
} }
PrinterStatus printer_status;
// Currently only used in one place, allowed to be inlined // Currently only used in one place, allowed to be inlined
bool check_fsensor() { bool check_fsensor() {
return printJobOngoing() return printJobOngoing()
@ -1733,7 +1735,7 @@ void loop()
usb_timer.start(); usb_timer.start();
} }
else if (usb_timer.expired(10000)) { //just need to check if it expired. Nothing else is needed to be done. else if (usb_timer.expired(10000)) { //just need to check if it expired. Nothing else is needed to be done.
; printer_status = PrinterStatus::HostPrintingFinished; //set printer state to show LCD menu after finished SD print and report correctly M862.7 Q when USB times out
} }
#ifdef PRUSA_M28 #ifdef PRUSA_M28
@ -5837,6 +5839,22 @@ Sigma_Exit:
#endif // Z_PROBE_REPEATABILITY_TEST #endif // Z_PROBE_REPEATABILITY_TEST
#endif // ENABLE_AUTO_BED_LEVELING #endif // ENABLE_AUTO_BED_LEVELING
/*!
### M72 - Set Ready <a href="https://reprap.org/wiki/G-code#M73:_Set_Ready">M72: Set Ready</a>
#### Usage
M72 [ S ]
#### Parameters
- `S` - Set printer ready
*/
case 72:
{
if(code_seen('S')) printer_status = PrinterStatus(code_value_uint8());
break;
}
/*! /*!
### M73 - Set/get print progress <a href="https://reprap.org/wiki/G-code#M73:_Set.2FGet_build_percentage">M73: Set/Get build percentage</a> ### M73 - Set/get print progress <a href="https://reprap.org/wiki/G-code#M73:_Set.2FGet_build_percentage">M73: Set/Get build percentage</a>
#### Usage #### Usage
@ -8040,6 +8058,8 @@ Sigma_Exit:
- M862.3 { P"<model_name>" | Q } - M862.3 { P"<model_name>" | Q }
- M862.4 { P<fw_version> | Q } - M862.4 { P<fw_version> | Q }
- M862.5 { P<gcode_level> | Q } - M862.5 { P<gcode_level> | Q }
- M862.6 Not used but reserved
- M862.7 { Q }
When run with P<> argument, the check is performed against the input value. When run with P<> argument, the check is performed against the input value.
When run with Q argument, the current value is shown. When run with Q argument, the current value is shown.
@ -8122,6 +8142,11 @@ Sigma_Exit:
else if(code_seen('Q')) else if(code_seen('Q'))
SERIAL_PROTOCOLLN(GCODE_LEVEL); SERIAL_PROTOCOLLN(GCODE_LEVEL);
break; break;
case ClPrintChecking::_Features: // ~ .6
break;
case ClPrintChecking::_PrinterState: // ~.7
SERIAL_PROTOCOLLN((int)printer_status);
break;
} }
break; break;
} }

View File

@ -274,6 +274,7 @@ void CardReader::startFileprint()
if(cardOK) if(cardOK)
{ {
sdprinting = true; sdprinting = true;
printer_status = PrinterStatus::IsSDPrinting; //set printer state to hide LCD menu and report correctly M862.7 Q while SD printing
#ifdef SDCARD_SORT_ALPHA #ifdef SDCARD_SORT_ALPHA
//flush_presort(); //flush_presort();
#endif #endif
@ -1019,6 +1020,7 @@ void CardReader::printingHasFinished()
else else
{ {
sdprinting = false; sdprinting = false;
printer_status = PrinterStatus::SDPrintingFinished; //set printer state to show LCD menu after finished SD print
if(SD_FINISHED_STEPPERRELEASE) if(SD_FINISHED_STEPPERRELEASE)
{ {
finishAndDisableSteppers(); finishAndDisableSteppers();

View File

@ -480,9 +480,10 @@ void get_command()
allow_when_stopped = true; allow_when_stopped = true;
// Handle the USB timer // Handle the USB timer
if ((*cmd_start == 'G') && !(IS_SD_PRINTING)) if ((*cmd_start == 'G') && !(IS_SD_PRINTING)) {
usb_timer.start(); usb_timer.start();
printer_status = PrinterStatus::IsHostPrinting; //set printer state busy printing to hide LCD menu and report correctly M862.7 Q while USB printing
}
if (allow_when_stopped == false && Stopped == true) { if (allow_when_stopped == false && Stopped == true) {
// Stopped can be set either during error states (thermal error: cannot continue), or // Stopped can be set either during error states (thermal error: cannot continue), or
// when a printer-initiated action is processed. In such case the printer will send to // when a printer-initiated action is processed. In such case the printer will send to

View File

@ -102,6 +102,7 @@ const char MSG_SELFTEST_MOTOR[] PROGMEM_I1 = ISTR("Motor"); ////MSG_SELFTEST_MOT
const char MSG_SELFTEST_FILAMENT_SENSOR[] PROGMEM_I1 = ISTR("Filament sensor"); ////MSG_SELFTEST_FILAMENT_SENSOR c=17 const char MSG_SELFTEST_FILAMENT_SENSOR[] PROGMEM_I1 = ISTR("Filament sensor"); ////MSG_SELFTEST_FILAMENT_SENSOR c=17
const char MSG_SELFTEST_WIRINGERROR[] PROGMEM_I1 = ISTR("Wiring error"); ////MSG_SELFTEST_WIRINGERROR c=18 const char MSG_SELFTEST_WIRINGERROR[] PROGMEM_I1 = ISTR("Wiring error"); ////MSG_SELFTEST_WIRINGERROR c=18
const char MSG_SETTINGS[] PROGMEM_I1 = ISTR("Settings"); ////MSG_SETTINGS c=18 const char MSG_SETTINGS[] PROGMEM_I1 = ISTR("Settings"); ////MSG_SETTINGS c=18
const char MSG_SET_READY[] PROGMEM_I1 = ISTR("Set Ready"); ////MSG_SET_READY c=13
const char MSG_SELECT_LANGUAGE[] PROGMEM_I1 = ISTR("Select language"); ////MSG_SELECT_LANGUAGE c=18 const char MSG_SELECT_LANGUAGE[] PROGMEM_I1 = ISTR("Select language"); ////MSG_SELECT_LANGUAGE c=18
const char MSG_SORTING_FILES[] PROGMEM_I1 = ISTR("Sorting files"); ////MSG_SORTING_FILES c=20 const char MSG_SORTING_FILES[] PROGMEM_I1 = ISTR("Sorting files"); ////MSG_SORTING_FILES c=20
const char MSG_TOTAL[] PROGMEM_I1 = ISTR("Total"); ////MSG_TOTAL c=6 const char MSG_TOTAL[] PROGMEM_I1 = ISTR("Total"); ////MSG_TOTAL c=6

View File

@ -104,6 +104,7 @@ extern const char MSG_SELFTEST_MOTOR[];
extern const char MSG_SELFTEST_FILAMENT_SENSOR[]; extern const char MSG_SELFTEST_FILAMENT_SENSOR[];
extern const char MSG_SELFTEST_WIRINGERROR[]; extern const char MSG_SELFTEST_WIRINGERROR[];
extern const char MSG_SETTINGS[]; extern const char MSG_SETTINGS[];
extern const char MSG_SET_READY[];
extern const char MSG_SELECT_LANGUAGE[]; extern const char MSG_SELECT_LANGUAGE[];
extern const char MSG_SORTING_FILES[]; extern const char MSG_SORTING_FILES[];
extern const char MSG_TOTAL[]; extern const char MSG_TOTAL[];

View File

@ -5118,6 +5118,16 @@ static void lcd_sheet_menu()
MENU_END(); MENU_END();
} }
//! @brief Set printer state
//! Sets the printer state for next print via LCD menu
//! @endcode
static void lcd_printer_status_toggle()
{
if (printer_status == PrinterStatus::NotReady) printer_status = PrinterStatus::IsReady;
else printer_status = PrinterStatus::NotReady;
enquecommandf_P(PSTR("M118 A1 action:%s"), (printer_status == PrinterStatus::NotReady) ? "not_ready" : "ready");
}
//! @brief Show Main Menu //! @brief Show Main Menu
//! //!
//! @code{.unparsed} //! @code{.unparsed}
@ -5190,7 +5200,9 @@ static void lcd_main_menu()
} else if (!Stopped) { } else if (!Stopped) {
MENU_ITEM_SUBMENU_P(_i("Preheat"), lcd_preheat_menu);////MSG_PREHEAT c=18 MENU_ITEM_SUBMENU_P(_i("Preheat"), lcd_preheat_menu);////MSG_PREHEAT c=18
} }
if (printer_status < PrinterStatus::IsSDPrinting) {
MENU_ITEM_TOGGLE_P(_T(MSG_SET_READY), (printer_status == PrinterStatus::IsReady) ? _T(MSG_YES) : _T(MSG_NO), lcd_printer_status_toggle);
}
if (mesh_bed_leveling_flag == false && homing_flag == false && !print_job_timer.isPaused() && !processing_tcode) { if (mesh_bed_leveling_flag == false && homing_flag == false && !print_job_timer.isPaused() && !processing_tcode) {
if (usb_timer.running()) { if (usb_timer.running()) {
MENU_ITEM_FUNCTION_P(_T(MSG_PAUSE_PRINT), lcd_pause_usb_print); MENU_ITEM_FUNCTION_P(_T(MSG_PAUSE_PRINT), lcd_pause_usb_print);
@ -5643,6 +5655,7 @@ void print_stop(bool interactive)
// return to status is required to continue processing in the main loop! // return to status is required to continue processing in the main loop!
lcd_commands_type = LcdCommands::StopPrint; lcd_commands_type = LcdCommands::StopPrint;
printer_status = PrinterStatus::NotReady; //set printer state to show LCD menu after print has been stopped and report correctly M862.7 Q
lcd_return_to_status(); lcd_return_to_status();
} }

View File

@ -33,7 +33,9 @@ enum class ClPrintChecking:uint_least8_t
_Model=2, _Model=2,
_Smodel=3, _Smodel=3,
_Version=4, _Version=4,
_Gcode=5 _Gcode=5,
_Features=6,
_PrinterState=7
}; };
enum class ClNozzleDiameter:uint_least8_t enum class ClNozzleDiameter:uint_least8_t

View File

@ -1939,6 +1939,11 @@ msgstr ""
msgid "Sensor verified, remove the filament now." msgid "Sensor verified, remove the filament now."
msgstr "" msgstr ""
#. MSG_SET_READY c=13
#: ../../Firmware/messages.cpp:104 ../../Firmware/ultralcd.cpp:5204
msgid "Set Ready"
msgstr ""
#. MSG_SET_TEMPERATURE c=20 #. MSG_SET_TEMPERATURE c=20
#: ../../Firmware/ultralcd.cpp:2706 #: ../../Firmware/ultralcd.cpp:2706
msgid "Set temperature:" msgid "Set temperature:"

View File

@ -2555,6 +2555,11 @@ msgstr "Citlivost"
msgid "Mesh bed leveling failed. Please run Z calibration." msgid "Mesh bed leveling failed. Please run Z calibration."
msgstr "Mesh Bed Leveling selhal. Spusťte kalibraci osy Z." msgstr "Mesh Bed Leveling selhal. Spusťte kalibraci osy Z."
#. MSG_SET_READY c=13
#: ../../Firmware/messages.cpp:104 ../../Firmware/ultralcd.cpp:5204
msgid "Set Ready"
msgstr "Připravit"
#~ msgid "Remove old filament and press the knob to start loading new filament." #~ msgid "Remove old filament and press the knob to start loading new filament."
#~ msgstr "Vyjmete stary filament a stisknete tlacitko pro zavedeni noveho." #~ msgstr "Vyjmete stary filament a stisknete tlacitko pro zavedeni noveho."

View File

@ -2583,6 +2583,11 @@ msgstr "Sensitivität"
msgid "Mesh bed leveling failed. Please run Z calibration." msgid "Mesh bed leveling failed. Please run Z calibration."
msgstr "MeshBett Ausgleich fehlgeschlagen. Z Kalibrierung ausführen." msgstr "MeshBett Ausgleich fehlgeschlagen. Z Kalibrierung ausführen."
#. MSG_SET_READY c=13
#: ../../Firmware/messages.cpp:104 ../../Firmware/ultralcd.cpp:5204
msgid "Set Ready"
msgstr "Bereit setzen"
#~ msgid "Remove old filament and press the knob to start loading new filament." #~ msgid "Remove old filament and press the knob to start loading new filament."
#~ msgstr "Entferne das alte Fil. und drücke den Knopf, um das neue zu laden." #~ msgstr "Entferne das alte Fil. und drücke den Knopf, um das neue zu laden."

View File

@ -2578,6 +2578,11 @@ msgstr "Sensibilidad"
msgid "Mesh bed leveling failed. Please run Z calibration." msgid "Mesh bed leveling failed. Please run Z calibration."
msgstr "Nivelación fallida. Ejecute la calibración Z." msgstr "Nivelación fallida. Ejecute la calibración Z."
#. MSG_SET_READY c=13
#: ../../Firmware/messages.cpp:104 ../../Firmware/ultralcd.cpp:5204
msgid "Set Ready"
msgstr "Listo"
#~ msgid "Remove old filament and press the knob to start loading new filament." #~ msgid "Remove old filament and press the knob to start loading new filament."
#~ msgstr "" #~ msgstr ""
#~ "Retira el fil. viejo y presiona el dial para comenzar a cargar el nuevo." #~ "Retira el fil. viejo y presiona el dial para comenzar a cargar el nuevo."

View File

@ -2590,6 +2590,11 @@ msgstr "Sensibilité"
msgid "Mesh bed leveling failed. Please run Z calibration." msgid "Mesh bed leveling failed. Please run Z calibration."
msgstr "Mesh bed leveling a échoué. Veuillez procéder à l'étalonnage Z." msgstr "Mesh bed leveling a échoué. Veuillez procéder à l'étalonnage Z."
#. MSG_SET_READY c=13
#: ../../Firmware/messages.cpp:104 ../../Firmware/ultralcd.cpp:5204
msgid "Set Ready"
msgstr "Ensemb. prête"
#~ msgid "Remove old filament and press the knob to start loading new filament." #~ msgid "Remove old filament and press the knob to start loading new filament."
#~ msgstr "" #~ msgstr ""
#~ "Retirez l'ancien fil. puis appuyez sur le bouton pour charger le nouveau." #~ "Retirez l'ancien fil. puis appuyez sur le bouton pour charger le nouveau."

View File

@ -2572,6 +2572,11 @@ msgstr "Osjetljivost"
msgid "Mesh bed leveling failed. Please run Z calibration." msgid "Mesh bed leveling failed. Please run Z calibration."
msgstr "Niveliranje podloge nije uspijelo. Pokrenite Z kalibraciju." msgstr "Niveliranje podloge nije uspijelo. Pokrenite Z kalibraciju."
#. MSG_SET_READY c=13
#: ../../Firmware/messages.cpp:104 ../../Firmware/ultralcd.cpp:5204
msgid "Set Ready"
msgstr "Set spreman"
#~ msgid "Remove old filament and press the knob to start loading new filament." #~ msgid "Remove old filament and press the knob to start loading new filament."
#~ msgstr "Uklonite stari fil. i pritisnite gumb za pocetak stavljanja novog." #~ msgstr "Uklonite stari fil. i pritisnite gumb za pocetak stavljanja novog."

View File

@ -2577,6 +2577,11 @@ msgstr "Érzékenység"
msgid "Mesh bed leveling failed. Please run Z calibration." msgid "Mesh bed leveling failed. Please run Z calibration."
msgstr "Sikertelen asztal szintezés. Kérjük, futtasd a Z kalibrálást." msgstr "Sikertelen asztal szintezés. Kérjük, futtasd a Z kalibrálást."
#. MSG_SET_READY c=13
#: ../../Firmware/messages.cpp:104 ../../Firmware/ultralcd.cpp:5204
msgid "Set Ready"
msgstr "Készen áll"
#~ msgid "Remove old filament and press the knob to start loading new filament." #~ msgid "Remove old filament and press the knob to start loading new filament."
#~ msgstr "Vedd ki a regi fil., majd nyomd meg a gombot az uj fil. betoltesehez." #~ msgstr "Vedd ki a regi fil., majd nyomd meg a gombot az uj fil. betoltesehez."

View File

@ -2578,6 +2578,11 @@ msgstr "Sensibilità"
msgid "Mesh bed leveling failed. Please run Z calibration." msgid "Mesh bed leveling failed. Please run Z calibration."
msgstr "Livellamento piano fallito. Si prega di eseguire la calibrazione Z." msgstr "Livellamento piano fallito. Si prega di eseguire la calibrazione Z."
#. MSG_SET_READY c=13
#: ../../Firmware/messages.cpp:104 ../../Firmware/ultralcd.cpp:5204
msgid "Set Ready"
msgstr "Impos. Pronta"
#~ msgid "Remove old filament and press the knob to start loading new filament." #~ msgid "Remove old filament and press the knob to start loading new filament."
#~ msgstr "Rimuovi il fil. precedente e premi la manopola per caricare il nuovo." #~ msgstr "Rimuovi il fil. precedente e premi la manopola per caricare il nuovo."

View File

@ -2580,6 +2580,11 @@ msgstr "Sensitiviteit"
msgid "Mesh bed leveling failed. Please run Z calibration." msgid "Mesh bed leveling failed. Please run Z calibration."
msgstr "Bed leveling mislukt. Voer de Z-kalibratie uit." msgstr "Bed leveling mislukt. Voer de Z-kalibratie uit."
#. MSG_SET_READY c=13
#: ../../Firmware/messages.cpp:104 ../../Firmware/ultralcd.cpp:5204
msgid "Set Ready"
msgstr "Gereed zetten"
#~ msgid "Remove old filament and press the knob to start loading new filament." #~ msgid "Remove old filament and press the knob to start loading new filament."
#~ msgstr "" #~ msgstr ""
#~ "Verwijder de oude filament en druk op de knop om nieuwe filament te laden." #~ "Verwijder de oude filament en druk op de knop om nieuwe filament te laden."

View File

@ -2554,6 +2554,11 @@ msgstr "Sensitivitet"
msgid "Mesh bed leveling failed. Please run Z calibration." msgid "Mesh bed leveling failed. Please run Z calibration."
msgstr "Sengeplanering feilet. Kjør Z-kalibrering." msgstr "Sengeplanering feilet. Kjør Z-kalibrering."
#. MSG_SET_READY c=13
#: ../../Firmware/messages.cpp:104 ../../Firmware/ultralcd.cpp:5204
msgid "Set Ready"
msgstr "Gjør klar"
#~ msgid "Remove old filament and press the knob to start loading new filament." #~ msgid "Remove old filament and press the knob to start loading new filament."
#~ msgstr "Ta bort det gamle filamentet og trykk valghjulet for å laste et nytt." #~ msgstr "Ta bort det gamle filamentet og trykk valghjulet for å laste et nytt."

View File

@ -2572,6 +2572,11 @@ msgstr "Czułość"
msgid "Mesh bed leveling failed. Please run Z calibration." msgid "Mesh bed leveling failed. Please run Z calibration."
msgstr "Poziomowanie stołu nieudane. Proszę uruchomić kalibrację Z." msgstr "Poziomowanie stołu nieudane. Proszę uruchomić kalibrację Z."
#. MSG_SET_READY c=13
#: ../../Firmware/messages.cpp:104 ../../Firmware/ultralcd.cpp:5204
msgid "Set Ready"
msgstr "Ust. gotowość"
#~ msgid "Remove old filament and press the knob to start loading new filament." #~ msgid "Remove old filament and press the knob to start loading new filament."
#~ msgstr "Wyciągnij poprzedni filament i naciśnij pokrętło aby załadować nowy." #~ msgstr "Wyciągnij poprzedni filament i naciśnij pokrętło aby załadować nowy."

View File

@ -2578,6 +2578,11 @@ msgstr "Sensibilitate"
msgid "Mesh bed leveling failed. Please run Z calibration." msgid "Mesh bed leveling failed. Please run Z calibration."
msgstr "Nivelarea patului a eșuat. Rulează Calibrare Z." msgstr "Nivelarea patului a eșuat. Rulează Calibrare Z."
#. MSG_SET_READY c=13
#: ../../Firmware/messages.cpp:104 ../../Firmware/ultralcd.cpp:5204
msgid "Set Ready"
msgstr "Set pregătit"
#~ msgid "Remove old filament and press the knob to start loading new filament." #~ msgid "Remove old filament and press the knob to start loading new filament."
#~ msgstr "Scoateți fil. vechi și apăsați butonul pentru a încărca unul nou." #~ msgstr "Scoateți fil. vechi și apăsați butonul pentru a încărca unul nou."

View File

@ -2560,6 +2560,11 @@ msgstr "Citlivosť"
msgid "Mesh bed leveling failed. Please run Z calibration." msgid "Mesh bed leveling failed. Please run Z calibration."
msgstr "Vyrovnanie platne zlyhalo. Spustite kalibráciu Z." msgstr "Vyrovnanie platne zlyhalo. Spustite kalibráciu Z."
#. MSG_SET_READY c=13
#: ../../Firmware/messages.cpp:104 ../../Firmware/ultralcd.cpp:5204
msgid "Set Ready"
msgstr "Pripravte sa"
#~ msgid "Remove old filament and press the knob to start loading new filament." #~ msgid "Remove old filament and press the knob to start loading new filament."
#~ msgstr "Vyberte starý filament a stlačte tlačidlo pre zavedenie nového." #~ msgstr "Vyberte starý filament a stlačte tlačidlo pre zavedenie nového."

View File

@ -2567,6 +2567,11 @@ msgstr "Känslighet"
msgid "Mesh bed leveling failed. Please run Z calibration." msgid "Mesh bed leveling failed. Please run Z calibration."
msgstr "Bäddnivelleringen felade. Kör Z-kalibrering." msgstr "Bäddnivelleringen felade. Kör Z-kalibrering."
#. MSG_SET_READY c=13
#: ../../Firmware/messages.cpp:104 ../../Firmware/ultralcd.cpp:5204
msgid "Set Ready"
msgstr "Gör klar"
#~ msgid "Remove old filament and press the knob to start loading new filament." #~ msgid "Remove old filament and press the knob to start loading new filament."
#~ msgstr "Ta bort det gamla fil. och tryck på knappen för att börja ladda nytt." #~ msgstr "Ta bort det gamla fil. och tryck på knappen för att börja ladda nytt."