diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp index 4fa3e65841ed49266b359d866181de70ceb65f1c..509ec3066560ebc8847459e06b929d67e767bb27 100644 --- a/Marlin/Marlin_main.cpp +++ b/Marlin/Marlin_main.cpp @@ -3938,20 +3938,14 @@ inline void gcode_M121() { enable_endstops(false); } #endif // BLINKM /** - * M200: Set filament diameter and set E axis units to cubic millimeters (use S0 to set back to millimeters). - * T<extruder> - * D<millimeters> + * M200: Set filament diameter and set E axis units to cubic millimeters + * + * T<extruder> - Optional extruder number. Current extruder if omitted. + * D<mm> - Diameter of the filament. Use "D0" to set units back to millimeters. */ inline void gcode_M200() { - int tmp_extruder = active_extruder; - if (code_seen('T')) { - tmp_extruder = code_value_short(); - if (tmp_extruder >= EXTRUDERS) { - SERIAL_ECHO_START; - SERIAL_ECHO(MSG_M200_INVALID_EXTRUDER); - return; - } - } + + if (setTargetedHotend(200)) return; if (code_seen('D')) { float diameter = code_value(); @@ -3960,7 +3954,7 @@ inline void gcode_M200() { // for all extruders volumetric_enabled = (diameter != 0.0); if (volumetric_enabled) { - filament_size[tmp_extruder] = diameter; + filament_size[target_extruder] = diameter; // make sure all extruders have some sane value for the filament size for (int i=0; i<EXTRUDERS; i++) if (! filament_size[i]) filament_size[i] = DEFAULT_NOMINAL_FILAMENT_DIA; @@ -6524,30 +6518,25 @@ void Stop() { } } -bool setTargetedHotend(int code){ +bool setTargetedHotend(int code) { target_extruder = active_extruder; if (code_seen('T')) { target_extruder = code_value_short(); if (target_extruder >= EXTRUDERS) { - SERIAL_ECHO_START; - switch(code){ + switch(code) { case 104: - SERIAL_ECHO(MSG_M104_INVALID_EXTRUDER); - break; case 105: - SERIAL_ECHO(MSG_M105_INVALID_EXTRUDER); - break; case 109: - SERIAL_ECHO(MSG_M109_INVALID_EXTRUDER); - break; case 218: - SERIAL_ECHO(MSG_M218_INVALID_EXTRUDER); - break; case 221: - SERIAL_ECHO(MSG_M221_INVALID_EXTRUDER); + case 200: + SERIAL_ECHO_START; + SERIAL_CHAR('M'); + SERIAL_ECHO(code); + SERIAL_ECHOPGM(" " MSG_INVALID_EXTRUDER " "); + SERIAL_ECHOLN(target_extruder); break; } - SERIAL_ECHOLN(target_extruder); return true; } } diff --git a/Marlin/configurator/config/language.h b/Marlin/configurator/config/language.h index 856bd58db537de216e96344fab9d35288c6e1ab8..c709ce4d4379fb021b7503fba3c1f5b00e2fcb7c 100644 --- a/Marlin/configurator/config/language.h +++ b/Marlin/configurator/config/language.h @@ -121,12 +121,6 @@ #define MSG_END_FILE_LIST "End file list" #define MSG_INVALID_EXTRUDER "Invalid extruder" #define MSG_INVALID_SOLENOID "Invalid solenoid" -#define MSG_M104_INVALID_EXTRUDER "M104 " MSG_INVALID_EXTRUDER " " -#define MSG_M105_INVALID_EXTRUDER "M105 " MSG_INVALID_EXTRUDER " " -#define MSG_M109_INVALID_EXTRUDER "M109 " MSG_INVALID_EXTRUDER " " -#define MSG_M200_INVALID_EXTRUDER "M200 " MSG_INVALID_EXTRUDER " " -#define MSG_M218_INVALID_EXTRUDER "M218 " MSG_INVALID_EXTRUDER " " -#define MSG_M221_INVALID_EXTRUDER "M221 " MSG_INVALID_EXTRUDER " " #define MSG_ERR_NO_THERMISTORS "No thermistors - no temperature" #define MSG_HEATING "Heating..." #define MSG_HEATING_COMPLETE "Heating done." diff --git a/Marlin/language.h b/Marlin/language.h index 22e1131174356e79dccb5b23e89f374fc9656a18..66f4144d48cbbc4f61d8b5863053c2743a43257a 100644 --- a/Marlin/language.h +++ b/Marlin/language.h @@ -122,12 +122,6 @@ #define MSG_END_FILE_LIST "End file list" #define MSG_INVALID_EXTRUDER "Invalid extruder" #define MSG_INVALID_SOLENOID "Invalid solenoid" -#define MSG_M104_INVALID_EXTRUDER "M104 " MSG_INVALID_EXTRUDER " " -#define MSG_M105_INVALID_EXTRUDER "M105 " MSG_INVALID_EXTRUDER " " -#define MSG_M109_INVALID_EXTRUDER "M109 " MSG_INVALID_EXTRUDER " " -#define MSG_M200_INVALID_EXTRUDER "M200 " MSG_INVALID_EXTRUDER " " -#define MSG_M218_INVALID_EXTRUDER "M218 " MSG_INVALID_EXTRUDER " " -#define MSG_M221_INVALID_EXTRUDER "M221 " MSG_INVALID_EXTRUDER " " #define MSG_ERR_NO_THERMISTORS "No thermistors - no temperature" #define MSG_HEATING "Heating..." #define MSG_HEATING_COMPLETE "Heating done."