Merge pull request #4727 from gudnimg/improve-missing-filament

PFW-1559 Add filament presence check at start of print
This commit is contained in:
3d-gussner 2024-08-30 10:44:05 +02:00 committed by GitHub
commit d3c326de99
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
23 changed files with 290 additions and 272 deletions

View File

@ -3376,7 +3376,7 @@ static void mmu_M600_load_filament(bool automatic) {
slot = SpoolJoin::spooljoin.nextSlot();
} else {
// Only ask for the slot if automatic/SpoolJoin is off
slot = choose_menu_P(_T(MSG_SELECT_FILAMENT), _T(MSG_FILAMENT));
slot = choose_menu_P(_T(MSG_SELECT_FILAMENT), MSG_FILAMENT);
}
setTargetHotend(saved_extruder_temperature);
@ -5224,6 +5224,11 @@ void process_commands()
lcd_resume_print();
else
{
if (!filament_presence_check()) {
// Print was aborted
break;
}
if (!card.get_sdpos())
{
// A new print has started from scratch, reset stats
@ -5854,6 +5859,11 @@ Sigma_Exit:
*/
case 75:
{
if (!filament_presence_check()) {
// Print was aborted
break;
}
print_job_timer.start();
break;
}

View File

@ -31,7 +31,7 @@ void TCodes(char *const strchr_pointer, const uint8_t codeValue) {
} else if (strchr_pointer[index] == 'x' || strchr_pointer[index] == '?'){
// load to extruder gears; if mmu is not present do nothing
if (MMU2::mmu2.Enabled()) {
MMU2::mmu2.tool_change(strchr_pointer[index], choose_menu_P(_T(MSG_SELECT_FILAMENT), _T(MSG_FILAMENT)));
MMU2::mmu2.tool_change(strchr_pointer[index], choose_menu_P(_T(MSG_SELECT_FILAMENT), MSG_FILAMENT));
}
} else if (strchr_pointer[index] == 'c'){
// load from extruder gears to nozzle (nozzle should be preheated)

View File

@ -414,6 +414,9 @@ static_assert(sizeof(Sheets) == EEPROM_SHEETS_SIZEOF, "Sizeof(Sheets) is not EEP
| ^ | ^ | ^ | ??? | ^ | Z-axis | ^ | D3 Ax0d29 C4
| ^ | ^ | ^ | ??? | ^ | Y-axis | ^ | D3 Ax0d25 C4
| ^ | ^ | ^ | ??? | ^ | X-axis | ^ | D3 Ax0c21 C4
| 0x0C11 3089 | uint8 | EEPROM_CHECK_FILAMENT | 01h 1 | ffh 255 | Check mode for filament is: __warn__ | LCD menu | D3 Ax0c11 C1
| ^ | ^ | ^ | 02h 2 | ^ | Check mode for filament is: __strict__ | ^ | ^
| ^ | ^ | ^ | 00h 0 | ^ | Check mode for filament is: __none__ | ^ | ^
|Address begin|Bit/Type | Name | Valid values | Default/FactoryReset | Description |Gcode/Function| Debug code
@ -664,8 +667,9 @@ static Sheets * const EEPROM_Sheets_base = (Sheets*)(EEPROM_SHEETS_BASE);
#define EEPROM_UVLO_MIN_TRAVEL_FEEDRATE (EEPROM_UVLO_MIN_FEEDRATE-4) //float
#define EEPROM_UVLO_MIN_SEGMENT_TIME_US (EEPROM_UVLO_MIN_TRAVEL_FEEDRATE-4) //uint32_t
#define EEPROM_UVLO_MAX_JERK (EEPROM_UVLO_MIN_SEGMENT_TIME_US-4*4) // 4 x float
#define EEPROM_CHECK_FILAMENT (EEPROM_UVLO_MAX_JERK-1) // uint8_t
//This is supposed to point to last item to allow EEPROM overrun check. Please update when adding new items.
#define EEPROM_LAST_ITEM EEPROM_UVLO_MAX_JERK
#define EEPROM_LAST_ITEM EEPROM_CHECK_FILAMENT
// !!!!!
// !!!!! this is end of EEPROM section ... all updates MUST BE inserted before this mark !!!!!
// !!!!!

View File

@ -35,7 +35,6 @@ const char MSG_ERROR[] PROGMEM_I1 = ISTR("ERROR:"); ////MSG_ERROR c=10
const char MSG_EXTRUDER[] PROGMEM_I1 = ISTR("Extruder"); ////MSG_EXTRUDER c=17
const char MSG_FANS_CHECK[] PROGMEM_I1 = ISTR("Fans check"); ////MSG_FANS_CHECK c=13
const char MSG_FIL_RUNOUTS[] PROGMEM_I1 = ISTR("Fil. runouts"); ////MSG_FIL_RUNOUTS c=15
const char MSG_FILAMENT[] PROGMEM_I1 = ISTR("Filament"); ////MSG_FILAMENT c=17
const char MSG_FAN_SPEED[] PROGMEM_I1 = ISTR("Fan speed"); ////MSG_FAN_SPEED c=14
const char MSG_HOTEND_FAN_SPEED[] PROGMEM_I1 = ISTR("Hotend fan:");////MSG_HOTEND_FAN_SPEED c=15
const char MSG_PRINT_FAN_SPEED[] PROGMEM_I1 = ISTR("Print fan:"); ////MSG_PRINT_FAN_SPEED c=15
@ -155,6 +154,8 @@ const char MSG_GCODE_NEWER_FIRMWARE_CONTINUE[] PROGMEM_I1 = ISTR("G-code sliced
const char MSG_GCODE_NEWER_FIRMWARE_CANCELLED[] PROGMEM_I1 = ISTR("G-code sliced for a newer firmware. Please update the firmware. Print cancelled."); ////MSG_GCODE_NEWER_FIRMWARE_CANCELLED c=20 r=8
const char MSG_GCODE_DIFF_CONTINUE[] PROGMEM_I1 = ISTR("G-code sliced for a different level. Continue?"); ////MSG_GCODE_DIFF_CONTINUE c=20 r=3
const char MSG_GCODE_DIFF_CANCELLED[] PROGMEM_I1 = ISTR("G-code sliced for a different level. Please re-slice the model again. Print cancelled."); ////MSG_GCODE_DIFF_CANCELLED c=20 r=8
const char MSG_MISSING_FILAMENT_CONTINUE[] PROGMEM_I1 = ISTR("There is no filament loaded. Continue?"); ////MSG_MISSING_FILAMENT_CONTINUE c=20 r=3
const char MSG_MISSING_FILAMENT_CANCELLED[] PROGMEM_I1 = ISTR("There is no filament loaded. Print cancelled."); ////MSG_MISSING_FILAMENT_CANCELLED c=20 r=8
const char MSG_NOZZLE_DIFFERS_CONTINUE[] PROGMEM_I1 = ISTR("Nozzle diameter differs from the G-code. Continue?"); ////MSG_NOZZLE_DIFFERS_CONTINUE c=20 r=3
const char MSG_NOZZLE_DIFFERS_CANCELLED[] PROGMEM_I1 = ISTR("Nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled."); ////MSG_NOZZLE_DIFFERS_CANCELLED c=20 r=8
const char MSG_NOZZLE_DIAMETER[] PROGMEM_I1 = ISTR("Nozzle d."); ////MSG_NOZZLE_DIAMETER c=10
@ -378,6 +379,7 @@ extern const char MSG_FW_MK3_DETECTED [] PROGMEM_I1 = ISTR(PRINTER_NAME " firmwa
//not internationalized messages
const char MSG_SPOOL_JOIN[] PROGMEM_N1 = "SpoolJoin"; ////MSG_SPOOL_JOIN c=13
const char MSG_FIRMWARE[] PROGMEM_N1 = "Firmware"; ////MSG_FIRMWARE c=8
const char MSG_FILAMENT[] PROGMEM_N1 = "Filament"; ////MSG_FILAMENT c=8
const char MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY[] PROGMEM_N1 = "FlashAir"; ////MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY c=8
const char MSG_PINDA[] PROGMEM_N1 = "PINDA"; ////MSG_PINDA c=5
const char MSG_WELCOME[] PROGMEM_N1 = WELCOME_MSG;

View File

@ -38,7 +38,6 @@ extern const char MSG_ERROR[];
extern const char MSG_EXTRUDER[];
extern const char MSG_FANS_CHECK[];
extern const char MSG_FIL_RUNOUTS[];
extern const char MSG_FILAMENT[];
extern const char MSG_FAN_SPEED[];
extern const char MSG_HOTEND_FAN_SPEED[];
extern const char MSG_PRINT_FAN_SPEED[];
@ -157,6 +156,8 @@ extern const char MSG_GCODE_NEWER_FIRMWARE_CONTINUE[];
extern const char MSG_GCODE_NEWER_FIRMWARE_CANCELLED[];
extern const char MSG_GCODE_DIFF_CONTINUE[];
extern const char MSG_GCODE_DIFF_CANCELLED[];
extern const char MSG_MISSING_FILAMENT_CONTINUE[];
extern const char MSG_MISSING_FILAMENT_CANCELLED[];
extern const char MSG_NOZZLE_DIFFERS_CONTINUE[];
extern const char MSG_NOZZLE_DIFFERS_CANCELLED[];
extern const char MSG_NOZZLE_DIAMETER[];
@ -378,6 +379,7 @@ extern const char MSG_FW_MK3_DETECTED [];
//not internationalized messages
extern const char MSG_SPOOL_JOIN[];
extern const char MSG_FIRMWARE[];
extern const char MSG_FILAMENT[];
extern const char MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY[];
extern const char MSG_PINDA[];
extern const char MSG_WELCOME[];

View File

@ -3620,7 +3620,7 @@ void lcd_v2_calibration() {
if (MMU2::mmu2.Enabled()) {
const uint8_t filament = choose_menu_P(
_T(MSG_SELECT_FILAMENT),
_T(MSG_FILAMENT),(_T(MSG_CANCEL)+1)); //Hack to reuse MSG but strip 1st char off
MSG_FILAMENT,(_T(MSG_CANCEL)+1)); //Hack to reuse MSG but strip 1st char off
if (filament < MMU_FILAMENT_COUNT) {
lay1cal_filament = filament;
} else {
@ -4214,45 +4214,6 @@ do\
}\
while (0)
static void lcd_check_mode_set(void)
{
switch(oCheckMode)
{
case ClCheckMode::_None:
oCheckMode=ClCheckMode::_Warn;
break;
case ClCheckMode::_Warn:
oCheckMode=ClCheckMode::_Strict;
break;
case ClCheckMode::_Strict:
oCheckMode=ClCheckMode::_None;
break;
default:
oCheckMode=ClCheckMode::_None;
}
eeprom_update_byte_notify((uint8_t*)EEPROM_CHECK_MODE,(uint8_t)oCheckMode);
}
#define SETTINGS_MODE \
do\
{\
switch(oCheckMode)\
{\
case ClCheckMode::_None:\
MENU_ITEM_TOGGLE_P(_T(MSG_NOZZLE), _T(MSG_NONE), lcd_check_mode_set);\
break;\
case ClCheckMode::_Warn:\
MENU_ITEM_TOGGLE_P(_T(MSG_NOZZLE), _T(MSG_WARN), lcd_check_mode_set);\
break;\
case ClCheckMode::_Strict:\
MENU_ITEM_TOGGLE_P(_T(MSG_NOZZLE), _T(MSG_STRICT), lcd_check_mode_set);\
break;\
default:\
MENU_ITEM_TOGGLE_P(_T(MSG_NOZZLE), _T(MSG_NONE), lcd_check_mode_set);\
}\
}\
while (0)
static void lcd_nozzle_diameter_cycle(void) {
uint16_t nDiameter;
switch(oNozzleDiameter){
@ -4294,91 +4255,66 @@ do\
}\
while (0)
static void lcd_check_model_set(void)
{
switch(oCheckModel)
{
case ClCheckModel::_None:
oCheckModel=ClCheckModel::_Warn;
break;
case ClCheckModel::_Warn:
oCheckModel=ClCheckModel::_Strict;
break;
case ClCheckModel::_Strict:
oCheckModel=ClCheckModel::_None;
break;
default:
oCheckModel=ClCheckModel::_None;
}
eeprom_update_byte_notify((uint8_t*)EEPROM_CHECK_MODEL,(uint8_t)oCheckModel);
static void lcd_check_update_RAM(ClCheckMode * oCheckSetting) {
switch(*oCheckSetting) {
case ClCheckMode::_None:
*oCheckSetting = ClCheckMode::_Warn;
break;
case ClCheckMode::_Warn:
*oCheckSetting = ClCheckMode::_Strict;
break;
case ClCheckMode::_Strict:
*oCheckSetting = ClCheckMode::_None;
break;
default:
*oCheckSetting = ClCheckMode::_None;
}
}
#define SETTINGS_MODEL \
do\
{\
switch(oCheckModel)\
{\
case ClCheckModel::_None:\
MENU_ITEM_TOGGLE_P(_T(MSG_MODEL), _T(MSG_NONE), lcd_check_model_set);\
break;\
case ClCheckModel::_Warn:\
MENU_ITEM_TOGGLE_P(_T(MSG_MODEL), _T(MSG_WARN), lcd_check_model_set);\
break;\
case ClCheckModel::_Strict:\
MENU_ITEM_TOGGLE_P(_T(MSG_MODEL), _T(MSG_STRICT), lcd_check_model_set);\
break;\
default:\
MENU_ITEM_TOGGLE_P(_T(MSG_MODEL), _T(MSG_NONE), lcd_check_model_set);\
}\
}\
while (0)
static void lcd_check_version_set(void)
{
switch(oCheckVersion)
{
case ClCheckVersion::_None:
oCheckVersion=ClCheckVersion::_Warn;
break;
case ClCheckVersion::_Warn:
oCheckVersion=ClCheckVersion::_Strict;
break;
case ClCheckVersion::_Strict:
oCheckVersion=ClCheckVersion::_None;
break;
default:
oCheckVersion=ClCheckVersion::_None;
}
eeprom_update_byte_notify((uint8_t*)EEPROM_CHECK_VERSION,(uint8_t)oCheckVersion);
static void lcd_check_mode_set() {
lcd_check_update_RAM(&oCheckMode);
eeprom_update_byte_notify((uint8_t*)EEPROM_CHECK_MODE,(uint8_t)oCheckMode);
}
#define SETTINGS_VERSION \
do\
{\
switch(oCheckVersion)\
{\
case ClCheckVersion::_None:\
MENU_ITEM_TOGGLE_P(MSG_FIRMWARE, _T(MSG_NONE), lcd_check_version_set);\
break;\
case ClCheckVersion::_Warn:\
MENU_ITEM_TOGGLE_P(MSG_FIRMWARE, _T(MSG_WARN), lcd_check_version_set);\
break;\
case ClCheckVersion::_Strict:\
MENU_ITEM_TOGGLE_P(MSG_FIRMWARE, _T(MSG_STRICT), lcd_check_version_set);\
break;\
default:\
MENU_ITEM_TOGGLE_P(MSG_FIRMWARE, _T(MSG_NONE), lcd_check_version_set);\
}\
}\
while (0)
static void lcd_check_model_set() {
lcd_check_update_RAM(&oCheckModel);
eeprom_update_byte_notify((uint8_t*)EEPROM_CHECK_MODEL,(uint8_t)oCheckModel);
}
static void lcd_check_version_set() {
lcd_check_update_RAM(&oCheckVersion);
eeprom_update_byte_notify((uint8_t*)EEPROM_CHECK_VERSION,(uint8_t)oCheckVersion);
}
static void lcd_check_filament_set() {
lcd_check_update_RAM(&oCheckFilament);
eeprom_update_byte_notify((uint8_t*)EEPROM_CHECK_FILAMENT,(uint8_t)oCheckFilament);
}
static void settings_check_toggle(ClCheckMode * oCheckSetting, const char* msg, void (*func)(void)) {
switch(*oCheckSetting) {
case ClCheckMode::_None:
MENU_ITEM_TOGGLE_P(msg, _T(MSG_NONE), func);
break;
case ClCheckMode::_Warn:
MENU_ITEM_TOGGLE_P(msg, _T(MSG_WARN), func);
break;
case ClCheckMode::_Strict:
MENU_ITEM_TOGGLE_P(msg, _T(MSG_STRICT), func);
break;
default:
MENU_ITEM_TOGGLE_P(msg, _T(MSG_NONE), func);
}
}
static void lcd_checking_menu(void)
{
MENU_BEGIN();
MENU_ITEM_BACK_P(_T(MSG_HW_SETUP));
SETTINGS_MODE;
SETTINGS_MODEL;
SETTINGS_VERSION;
settings_check_toggle(&oCheckMode, _T(MSG_NOZZLE), lcd_check_mode_set);
settings_check_toggle(&oCheckModel, _T(MSG_MODEL), lcd_check_model_set);
settings_check_toggle(&oCheckVersion, MSG_FIRMWARE, lcd_check_version_set);
settings_check_toggle(&oCheckFilament, MSG_FILAMENT, lcd_check_filament_set);
MENU_END();
}
@ -6851,7 +6787,7 @@ static bool lcd_selftest_fsensor(void)
static bool selftest_irsensor()
{
// Ask user which slot to load filament from
uint8_t slot = choose_menu_P(_T(MSG_SELECT_FILAMENT), _T(MSG_FILAMENT));
uint8_t slot = choose_menu_P(_T(MSG_SELECT_FILAMENT), MSG_FILAMENT);
// Render self-test screen
lcd_selftest_screen(TestScreen::Fsensor, 0, 1, true, 0);

View File

@ -3,6 +3,7 @@
#include <stdio.h> // for sprintf_P
#include "Configuration.h"
#include "Filament_sensor.h"
#include "language.h"
#include "lcd.h"
#include "Marlin.h" // delay_keep_alive
@ -202,7 +203,7 @@ bool eeprom_fw_version_older_than_p(const uint16_t (&ver_req)[4])
bool show_upgrade_dialog_if_version_newer(const char *version_string)
{
if(oCheckVersion == ClCheckVersion::_None)
if(oCheckVersion == ClCheckMode::_None)
return false;
int8_t upgrade = is_provided_version_newer(version_string);
@ -242,9 +243,10 @@ void update_current_firmware_version_to_eeprom()
ClNozzleDiameter oNozzleDiameter;
ClCheckMode oCheckMode;
ClCheckModel oCheckModel;
ClCheckVersion oCheckVersion;
ClCheckGcode oCheckGcode;
ClCheckMode oCheckModel;
ClCheckMode oCheckVersion;
ClCheckMode oCheckGcode;
ClCheckMode oCheckFilament;
void fCheckModeInit() {
oCheckMode = (ClCheckMode)eeprom_init_default_byte((uint8_t *)EEPROM_CHECK_MODE, (uint8_t)ClCheckMode::_Warn);
@ -257,9 +259,10 @@ void fCheckModeInit() {
oNozzleDiameter = (ClNozzleDiameter)eeprom_init_default_byte((uint8_t *)EEPROM_NOZZLE_DIAMETER, (uint8_t)ClNozzleDiameter::_Diameter_400);
eeprom_init_default_word((uint16_t *)EEPROM_NOZZLE_DIAMETER_uM, EEPROM_NOZZLE_DIAMETER_uM_DEFAULT);
oCheckModel = (ClCheckModel)eeprom_init_default_byte((uint8_t *)EEPROM_CHECK_MODEL, (uint8_t)ClCheckModel::_Warn);
oCheckVersion = (ClCheckVersion)eeprom_init_default_byte((uint8_t *)EEPROM_CHECK_VERSION, (uint8_t)ClCheckVersion::_Warn);
oCheckGcode = (ClCheckGcode)eeprom_init_default_byte((uint8_t *)EEPROM_CHECK_GCODE, (uint8_t)ClCheckGcode::_Warn);
oCheckModel = (ClCheckMode)eeprom_init_default_byte((uint8_t *)EEPROM_CHECK_MODEL, (uint8_t)ClCheckMode::_Warn);
oCheckVersion = (ClCheckMode)eeprom_init_default_byte((uint8_t *)EEPROM_CHECK_VERSION, (uint8_t)ClCheckMode::_Warn);
oCheckGcode = (ClCheckMode)eeprom_init_default_byte((uint8_t *)EEPROM_CHECK_GCODE, (uint8_t)ClCheckMode::_Warn);
oCheckFilament = (ClCheckMode)eeprom_init_default_byte((uint8_t *)EEPROM_CHECK_FILAMENT, (uint8_t)ClCheckMode::_Warn);
}
static void render_M862_warnings(const char* warning, const char* strict, uint8_t check)
@ -302,7 +305,7 @@ void nozzle_diameter_check(uint16_t nDiameter) {
}
void printer_model_check(uint16_t nPrinterModel, uint16_t actualPrinterModel) {
if (oCheckModel == ClCheckModel::_None)
if (oCheckModel == ClCheckMode::_None)
return;
if (nPrinterModel == actualPrinterModel)
return;
@ -328,7 +331,7 @@ uint8_t mCompareValue(uint16_t nX, uint16_t nY) {
}
void fw_version_check(const char *pVersion) {
if (oCheckVersion == ClCheckVersion::_None)
if (oCheckVersion == ClCheckMode::_None)
return;
uint16_t aVersion[4];
@ -369,8 +372,36 @@ void fw_version_check(const char *pVersion) {
);
}
bool filament_presence_check() {
// When MMU is enabled, this is not necessary and the G-code file
// should always tell the MMU which filament to load.
if (eeprom_read_byte((uint8_t *)EEPROM_MMU_ENABLED)) {
goto done;
}
if (fsensor.isEnabled() && !fsensor.getFilamentPresent()) {
if (oCheckFilament == ClCheckMode::_None) {
goto done;
}
render_M862_warnings(
_T(MSG_MISSING_FILAMENT_CONTINUE)
,_T(MSG_MISSING_FILAMENT_CANCELLED)
,(uint8_t)oCheckFilament
);
if (lcd_commands_type == LcdCommands::StopPrint) {
// Print job was canceled
return false;
}
}
done:
return true;
}
void gcode_level_check(uint16_t nGcodeLevel) {
if (oCheckGcode == ClCheckGcode::_None)
if (oCheckGcode == ClCheckMode::_None)
return;
if (nGcodeLevel <= (uint16_t)GCODE_LEVEL)
return;

View File

@ -55,30 +55,6 @@ enum class ClCheckMode:uint_least8_t
_Undef=EEPROM_EMPTY_VALUE
};
enum class ClCheckModel:uint_least8_t
{
_None,
_Warn,
_Strict,
_Undef=EEPROM_EMPTY_VALUE
};
enum class ClCheckVersion:uint_least8_t
{
_None,
_Warn,
_Strict,
_Undef=EEPROM_EMPTY_VALUE
};
enum class ClCheckGcode:uint_least8_t
{
_None,
_Warn,
_Strict,
_Undef=EEPROM_EMPTY_VALUE
};
#define COMPARE_VALUE_EQUAL (((uint8_t)ClCompareValue::_Equal<<6)+((uint8_t)ClCompareValue::_Equal<<4)+((uint8_t)ClCompareValue::_Equal<<2)+((uint8_t)ClCompareValue::_Equal))
enum class ClCompareValue:uint_least8_t
{
@ -129,9 +105,10 @@ private:
extern ClNozzleDiameter oNozzleDiameter;
extern ClCheckMode oCheckMode;
extern ClCheckModel oCheckModel;
extern ClCheckVersion oCheckVersion;
extern ClCheckGcode oCheckGcode;
extern ClCheckMode oCheckModel;
extern ClCheckMode oCheckVersion;
extern ClCheckMode oCheckGcode;
extern ClCheckMode oCheckFilament;
void fCheckModeInit();
void nozzle_diameter_check(uint16_t nDiameter);
@ -140,6 +117,20 @@ void printer_smodel_check(const char *pStrPos, const char *actualPrinterSModel);
void fw_version_check(const char *pVersion);
void gcode_level_check(uint16_t nGcodeLevel);
/// Check if the filament is present before starting a print job.
/// Depending on the check level set in the menus the printer will:
/// - None: not issue any warning about missing filament
/// - Warning (default): The user is warned about missing filament
/// and is prompted to continue with Yes/No. If No is selected,
/// the print is aborted. If no user input is given (e.g. from
/// host printing) then the warning will expire in 30 seconds and
/// the printer assumes the Yes option was selected.
/// - Strict: If the filament is not detected when a print is started,
/// it is immediately canceled with a message saying the filament is
/// missing.
/// @returns false if the print is canceled, true otherwise
bool filament_presence_check();
uint16_t nPrinterType(bool bMMu);
const char *sPrinterType(bool bMMu);

View File

@ -8,8 +8,8 @@
- [X] **Maintained** since September 2019
- **Romanian / Română**
- Maintainers: **@leptun** and **@Hauzman**
- Co-maintainers: **@QuantumRoboticsFTC**
- Maintainers: **@leptun**
- Co-maintainers: **@Hauzman**
- Contributors:
- [X] **Active** since January 2022
- [X] **Maintained** since January 2022
@ -22,11 +22,11 @@
- [X] **Maintained** since January 2022
- **Croatian / Hrvatski**
- Maintainers: **@Prime1910**
- Co-maintainers: **@PRPA041**
- Maintainers:
- Co-maintainers:
- Contributors:
- [X] **Active** since January 2022
- [X] **Maintained** since January 2022
- [ ] **Active** started January 2022, inactive September 2024
- [ ] **Maintained** started January 2022, inactive September 2024
- **Slovak / Slovencina**
- Maintainers: **@ingbrzy**
@ -36,15 +36,15 @@
- [X] **Maintained** since June 2021
- **Swedish / Svenska**
- Maintainers: **@Painkiller56**
- Co-maintainers:**@pkg2000**
- Maintainers:
- Co-maintainers:
- Contributors:
- [X] **Active** since March 2022
- [X] **Maintained** since January 2022
- [ ] **Active** started March 2022, inactive September 2024
- [ ] **Maintained** started January 2022
- **Norwegian / Norsk**
- Maintainers: **@OS-kar** and **@pkg2000**
- Co-maintainers: **@trondkla**
- Maintainers:
- Co-maintainers:
- Contributors:
- [X] **Active** since May 2022
- [X] **Maintained** since February 2022
- [ ] **Active** started May 2022, inactive September 2024
- [ ] **Maintained** started February 2022

View File

@ -674,13 +674,6 @@ msgstr ""
msgid "Fil. sensor"
msgstr ""
#. MSG_FILAMENT c=17
#: ../../Firmware/Marlin_main.cpp:3453 ../../Firmware/Tcodes.cpp:34
#: ../../Firmware/messages.cpp:37 ../../Firmware/ultralcd.cpp:3613
#: ../../Firmware/ultralcd.cpp:6822
msgid "Filament"
msgstr ""
#. MSG_DESC_UNLOAD_MANUALLY c=20 r=8
#: ../../Firmware/mmu2/errors_list.h:284 ../../Firmware/mmu2/errors_list.h:339
msgid ""
@ -2189,6 +2182,16 @@ msgid ""
"chapter)."
msgstr ""
#. MSG_MISSING_FILAMENT_CONTINUE c=20 r=3
#: ../../Firmware/messages.cpp:157 ../../Firmware/util.cpp:388
msgid "There is no filament loaded. Continue?"
msgstr ""
#. MSG_MISSING_FILAMENT_CANCELLED c=20 r=8
#: ../../Firmware/messages.cpp:158 ../../Firmware/util.cpp:389
msgid "There is no filament loaded. Print cancelled."
msgstr ""
#. MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=8
#: ../../Firmware/Marlin_main.cpp:1606 ../../Firmware/messages.cpp:47
msgid ""

View File

@ -680,13 +680,6 @@ msgstr "Výpadky filam."
msgid "Fil. sensor"
msgstr "Fil. senzor"
#. MSG_FILAMENT c=17
#: ../../Firmware/Marlin_main.cpp:3453 ../../Firmware/Tcodes.cpp:34
#: ../../Firmware/messages.cpp:37 ../../Firmware/ultralcd.cpp:3613
#: ../../Firmware/ultralcd.cpp:6822
msgid "Filament"
msgstr "Filament"
#. MSG_FILAMENT_CLEAN c=20 r=3
#: ../../Firmware/messages.cpp:41 ../../Firmware/ultralcd.cpp:2261
#: ../../Firmware/ultralcd.cpp:2265
@ -2599,6 +2592,16 @@ msgstr "Tryska je horká! Počkejte na vychladnutí."
msgid "Nozzle changed?"
msgstr "Vyměnili jste trysku?"
#. MSG_MISSING_FILAMENT_CONTINUE c=20 r=3
#: ../../Firmware/messages.cpp:157 ../../Firmware/util.cpp:388
msgid "There is no filament loaded. Continue?"
msgstr "Není vložen filament. Pokračovat?"
#. MSG_MISSING_FILAMENT_CANCELLED c=20 r=8
#: ../../Firmware/messages.cpp:158 ../../Firmware/util.cpp:389
msgid "There is no filament loaded. Print cancelled."
msgstr "Není vložen filament. Tisk zrušen."
#~ msgid "Remove old filament and press the knob to start loading new filament."
#~ msgstr "Vyjmete stary filament a stisknete tlacitko pro zavedeni noveho."

View File

@ -682,13 +682,6 @@ msgstr "Fil. Mängel"
msgid "Fil. sensor"
msgstr "Fil. Sensor"
#. MSG_FILAMENT c=17
#: ../../Firmware/Marlin_main.cpp:3453 ../../Firmware/Tcodes.cpp:34
#: ../../Firmware/messages.cpp:37 ../../Firmware/ultralcd.cpp:3613
#: ../../Firmware/ultralcd.cpp:6822
msgid "Filament"
msgstr "Filament"
#. MSG_FILAMENT_CLEAN c=20 r=3
#: ../../Firmware/messages.cpp:41 ../../Firmware/ultralcd.cpp:2261
#: ../../Firmware/ultralcd.cpp:2265
@ -2627,6 +2620,16 @@ msgstr "Die Düse ist heiß! Auf Abkühlung warten."
msgid "Nozzle changed?"
msgstr "Düse gewechselt?"
#. MSG_MISSING_FILAMENT_CONTINUE c=20 r=3
#: ../../Firmware/messages.cpp:157 ../../Firmware/util.cpp:388
msgid "There is no filament loaded. Continue?"
msgstr "Kein Filament geladen. Fortfahren?"
#. MSG_MISSING_FILAMENT_CANCELLED c=20 r=8
#: ../../Firmware/messages.cpp:158 ../../Firmware/util.cpp:389
msgid "There is no filament loaded. Print cancelled."
msgstr "Kein Filament geladen. Druck abgebrochen."
#~ 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."

View File

@ -686,13 +686,6 @@ msgstr "Fil. acabado"
msgid "Fil. sensor"
msgstr "Sensor Fil."
#. MSG_FILAMENT c=17
#: ../../Firmware/Marlin_main.cpp:3453 ../../Firmware/Tcodes.cpp:34
#: ../../Firmware/messages.cpp:37 ../../Firmware/ultralcd.cpp:3613
#: ../../Firmware/ultralcd.cpp:6822
msgid "Filament"
msgstr "Filamento"
#. MSG_FILAMENT_CLEAN c=20 r=3
#: ../../Firmware/messages.cpp:41 ../../Firmware/ultralcd.cpp:2261
#: ../../Firmware/ultralcd.cpp:2265
@ -2622,6 +2615,16 @@ msgstr "La boquilla está caliente! Espere a que se enfríe."
msgid "Nozzle changed?"
msgstr "Cambió la boquilla?"
#. MSG_MISSING_FILAMENT_CONTINUE c=20 r=3
#: ../../Firmware/messages.cpp:157 ../../Firmware/util.cpp:388
msgid "There is no filament loaded. Continue?"
msgstr "No hay ningún filamento cargado. ¿Continuar?"
#. MSG_MISSING_FILAMENT_CANCELLED c=20 r=8
#: ../../Firmware/messages.cpp:158 ../../Firmware/util.cpp:389
msgid "There is no filament loaded. Print cancelled."
msgstr "No hay ningún filamento cargado. Impresión cancelada."
#~ msgid "Remove old filament and press the knob to start loading new filament."
#~ msgstr ""
#~ "Retira el fil. viejo y presiona el dial para comenzar a cargar el nuevo."

View File

@ -690,13 +690,6 @@ msgstr "Fins filament"
msgid "Fil. sensor"
msgstr "Capteur Fil."
#. MSG_FILAMENT c=17
#: ../../Firmware/Marlin_main.cpp:3453 ../../Firmware/Tcodes.cpp:34
#: ../../Firmware/messages.cpp:37 ../../Firmware/ultralcd.cpp:3613
#: ../../Firmware/ultralcd.cpp:6822
msgid "Filament"
msgstr "Filament"
#. MSG_FILAMENT_CLEAN c=20 r=3
#: ../../Firmware/messages.cpp:41 ../../Firmware/ultralcd.cpp:2261
#: ../../Firmware/ultralcd.cpp:2265
@ -2634,6 +2627,16 @@ msgstr "La buse est chaude! Attendre le refroidissement."
msgid "Nozzle changed?"
msgstr "La buse a été changée?"
#. MSG_MISSING_FILAMENT_CONTINUE c=20 r=3
#: ../../Firmware/messages.cpp:157 ../../Firmware/util.cpp:388
msgid "There is no filament loaded. Continue?"
msgstr "Il n'y a pas de filament chargé. Continuer?"
#. MSG_MISSING_FILAMENT_CANCELLED c=20 r=8
#: ../../Firmware/messages.cpp:158 ../../Firmware/util.cpp:389
msgid "There is no filament loaded. Print cancelled."
msgstr "Il n'y a pas de filament chargé. Impression annulée."
#~ msgid "Remove old filament and press the knob to start loading new filament."
#~ msgstr ""
#~ "Retirez l'ancien fil. puis appuyez sur le bouton pour charger le nouveau."

View File

@ -684,13 +684,6 @@ msgstr "Bez filmaneta"
msgid "Fil. sensor"
msgstr "Fil. senzor"
#. MSG_FILAMENT c=17
#: ../../Firmware/Marlin_main.cpp:3453 ../../Firmware/Tcodes.cpp:34
#: ../../Firmware/messages.cpp:37 ../../Firmware/ultralcd.cpp:3613
#: ../../Firmware/ultralcd.cpp:6822
msgid "Filament"
msgstr "Filament"
#. MSG_FILAMENT_CLEAN c=20 r=3
#: ../../Firmware/messages.cpp:41 ../../Firmware/ultralcd.cpp:2261
#: ../../Firmware/ultralcd.cpp:2265
@ -2616,6 +2609,16 @@ msgstr "Mlaznica je vruća! Pričekajte hlađenje."
msgid "Nozzle changed?"
msgstr "Mlaznica se promijenila?"
#. MSG_MISSING_FILAMENT_CONTINUE c=20 r=3
#: ../../Firmware/messages.cpp:157 ../../Firmware/util.cpp:388
msgid "There is no filament loaded. Continue?"
msgstr "Nema umetnute niti. Nastavite?"
#. MSG_MISSING_FILAMENT_CANCELLED c=20 r=8
#: ../../Firmware/messages.cpp:158 ../../Firmware/util.cpp:389
msgid "There is no filament loaded. Print cancelled."
msgstr "Nema umetnute niti. Print je otkazan."
#~ msgid "Remove old filament and press the knob to start loading new filament."
#~ msgstr "Uklonite stari fil. i pritisnite gumb za pocetak stavljanja novog."

View File

@ -687,13 +687,6 @@ msgstr "Fil. kifutasok"
msgid "Fil. sensor"
msgstr "Fil. szenzor"
#. MSG_FILAMENT c=17
#: ../../Firmware/Marlin_main.cpp:3453 ../../Firmware/Tcodes.cpp:34
#: ../../Firmware/messages.cpp:37 ../../Firmware/ultralcd.cpp:3613
#: ../../Firmware/ultralcd.cpp:6822
msgid "Filament"
msgstr "Filament"
#. MSG_FILAMENT_CLEAN c=20 r=3
#: ../../Firmware/messages.cpp:41 ../../Firmware/ultralcd.cpp:2261
#: ../../Firmware/ultralcd.cpp:2265
@ -2621,6 +2614,16 @@ msgstr "A fúvóka forró! Várja meg a lehűlést."
msgid "Nozzle changed?"
msgstr "Fúvóka cserélve?"
#. MSG_MISSING_FILAMENT_CONTINUE c=20 r=3
#: ../../Firmware/messages.cpp:157 ../../Firmware/util.cpp:388
msgid "There is no filament loaded. Continue?"
msgstr "Nincs befűzve filament. Folytassam?"
#. MSG_MISSING_FILAMENT_CANCELLED c=20 r=8
#: ../../Firmware/messages.cpp:158 ../../Firmware/util.cpp:389
msgid "There is no filament loaded. Print cancelled."
msgstr "Nincs befűzve filament. Nyomtatás megállítva."
#~ 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."

View File

@ -688,13 +688,6 @@ msgstr "Fil. esauriti"
msgid "Fil. sensor"
msgstr "Sensore fil."
#. MSG_FILAMENT c=17
#: ../../Firmware/Marlin_main.cpp:3453 ../../Firmware/Tcodes.cpp:34
#: ../../Firmware/messages.cpp:37 ../../Firmware/ultralcd.cpp:3613
#: ../../Firmware/ultralcd.cpp:6822
msgid "Filament"
msgstr "Filamento"
#. MSG_FILAMENT_CLEAN c=20 r=3
#: ../../Firmware/messages.cpp:41 ../../Firmware/ultralcd.cpp:2261
#: ../../Firmware/ultralcd.cpp:2265
@ -2622,6 +2615,16 @@ msgstr "L'ugello è caldo! Attendere il raffreddamento."
msgid "Nozzle changed?"
msgstr "L'ugello è cambiato?"
#. MSG_MISSING_FILAMENT_CONTINUE c=20 r=3
#: ../../Firmware/messages.cpp:157 ../../Firmware/util.cpp:388
msgid "There is no filament loaded. Continue?"
msgstr "Nessun filamento caricato. Continuare?"
#. MSG_MISSING_FILAMENT_CANCELLED c=20 r=8
#: ../../Firmware/messages.cpp:158 ../../Firmware/util.cpp:389
msgid "There is no filament loaded. Print cancelled."
msgstr "Nessun filamento caricato. Stampa annullata."
#~ 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."

View File

@ -689,13 +689,6 @@ msgstr "Fil. fouten"
msgid "Fil. sensor"
msgstr "Fil. sensor"
#. MSG_FILAMENT c=17
#: ../../Firmware/Marlin_main.cpp:3453 ../../Firmware/Tcodes.cpp:34
#: ../../Firmware/messages.cpp:37 ../../Firmware/ultralcd.cpp:3613
#: ../../Firmware/ultralcd.cpp:6822
msgid "Filament"
msgstr "Filament"
#. MSG_FILAMENT_CLEAN c=20 r=3
#: ../../Firmware/messages.cpp:41 ../../Firmware/ultralcd.cpp:2261
#: ../../Firmware/ultralcd.cpp:2265
@ -1709,7 +1702,7 @@ msgid ""
" Print cancelled."
msgstr ""
"De diameter van de tuit van de printer verschilt van de G-code. Controleer "
"de waarde in de instellingen. Afdrukken geannuleerd."
"de waarde in de instellingen. Printen geannuleerd."
#. MSG_DESC_PULLEY_CANNOT_MOVE c=20 r=8
#: ../../Firmware/mmu2/errors_list.h:246 ../../Firmware/mmu2/errors_list.h:302
@ -2624,6 +2617,16 @@ msgstr "Mondstuk is heet! Wacht op afkoeling."
msgid "Nozzle changed?"
msgstr "Mondstuk veranderd?"
#. MSG_MISSING_FILAMENT_CONTINUE c=20 r=3
#: ../../Firmware/messages.cpp:157 ../../Firmware/util.cpp:388
msgid "There is no filament loaded. Continue?"
msgstr "Geen filament geladen. Doorgaan?"
#. MSG_MISSING_FILAMENT_CANCELLED c=20 r=8
#: ../../Firmware/messages.cpp:158 ../../Firmware/util.cpp:389
msgid "There is no filament loaded. Print cancelled."
msgstr "Geen filament geladen. Printen geannuleerd."
#~ msgid "Remove old filament and press the knob to start loading new filament."
#~ msgstr ""
#~ "Verwijder de oude filament en druk op de knop om nieuwe filament te laden."

View File

@ -687,13 +687,6 @@ msgstr "Tomt filament"
msgid "Fil. sensor"
msgstr "Fil. Sensor"
#. MSG_FILAMENT c=17
#: ../../Firmware/Marlin_main.cpp:3453 ../../Firmware/Tcodes.cpp:34
#: ../../Firmware/messages.cpp:37 ../../Firmware/ultralcd.cpp:3613
#: ../../Firmware/ultralcd.cpp:6822
msgid "Filament"
msgstr "Filament"
#. MSG_FILAMENT_CLEAN c=20 r=3
#: ../../Firmware/messages.cpp:41 ../../Firmware/ultralcd.cpp:2261
#: ../../Firmware/ultralcd.cpp:2265
@ -2598,6 +2591,16 @@ msgstr "Dysen er varm! Vent på nedkjøling."
msgid "Nozzle changed?"
msgstr "Har du byttet dyse?"
#. MSG_MISSING_FILAMENT_CONTINUE c=20 r=3
#: ../../Firmware/messages.cpp:157 ../../Firmware/util.cpp:388
msgid "There is no filament loaded. Continue?"
msgstr "Det er ingen filament lastet. Fortsette?"
#. MSG_MISSING_FILAMENT_CANCELLED c=20 r=8
#: ../../Firmware/messages.cpp:158 ../../Firmware/util.cpp:389
msgid "There is no filament loaded. Print cancelled."
msgstr "Det er ingen filament lastet. Print avbrutt."
#~ 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."

View File

@ -689,13 +689,6 @@ msgstr "Końc. filamentu"
msgid "Fil. sensor"
msgstr "Czuj. filam."
#. MSG_FILAMENT c=17
#: ../../Firmware/Marlin_main.cpp:3453 ../../Firmware/Tcodes.cpp:34
#: ../../Firmware/messages.cpp:37 ../../Firmware/ultralcd.cpp:3613
#: ../../Firmware/ultralcd.cpp:6822
msgid "Filament"
msgstr "Filament"
#. MSG_FILAMENT_CLEAN c=20 r=3
#: ../../Firmware/messages.cpp:41 ../../Firmware/ultralcd.cpp:2261
#: ../../Firmware/ultralcd.cpp:2265
@ -2614,6 +2607,16 @@ msgstr "Dysza jest gorąca! Poczekaj na schłodzenie."
msgid "Nozzle changed?"
msgstr "Dysza została zmieniona?"
#. MSG_MISSING_FILAMENT_CONTINUE c=20 r=3
#: ../../Firmware/messages.cpp:157 ../../Firmware/util.cpp:388
msgid "There is no filament loaded. Continue?"
msgstr "Nie ma załadowanego filamentu. Kontynuować?"
#. MSG_MISSING_FILAMENT_CANCELLED c=20 r=8
#: ../../Firmware/messages.cpp:158 ../../Firmware/util.cpp:389
msgid "There is no filament loaded. Print cancelled."
msgstr "Nie ma załadowanego filamentu. Druk anulowany."
#~ 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."

View File

@ -689,13 +689,6 @@ msgstr "Epuizări Fil."
msgid "Fil. sensor"
msgstr "Senzor Fil."
#. MSG_FILAMENT c=17
#: ../../Firmware/Marlin_main.cpp:3453 ../../Firmware/Tcodes.cpp:34
#: ../../Firmware/messages.cpp:37 ../../Firmware/ultralcd.cpp:3613
#: ../../Firmware/ultralcd.cpp:6822
msgid "Filament"
msgstr "Filament"
#. MSG_FILAMENT_CLEAN c=20 r=3
#: ../../Firmware/messages.cpp:41 ../../Firmware/ultralcd.cpp:2261
#: ../../Firmware/ultralcd.cpp:2265
@ -2623,6 +2616,16 @@ msgstr "Duza este fierbinte! Așteptați să se răcească."
msgid "Nozzle changed?"
msgstr "S-a schimbat duza?"
#. MSG_MISSING_FILAMENT_CONTINUE c=20 r=3
#: ../../Firmware/messages.cpp:157 ../../Firmware/util.cpp:388
msgid "There is no filament loaded. Continue?"
msgstr "Filamentul nu este detectat. Continuați?"
#. MSG_MISSING_FILAMENT_CANCELLED c=20 r=8
#: ../../Firmware/messages.cpp:158 ../../Firmware/util.cpp:389
msgid "There is no filament loaded. Print cancelled."
msgstr "Filamentul nu este detectat. Print anulat."
#~ 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."

View File

@ -686,13 +686,6 @@ msgstr "Výpadky filam."
msgid "Fil. sensor"
msgstr "Fil. senzor"
#. MSG_FILAMENT c=17
#: ../../Firmware/Marlin_main.cpp:3453 ../../Firmware/Tcodes.cpp:34
#: ../../Firmware/messages.cpp:37 ../../Firmware/ultralcd.cpp:3613
#: ../../Firmware/ultralcd.cpp:6822
msgid "Filament"
msgstr "Filament"
#. MSG_FILAMENT_CLEAN c=20 r=3
#: ../../Firmware/messages.cpp:41 ../../Firmware/ultralcd.cpp:2261
#: ../../Firmware/ultralcd.cpp:2265
@ -2604,6 +2597,16 @@ msgstr "Tryska je horúca! Počkajte na vychladnutie."
msgid "Nozzle changed?"
msgstr "Vymenili ste trysku?"
#. MSG_MISSING_FILAMENT_CONTINUE c=20 r=3
#: ../../Firmware/messages.cpp:157 ../../Firmware/util.cpp:388
msgid "There is no filament loaded. Continue?"
msgstr "Nie je zavedený žiaden filament. Pokračovať?"
#. MSG_MISSING_FILAMENT_CANCELLED c=20 r=8
#: ../../Firmware/messages.cpp:158 ../../Firmware/util.cpp:389
msgid "There is no filament loaded. Print cancelled."
msgstr "Nie je zavedený žiaden filament. Tlač zrušená."
#~ 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."

View File

@ -687,13 +687,6 @@ msgstr "Fil. avbrott"
msgid "Fil. sensor"
msgstr "Fil. sensor"
#. MSG_FILAMENT c=17
#: ../../Firmware/Marlin_main.cpp:3453 ../../Firmware/Tcodes.cpp:34
#: ../../Firmware/messages.cpp:37 ../../Firmware/ultralcd.cpp:3613
#: ../../Firmware/ultralcd.cpp:6822
msgid "Filament"
msgstr "Filament"
#. MSG_FILAMENT_CLEAN c=20 r=3
#: ../../Firmware/messages.cpp:41 ../../Firmware/ultralcd.cpp:2261
#: ../../Firmware/ultralcd.cpp:2265
@ -2611,6 +2604,16 @@ msgstr "Munstycket är varmt! Vänta på nedkylning."
msgid "Nozzle changed?"
msgstr "Har munstycket ändrats?"
#. MSG_MISSING_FILAMENT_CONTINUE c=20 r=3
#: ../../Firmware/messages.cpp:157 ../../Firmware/util.cpp:388
msgid "There is no filament loaded. Continue?"
msgstr "Det finns ingen filament laddad. Fortsätta?"
#. MSG_MISSING_FILAMENT_CANCELLED c=20 r=8
#: ../../Firmware/messages.cpp:158 ../../Firmware/util.cpp:389
msgid "There is no filament loaded. Print cancelled."
msgstr "Det finns ingen filament laddad. Utskriften avbröts."
#~ 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."