Selaa lähdekoodia

unload filament can be repeated

PavelSindler 7 vuotta sitten
vanhempi
commit
020a7ec257

+ 50 - 43
Firmware/Marlin_main.cpp

@@ -5428,57 +5428,64 @@ case 404:  //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp
 
 		}
 		WRITE(BEEPER, LOW);
-		KEEPALIVE_STATE(IN_HANDLER);
-
-		custom_message = true;
-		lcd_setstatuspgm(MSG_UNLOADING_FILAMENT);
+		
+		lcd_change_fil_state = 0;
+		while (lcd_change_fil_state == 0) {
+			lcd_display_message_fullscreen_P(MSG_UNLOADING_FILAMENT);
+			KEEPALIVE_STATE(IN_HANDLER);
+			custom_message = true;
+			lcd_setstatuspgm(MSG_UNLOADING_FILAMENT);
 
-        // Unload filament
-        if(code_seen('L'))
-        {
-          target[E_AXIS]+= code_value();
-        }
-        else
-        {
-			#ifdef SNMM
+			// Unload filament
+			if (code_seen('L'))
+			{
+				target[E_AXIS] += code_value();
+			}
+			else
+			{
+#ifdef SNMM
 
-			#else
-				#ifdef FILAMENTCHANGE_FINALRETRACT
-							target[E_AXIS] += FILAMENTCHANGE_FINALRETRACT;
-				#endif
-			#endif // SNMM
-        }
+#else
+#ifdef FILAMENTCHANGE_FINALRETRACT
+				target[E_AXIS] += FILAMENTCHANGE_FINALRETRACT;
+#endif
+#endif // SNMM
+			}
 
 #ifdef SNMM
-		target[E_AXIS] += 12;
-		plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 3500, active_extruder);
-		target[E_AXIS] += 6;
-		plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 5000, active_extruder);
-		target[E_AXIS] += (FIL_LOAD_LENGTH * -1);
-		plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 5000, active_extruder);
-		st_synchronize();
-		target[E_AXIS] += (FIL_COOLING);
-		plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 50, active_extruder);
-		target[E_AXIS] += (FIL_COOLING*-1);
-		plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 50, active_extruder);
-		target[E_AXIS] += (bowden_length[snmm_extruder] *-1);
-		plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 3000, active_extruder);
-		st_synchronize();
+			target[E_AXIS] += 12;
+			plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 3500, active_extruder);
+			target[E_AXIS] += 6;
+			plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 5000, active_extruder);
+			target[E_AXIS] += (FIL_LOAD_LENGTH * -1);
+			plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 5000, active_extruder);
+			st_synchronize();
+			target[E_AXIS] += (FIL_COOLING);
+			plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 50, active_extruder);
+			target[E_AXIS] += (FIL_COOLING*-1);
+			plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 50, active_extruder);
+			target[E_AXIS] += (bowden_length[snmm_extruder] * -1);
+			plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 3000, active_extruder);
+			st_synchronize();
 
 #else
-//		plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], FILAMENTCHANGE_RFEED, active_extruder);
-		plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 3500/60, active_extruder);
+			//		plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], FILAMENTCHANGE_RFEED, active_extruder);
+			plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 3500 / 60, active_extruder);
 #endif // SNMM
-		     
 
-        //finish moves
-        st_synchronize();
-        //disable extruder steppers so filament can be removed
-        disable_e0();
-        disable_e1();
-        disable_e2();
-        delay(100);
-        
+
+			//finish moves
+			st_synchronize();
+			//disable extruder steppers so filament can be removed
+			disable_e0();
+			disable_e1();
+			disable_e2();
+			delay(100);
+			KEEPALIVE_STATE(PAUSED_FOR_USER);
+			lcd_change_fil_state = !lcd_show_fullscreen_message_yes_no_and_wait_P(MSG_UNLOAD_SUCCESSFULL, false, false);
+			//lcd_return_to_status();
+			lcd_update_enable(true);
+		}
         //Wait for user to insert filament
         lcd_wait_interact();
 		//load_filament_time = millis();

+ 7 - 0
Firmware/language_all.cpp

@@ -1953,6 +1953,13 @@ const char * const MSG_UNLOAD_FILAMENT_4_LANG_TABLE[LANG_NUM] PROGMEM = {
 	MSG_UNLOAD_FILAMENT_4_CZ
 };
 
+const char MSG_UNLOAD_SUCCESSFULL_EN[] PROGMEM = "Repeat unloading filament?";
+const char MSG_UNLOAD_SUCCESSFULL_CZ[] PROGMEM = "Opakovat vysunuti filamentu?";
+const char * const MSG_UNLOAD_SUCCESSFULL_LANG_TABLE[LANG_NUM] PROGMEM = {
+	MSG_UNLOAD_SUCCESSFULL_EN,
+	MSG_UNLOAD_SUCCESSFULL_CZ
+};
+
 const char MSG_USB_PRINTING_EN[] PROGMEM = "USB printing  ";
 const char MSG_USB_PRINTING_CZ[] PROGMEM = "Tisk z USB  ";
 const char * const MSG_USB_PRINTING_LANG_TABLE[LANG_NUM] PROGMEM = {

+ 2 - 0
Firmware/language_all.h

@@ -652,6 +652,8 @@ extern const char* const MSG_UNLOAD_FILAMENT_3_LANG_TABLE[LANG_NUM];
 #define MSG_UNLOAD_FILAMENT_3 LANG_TABLE_SELECT(MSG_UNLOAD_FILAMENT_3_LANG_TABLE)
 extern const char* const MSG_UNLOAD_FILAMENT_4_LANG_TABLE[LANG_NUM];
 #define MSG_UNLOAD_FILAMENT_4 LANG_TABLE_SELECT(MSG_UNLOAD_FILAMENT_4_LANG_TABLE)
+extern const char* const MSG_UNLOAD_SUCCESSFULL_LANG_TABLE[LANG_NUM];
+#define MSG_UNLOAD_SUCCESSFULL LANG_TABLE_SELECT(MSG_UNLOAD_SUCCESSFULL_LANG_TABLE)
 extern const char* const MSG_USB_PRINTING_LANG_TABLE[LANG_NUM];
 #define MSG_USB_PRINTING LANG_TABLE_SELECT(MSG_USB_PRINTING_LANG_TABLE)
 extern const char* const MSG_USED_LANG_TABLE[LANG_NUM];

+ 2 - 1
Firmware/language_cz.h

@@ -350,4 +350,5 @@
 #define MSG_REMOVE_STEEL_SHEET				"Odstrante tiskovy plat z heatbed prosim."
 #define MSG_PLACE_STEEL_SHEET				"Umistete prosim tiskovy plat na heatbed"
 #define MSG_RECOVER_PRINT					"Detekovan vypadek proudu.Obnovit tisk?"
-#define MSG_PRESS_TO_UNLOAD					"Pro vysunuti filamentu stisknete prosim tlacitko"	
+#define MSG_PRESS_TO_UNLOAD					"Pro vysunuti filamentu stisknete prosim tlacitko"	
+#define MSG_UNLOAD_SUCCESSFULL				"Opakovat vysunuti filamentu?"

+ 1 - 0
Firmware/language_en.h

@@ -367,3 +367,4 @@
 #define(length=17, lines=1) MSG_FANS_CHECK_ON					"Fans check   [on]"
 #define(length=17, lines=1) MSG_FANS_CHECK_OFF					"Fans check  [off]"
 #define(length=20, lines=4) MSG_PRESS_TO_UNLOAD					"Please press the knob to unload filament"
+#define(length=20, lines=2) MSG_UNLOAD_SUCCESSFULL				"Repeat unloading filament?"