Merge branch 'MK3' into MK3_NEW_SD_COMPILATION
This commit is contained in:
commit
d2a7c62b50
@ -96,7 +96,7 @@ void Config_PrintSettings(uint8_t level)
|
|||||||
"%SMaximum feedrates - stealth (mm/s):\n%S M203 X%.2f Y%.2f Z%.2f E%.2f\n"
|
"%SMaximum feedrates - stealth (mm/s):\n%S M203 X%.2f Y%.2f Z%.2f E%.2f\n"
|
||||||
"%SMaximum acceleration - normal (mm/s2):\n%S M201 X%lu Y%lu Z%lu E%lu\n"
|
"%SMaximum acceleration - normal (mm/s2):\n%S M201 X%lu Y%lu Z%lu E%lu\n"
|
||||||
"%SMaximum acceleration - stealth (mm/s2):\n%S M201 X%lu Y%lu Z%lu E%lu\n"
|
"%SMaximum acceleration - stealth (mm/s2):\n%S M201 X%lu Y%lu Z%lu E%lu\n"
|
||||||
"%SAcceleration: S=acceleration, T=retract acceleration\n%S M204 S%.2f T%.2f\n"
|
"%SAcceleration: P=print, R=retract, T=travel\n%S M204 P%.2f R%.2f T%.2f\n"
|
||||||
"%SAdvanced variables: S=Min feedrate (mm/s), T=Min travel feedrate (mm/s), B=minimum segment time (ms), X=maximum XY jerk (mm/s), Z=maximum Z jerk (mm/s), E=maximum E jerk (mm/s)\n%S M205 S%.2f T%.2f B%.2f X%.2f Y%.2f Z%.2f E%.2f\n"
|
"%SAdvanced variables: S=Min feedrate (mm/s), T=Min travel feedrate (mm/s), B=minimum segment time (ms), X=maximum XY jerk (mm/s), Z=maximum Z jerk (mm/s), E=maximum E jerk (mm/s)\n%S M205 S%.2f T%.2f B%.2f X%.2f Y%.2f Z%.2f E%.2f\n"
|
||||||
"%SHome offset (mm):\n%S M206 X%.2f Y%.2f Z%.2f\n"
|
"%SHome offset (mm):\n%S M206 X%.2f Y%.2f Z%.2f\n"
|
||||||
),
|
),
|
||||||
@ -106,7 +106,7 @@ void Config_PrintSettings(uint8_t level)
|
|||||||
echomagic, echomagic, cs.max_feedrate_silent[X_AXIS], cs.max_feedrate_silent[Y_AXIS], cs.max_feedrate_silent[Z_AXIS], cs.max_feedrate_silent[E_AXIS],
|
echomagic, echomagic, cs.max_feedrate_silent[X_AXIS], cs.max_feedrate_silent[Y_AXIS], cs.max_feedrate_silent[Z_AXIS], cs.max_feedrate_silent[E_AXIS],
|
||||||
echomagic, echomagic, cs.max_acceleration_units_per_sq_second_normal[X_AXIS], cs.max_acceleration_units_per_sq_second_normal[Y_AXIS], cs.max_acceleration_units_per_sq_second_normal[Z_AXIS], cs.max_acceleration_units_per_sq_second_normal[E_AXIS],
|
echomagic, echomagic, cs.max_acceleration_units_per_sq_second_normal[X_AXIS], cs.max_acceleration_units_per_sq_second_normal[Y_AXIS], cs.max_acceleration_units_per_sq_second_normal[Z_AXIS], cs.max_acceleration_units_per_sq_second_normal[E_AXIS],
|
||||||
echomagic, echomagic, cs.max_acceleration_units_per_sq_second_silent[X_AXIS], cs.max_acceleration_units_per_sq_second_silent[Y_AXIS], cs.max_acceleration_units_per_sq_second_silent[Z_AXIS], cs.max_acceleration_units_per_sq_second_silent[E_AXIS],
|
echomagic, echomagic, cs.max_acceleration_units_per_sq_second_silent[X_AXIS], cs.max_acceleration_units_per_sq_second_silent[Y_AXIS], cs.max_acceleration_units_per_sq_second_silent[Z_AXIS], cs.max_acceleration_units_per_sq_second_silent[E_AXIS],
|
||||||
echomagic, echomagic, cs.acceleration, cs.retract_acceleration,
|
echomagic, echomagic, cs.acceleration, cs.retract_acceleration, cs.travel_acceleration,
|
||||||
echomagic, echomagic, cs.minimumfeedrate, cs.mintravelfeedrate, cs.minsegmenttime, cs.max_jerk[X_AXIS], cs.max_jerk[Y_AXIS], cs.max_jerk[Z_AXIS], cs.max_jerk[E_AXIS],
|
echomagic, echomagic, cs.minimumfeedrate, cs.mintravelfeedrate, cs.minsegmenttime, cs.max_jerk[X_AXIS], cs.max_jerk[Y_AXIS], cs.max_jerk[Z_AXIS], cs.max_jerk[E_AXIS],
|
||||||
echomagic, echomagic, cs.add_homing[X_AXIS], cs.add_homing[Y_AXIS], cs.add_homing[Z_AXIS]
|
echomagic, echomagic, cs.add_homing[X_AXIS], cs.add_homing[Y_AXIS], cs.add_homing[Z_AXIS]
|
||||||
#else //TMC2130
|
#else //TMC2130
|
||||||
@ -114,14 +114,14 @@ void Config_PrintSettings(uint8_t level)
|
|||||||
"%SSteps per unit:\n%S M92 X%.2f Y%.2f Z%.2f E%.2f\n"
|
"%SSteps per unit:\n%S M92 X%.2f Y%.2f Z%.2f E%.2f\n"
|
||||||
"%SMaximum feedrates (mm/s):\n%S M203 X%.2f Y%.2f Z%.2f E%.2f\n"
|
"%SMaximum feedrates (mm/s):\n%S M203 X%.2f Y%.2f Z%.2f E%.2f\n"
|
||||||
"%SMaximum acceleration (mm/s2):\n%S M201 X%lu Y%lu Z%lu E%lu\n"
|
"%SMaximum acceleration (mm/s2):\n%S M201 X%lu Y%lu Z%lu E%lu\n"
|
||||||
"%SAcceleration: S=acceleration, T=retract acceleration\n%S M204 S%.2f T%.2f\n"
|
"%SAcceleration: P=print, R=retract, T=travel\n%S M204 P%.2f R%.2f T%.2f\n"
|
||||||
"%SAdvanced variables: S=Min feedrate (mm/s), T=Min travel feedrate (mm/s), B=minimum segment time (ms), X=maximum XY jerk (mm/s), Z=maximum Z jerk (mm/s), E=maximum E jerk (mm/s)\n%S M205 S%.2f T%.2f B%.2f X%.2f Y%.2f Z%.2f E%.2f\n"
|
"%SAdvanced variables: S=Min feedrate (mm/s), T=Min travel feedrate (mm/s), B=minimum segment time (ms), X=maximum XY jerk (mm/s), Z=maximum Z jerk (mm/s), E=maximum E jerk (mm/s)\n%S M205 S%.2f T%.2f B%.2f X%.2f Y%.2f Z%.2f E%.2f\n"
|
||||||
"%SHome offset (mm):\n%S M206 X%.2f Y%.2f Z%.2f\n"
|
"%SHome offset (mm):\n%S M206 X%.2f Y%.2f Z%.2f\n"
|
||||||
),
|
),
|
||||||
echomagic, echomagic, cs.axis_steps_per_unit[X_AXIS], cs.axis_steps_per_unit[Y_AXIS], cs.axis_steps_per_unit[Z_AXIS], cs.axis_steps_per_unit[E_AXIS],
|
echomagic, echomagic, cs.axis_steps_per_unit[X_AXIS], cs.axis_steps_per_unit[Y_AXIS], cs.axis_steps_per_unit[Z_AXIS], cs.axis_steps_per_unit[E_AXIS],
|
||||||
echomagic, echomagic, max_feedrate[X_AXIS], max_feedrate[Y_AXIS], max_feedrate[Z_AXIS], max_feedrate[E_AXIS],
|
echomagic, echomagic, max_feedrate[X_AXIS], max_feedrate[Y_AXIS], max_feedrate[Z_AXIS], max_feedrate[E_AXIS],
|
||||||
echomagic, echomagic, max_acceleration_units_per_sq_second[X_AXIS], max_acceleration_units_per_sq_second[Y_AXIS], max_acceleration_units_per_sq_second[Z_AXIS], max_acceleration_units_per_sq_second[E_AXIS],
|
echomagic, echomagic, max_acceleration_units_per_sq_second[X_AXIS], max_acceleration_units_per_sq_second[Y_AXIS], max_acceleration_units_per_sq_second[Z_AXIS], max_acceleration_units_per_sq_second[E_AXIS],
|
||||||
echomagic, echomagic, cs.acceleration, cs.retract_acceleration,
|
echomagic, echomagic, cs.acceleration, cs.retract_acceleration, cs.travel_acceleration,
|
||||||
echomagic, echomagic, cs.minimumfeedrate, cs.mintravelfeedrate, cs.minsegmenttime, cs.max_jerk[X_AXIS], cs.max_jerk[Y_AXIS], cs.max_jerk[Z_AXIS], cs.max_jerk[E_AXIS],
|
echomagic, echomagic, cs.minimumfeedrate, cs.mintravelfeedrate, cs.minsegmenttime, cs.max_jerk[X_AXIS], cs.max_jerk[Y_AXIS], cs.max_jerk[Z_AXIS], cs.max_jerk[E_AXIS],
|
||||||
echomagic, echomagic, cs.add_homing[X_AXIS], cs.add_homing[Y_AXIS], cs.add_homing[Z_AXIS]
|
echomagic, echomagic, cs.add_homing[X_AXIS], cs.add_homing[Y_AXIS], cs.add_homing[Z_AXIS]
|
||||||
#endif //TMC2130
|
#endif //TMC2130
|
||||||
@ -184,7 +184,7 @@ static_assert (false, "zprobe_zoffset was not initialized in printers in field t
|
|||||||
"0.0, if this is not acceptable, increment EEPROM_VERSION to force use default_conf");
|
"0.0, if this is not acceptable, increment EEPROM_VERSION to force use default_conf");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static_assert (sizeof(M500_conf) == 192, "sizeof(M500_conf) has changed, ensure that EEPROM_VERSION has been incremented, "
|
static_assert (sizeof(M500_conf) == 196, "sizeof(M500_conf) has changed, ensure that EEPROM_VERSION has been incremented, "
|
||||||
"or if you added members in the end of struct, ensure that historically uninitialized values will be initialized."
|
"or if you added members in the end of struct, ensure that historically uninitialized values will be initialized."
|
||||||
"If this is caused by change to more then 8bit processor, decide whether make this struct packed to save EEPROM,"
|
"If this is caused by change to more then 8bit processor, decide whether make this struct packed to save EEPROM,"
|
||||||
"leave as it is to keep fast code, or reorder struct members to pack more tightly.");
|
"leave as it is to keep fast code, or reorder struct members to pack more tightly.");
|
||||||
@ -232,8 +232,21 @@ static const M500_conf default_conf PROGMEM =
|
|||||||
#else // TMC2130
|
#else // TMC2130
|
||||||
{16,16,16,16},
|
{16,16,16,16},
|
||||||
#endif
|
#endif
|
||||||
|
DEFAULT_TRAVEL_ACCELERATION,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
static bool is_uninitialized(void* addr, uint8_t len)
|
||||||
|
{
|
||||||
|
while(len--)
|
||||||
|
{
|
||||||
|
if(reinterpret_cast<uint8_t*>(addr)[len] != 0xff)
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//! @brief Read M500 configuration
|
//! @brief Read M500 configuration
|
||||||
//! @retval true Succeeded. Stored settings retrieved or default settings retrieved in case EEPROM has been erased.
|
//! @retval true Succeeded. Stored settings retrieved or default settings retrieved in case EEPROM has been erased.
|
||||||
//! @retval false Failed. Default settings has been retrieved, because of older version or corrupted data.
|
//! @retval false Failed. Default settings has been retrieved, because of older version or corrupted data.
|
||||||
@ -257,13 +270,9 @@ bool Config_RetrieveSettings()
|
|||||||
for (uint8_t i = 0; i < (sizeof(cs.max_feedrate_silent)/sizeof(cs.max_feedrate_silent[0])); ++i)
|
for (uint8_t i = 0; i < (sizeof(cs.max_feedrate_silent)/sizeof(cs.max_feedrate_silent[0])); ++i)
|
||||||
{
|
{
|
||||||
const uint32_t erased = 0xffffffff;
|
const uint32_t erased = 0xffffffff;
|
||||||
bool initialized = false;
|
if (is_uninitialized(&(cs.max_feedrate_silent[i]), sizeof(float))) {
|
||||||
|
memcpy_P(&cs.max_feedrate_silent[i],&default_conf.max_feedrate_silent[i], sizeof(cs.max_feedrate_silent[i]));
|
||||||
for(uint8_t j = 0; j < sizeof(float); ++j)
|
|
||||||
{
|
|
||||||
if(0xff != reinterpret_cast<uint8_t*>(&(cs.max_feedrate_silent[i]))[j]) initialized = true;
|
|
||||||
}
|
}
|
||||||
if (!initialized) memcpy_P(&cs.max_feedrate_silent[i],&default_conf.max_feedrate_silent[i], sizeof(cs.max_feedrate_silent[i]));
|
|
||||||
if (erased == cs.max_acceleration_units_per_sq_second_silent[i]) {
|
if (erased == cs.max_acceleration_units_per_sq_second_silent[i]) {
|
||||||
memcpy_P(&cs.max_acceleration_units_per_sq_second_silent[i],&default_conf.max_acceleration_units_per_sq_second_silent[i],sizeof(cs.max_acceleration_units_per_sq_second_silent[i]));
|
memcpy_P(&cs.max_acceleration_units_per_sq_second_silent[i],&default_conf.max_acceleration_units_per_sq_second_silent[i],sizeof(cs.max_acceleration_units_per_sq_second_silent[i]));
|
||||||
}
|
}
|
||||||
@ -293,6 +302,9 @@ bool Config_RetrieveSettings()
|
|||||||
tmc2130_set_res(E_AXIS, cs.axis_ustep_resolution[E_AXIS]);
|
tmc2130_set_res(E_AXIS, cs.axis_ustep_resolution[E_AXIS]);
|
||||||
#endif //TMC2130
|
#endif //TMC2130
|
||||||
|
|
||||||
|
if(is_uninitialized(&cs.travel_acceleration, sizeof(cs.travel_acceleration)))
|
||||||
|
cs.travel_acceleration = cs.acceleration;
|
||||||
|
|
||||||
reset_acceleration_rates();
|
reset_acceleration_rates();
|
||||||
|
|
||||||
// Call updatePID (similar to when we have processed M301)
|
// Call updatePID (similar to when we have processed M301)
|
||||||
|
@ -38,6 +38,7 @@ typedef struct
|
|||||||
float max_feedrate_silent[4]; //!< max speeds for silent mode
|
float max_feedrate_silent[4]; //!< max speeds for silent mode
|
||||||
unsigned long max_acceleration_units_per_sq_second_silent[4];
|
unsigned long max_acceleration_units_per_sq_second_silent[4];
|
||||||
unsigned char axis_ustep_resolution[4];
|
unsigned char axis_ustep_resolution[4];
|
||||||
|
float travel_acceleration; //!< travel acceleration mm/s^2
|
||||||
} M500_conf;
|
} M500_conf;
|
||||||
|
|
||||||
extern M500_conf cs;
|
extern M500_conf cs;
|
||||||
|
@ -350,10 +350,6 @@ extern unsigned long t_fan_rising_edge;
|
|||||||
extern bool mesh_bed_leveling_flag;
|
extern bool mesh_bed_leveling_flag;
|
||||||
extern bool mesh_bed_run_from_menu;
|
extern bool mesh_bed_run_from_menu;
|
||||||
|
|
||||||
extern bool sortAlpha;
|
|
||||||
|
|
||||||
extern char dir_names[][9];
|
|
||||||
|
|
||||||
extern int8_t lcd_change_fil_state;
|
extern int8_t lcd_change_fil_state;
|
||||||
// save/restore printing
|
// save/restore printing
|
||||||
extern bool saved_printing;
|
extern bool saved_printing;
|
||||||
|
@ -228,10 +228,6 @@ bool fan_state[2];
|
|||||||
int fan_edge_counter[2];
|
int fan_edge_counter[2];
|
||||||
int fan_speed[2];
|
int fan_speed[2];
|
||||||
|
|
||||||
char dir_names[MAX_DIR_DEPTH][9];
|
|
||||||
|
|
||||||
bool sortAlpha = false;
|
|
||||||
|
|
||||||
|
|
||||||
float extruder_multiplier[EXTRUDERS] = {1.0
|
float extruder_multiplier[EXTRUDERS] = {1.0
|
||||||
#if EXTRUDERS > 1
|
#if EXTRUDERS > 1
|
||||||
@ -3044,6 +3040,8 @@ bool gcode_M45(bool onlyZ, int8_t verbosity_level)
|
|||||||
//set_destination_to_current();
|
//set_destination_to_current();
|
||||||
int l_feedmultiply = setup_for_endstop_move();
|
int l_feedmultiply = setup_for_endstop_move();
|
||||||
lcd_display_message_fullscreen_P(_T(MSG_AUTO_HOME));
|
lcd_display_message_fullscreen_P(_T(MSG_AUTO_HOME));
|
||||||
|
raise_z_above(MESH_HOME_Z_SEARCH);
|
||||||
|
st_synchronize();
|
||||||
home_xy();
|
home_xy();
|
||||||
|
|
||||||
enable_endstops(false);
|
enable_endstops(false);
|
||||||
@ -6990,14 +6988,14 @@ Sigma_Exit:
|
|||||||
### M120 - Enable endstops <a href="https://reprap.org/wiki/G-code#M120:_Enable_endstop_detection">M120: Enable endstop detection</a>
|
### M120 - Enable endstops <a href="https://reprap.org/wiki/G-code#M120:_Enable_endstop_detection">M120: Enable endstop detection</a>
|
||||||
*/
|
*/
|
||||||
case 120:
|
case 120:
|
||||||
enable_endstops(false) ;
|
enable_endstops(true) ;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
### M121 - Disable endstops <a href="https://reprap.org/wiki/G-code#M121:_Disable_endstop_detection">M121: Disable endstop detection</a>
|
### M121 - Disable endstops <a href="https://reprap.org/wiki/G-code#M121:_Disable_endstop_detection">M121: Disable endstop detection</a>
|
||||||
*/
|
*/
|
||||||
case 121:
|
case 121:
|
||||||
enable_endstops(true) ;
|
enable_endstops(false) ;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@ -7258,7 +7256,7 @@ Sigma_Exit:
|
|||||||
// Legacy acceleration format. This format is used by the legacy Marlin, MK2 or MK3 firmware,
|
// Legacy acceleration format. This format is used by the legacy Marlin, MK2 or MK3 firmware,
|
||||||
// and it is also generated by Slic3r to control acceleration per extrusion type
|
// and it is also generated by Slic3r to control acceleration per extrusion type
|
||||||
// (there is a separate acceleration settings in Slicer for perimeter, first layer etc).
|
// (there is a separate acceleration settings in Slicer for perimeter, first layer etc).
|
||||||
cs.acceleration = code_value();
|
cs.acceleration = cs.travel_acceleration = code_value();
|
||||||
// Interpret the T value as retract acceleration in the old Marlin format.
|
// Interpret the T value as retract acceleration in the old Marlin format.
|
||||||
if(code_seen('T'))
|
if(code_seen('T'))
|
||||||
cs.retract_acceleration = code_value();
|
cs.retract_acceleration = code_value();
|
||||||
@ -7268,13 +7266,8 @@ Sigma_Exit:
|
|||||||
cs.acceleration = code_value();
|
cs.acceleration = code_value();
|
||||||
if(code_seen('R'))
|
if(code_seen('R'))
|
||||||
cs.retract_acceleration = code_value();
|
cs.retract_acceleration = code_value();
|
||||||
if(code_seen('T')) {
|
if(code_seen('T'))
|
||||||
// Interpret the T value as the travel acceleration in the new Marlin format.
|
cs.travel_acceleration = code_value();
|
||||||
/*!
|
|
||||||
@todo Prusa3D firmware currently does not support travel acceleration value independent from the extruding acceleration value.
|
|
||||||
*/
|
|
||||||
// travel_acceleration = code_value();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -10968,6 +10961,10 @@ void uvlo_()
|
|||||||
#endif
|
#endif
|
||||||
eeprom_update_word((uint16_t*)(EEPROM_EXTRUDEMULTIPLY), (uint16_t)extrudemultiply);
|
eeprom_update_word((uint16_t*)(EEPROM_EXTRUDEMULTIPLY), (uint16_t)extrudemultiply);
|
||||||
|
|
||||||
|
eeprom_update_float((float*)(EEPROM_UVLO_ACCELL), cs.acceleration);
|
||||||
|
eeprom_update_float((float*)(EEPROM_UVLO_RETRACT_ACCELL), cs.retract_acceleration);
|
||||||
|
eeprom_update_float((float*)(EEPROM_UVLO_TRAVEL_ACCELL), cs.travel_acceleration);
|
||||||
|
|
||||||
// Store the saved target
|
// Store the saved target
|
||||||
eeprom_update_float((float*)(EEPROM_UVLO_SAVED_TARGET+0*4), saved_target[X_AXIS]);
|
eeprom_update_float((float*)(EEPROM_UVLO_SAVED_TARGET+0*4), saved_target[X_AXIS]);
|
||||||
eeprom_update_float((float*)(EEPROM_UVLO_SAVED_TARGET+1*4), saved_target[Y_AXIS]);
|
eeprom_update_float((float*)(EEPROM_UVLO_SAVED_TARGET+1*4), saved_target[Y_AXIS]);
|
||||||
@ -11280,8 +11277,8 @@ void restore_print_from_eeprom(bool mbl_was_active) {
|
|||||||
}
|
}
|
||||||
dir_name[8] = '\0';
|
dir_name[8] = '\0';
|
||||||
MYSERIAL.println(dir_name);
|
MYSERIAL.println(dir_name);
|
||||||
strcpy(dir_names[i], dir_name);
|
// strcpy(card.dir_names[i], dir_name);
|
||||||
card.chdir(dir_name);
|
card.chdir(dir_name, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0; i < 8; i++) {
|
for (int i = 0; i < 8; i++) {
|
||||||
@ -11312,6 +11309,13 @@ void restore_print_from_eeprom(bool mbl_was_active) {
|
|||||||
sprintf_P(cmd, PSTR("G1 Z%f"), eeprom_read_float((float*)(EEPROM_UVLO_CURRENT_POSITION_Z)));
|
sprintf_P(cmd, PSTR("G1 Z%f"), eeprom_read_float((float*)(EEPROM_UVLO_CURRENT_POSITION_Z)));
|
||||||
enquecommand(cmd);
|
enquecommand(cmd);
|
||||||
|
|
||||||
|
// Restore acceleration settings
|
||||||
|
float acceleration = eeprom_read_float((float*)(EEPROM_UVLO_ACCELL));
|
||||||
|
float retract_acceleration = eeprom_read_float((float*)(EEPROM_UVLO_RETRACT_ACCELL));
|
||||||
|
float travel_acceleration = eeprom_read_float((float*)(EEPROM_UVLO_TRAVEL_ACCELL));
|
||||||
|
sprintf_P(cmd, PSTR("M204 P%f R%f T%f"), acceleration, retract_acceleration, travel_acceleration);
|
||||||
|
enquecommand(cmd);
|
||||||
|
|
||||||
// Unretract.
|
// Unretract.
|
||||||
sprintf_P(cmd, PSTR("G1 E%0.3f F2700"), default_retraction);
|
sprintf_P(cmd, PSTR("G1 E%0.3f F2700"), default_retraction);
|
||||||
enquecommand(cmd);
|
enquecommand(cmd);
|
||||||
@ -11778,7 +11782,7 @@ void M600_wait_for_user(float HotendTempBckp) {
|
|||||||
delay_keep_alive(4);
|
delay_keep_alive(4);
|
||||||
|
|
||||||
if (_millis() > waiting_start_time + (unsigned long)M600_TIMEOUT * 1000) {
|
if (_millis() > waiting_start_time + (unsigned long)M600_TIMEOUT * 1000) {
|
||||||
lcd_display_message_fullscreen_P(_i("Press knob to preheat nozzle and continue."));////MSG_PRESS_TO_PREHEAT c=20 r=4
|
lcd_display_message_fullscreen_P(_i("Press the knob to preheat nozzle and continue."));////MSG_PRESS_TO_PREHEAT c=20 r=4
|
||||||
wait_for_user_state = 1;
|
wait_for_user_state = 1;
|
||||||
setAllTargetHotends(0);
|
setAllTargetHotends(0);
|
||||||
st_synchronize();
|
st_synchronize();
|
||||||
|
@ -27,6 +27,7 @@ CardReader::CardReader()
|
|||||||
workDirDepth = 0;
|
workDirDepth = 0;
|
||||||
file_subcall_ctr=0;
|
file_subcall_ctr=0;
|
||||||
memset(workDirParents, 0, sizeof(workDirParents));
|
memset(workDirParents, 0, sizeof(workDirParents));
|
||||||
|
presort_flag = false;
|
||||||
|
|
||||||
autostart_stilltocheck=true; //the SD start is delayed, because otherwise the serial cannot answer fast enough to make contact with the host software.
|
autostart_stilltocheck=true; //the SD start is delayed, because otherwise the serial cannot answer fast enough to make contact with the host software.
|
||||||
lastnr=0;
|
lastnr=0;
|
||||||
@ -64,12 +65,23 @@ char *createFilename(char *buffer,const dir_t &p) //buffer>12characters
|
|||||||
+*/
|
+*/
|
||||||
|
|
||||||
void CardReader::lsDive(const char *prepend, SdFile parent, const char * const match/*=NULL*/) {
|
void CardReader::lsDive(const char *prepend, SdFile parent, const char * const match/*=NULL*/) {
|
||||||
|
static uint8_t recursionCnt = 0;
|
||||||
|
// RAII incrementer for the recursionCnt
|
||||||
|
class _incrementer
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
_incrementer() {recursionCnt++;}
|
||||||
|
~_incrementer() {recursionCnt--;}
|
||||||
|
} recursionCntIncrementer;
|
||||||
|
|
||||||
dir_t p;
|
dir_t p;
|
||||||
uint8_t cnt = 0;
|
uint8_t cnt = 0;
|
||||||
// Read the next entry from a directory
|
// Read the next entry from a directory
|
||||||
while (parent.readDir(p, longFilename) > 0) {
|
while (parent.readDir(p, longFilename) > 0) {
|
||||||
// If the entry is a directory and the action is LS_SerialPrint
|
if (recursionCnt > MAX_DIR_DEPTH)
|
||||||
if (DIR_IS_SUBDIR(&p) && lsAction != LS_Count && lsAction != LS_GetFilename) {
|
return;
|
||||||
|
else if (DIR_IS_SUBDIR(&p) && lsAction != LS_Count && lsAction != LS_GetFilename) { // If the entry is a directory and the action is LS_SerialPrint
|
||||||
|
|
||||||
// Get the short name for the item, which we know is a folder
|
// Get the short name for the item, which we know is a folder
|
||||||
char lfilename[FILENAME_LENGTH];
|
char lfilename[FILENAME_LENGTH];
|
||||||
createFilename(lfilename, p);
|
createFilename(lfilename, p);
|
||||||
@ -236,18 +248,18 @@ void CardReader::initsd()
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CardReader::setroot()
|
void CardReader::setroot(bool doPresort)
|
||||||
{
|
{
|
||||||
/*if(!workDir.openRoot(&volume))
|
|
||||||
{
|
|
||||||
SERIAL_ECHOLNPGM(MSG_SD_WORKDIR_FAIL);
|
|
||||||
}*/
|
|
||||||
workDir=root;
|
workDir=root;
|
||||||
|
workDirDepth = 0;
|
||||||
|
|
||||||
curDir=&workDir;
|
curDir=&workDir;
|
||||||
#ifdef SDCARD_SORT_ALPHA
|
#ifdef SDCARD_SORT_ALPHA
|
||||||
|
if (doPresort)
|
||||||
presort();
|
presort();
|
||||||
#endif
|
else
|
||||||
|
presort_flag = true;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
void CardReader::release()
|
void CardReader::release()
|
||||||
{
|
{
|
||||||
@ -299,6 +311,18 @@ void CardReader::getAbsFilename(char *t)
|
|||||||
else
|
else
|
||||||
t[0]=0;
|
t[0]=0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CardReader::printAbsFilenameFast()
|
||||||
|
{
|
||||||
|
SERIAL_PROTOCOL('/');
|
||||||
|
for (uint8_t i = 0; i < getWorkDirDepth(); i++)
|
||||||
|
{
|
||||||
|
SERIAL_PROTOCOL(dir_names[i]);
|
||||||
|
SERIAL_PROTOCOL('/');
|
||||||
|
}
|
||||||
|
SERIAL_PROTOCOL(LONGEST_FILENAME);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Dive into subfolder
|
* @brief Dive into subfolder
|
||||||
*
|
*
|
||||||
@ -312,19 +336,17 @@ void CardReader::getAbsFilename(char *t)
|
|||||||
* @param[in,out] fileName
|
* @param[in,out] fileName
|
||||||
* expects file name including path
|
* expects file name including path
|
||||||
* in case of absolute path, file name without path is returned
|
* in case of absolute path, file name without path is returned
|
||||||
* @param[in,out] dir SdFile object to operate with,
|
|
||||||
* in case of absolute path, curDir is modified to point to dir,
|
|
||||||
* so it is not possible to create on stack inside this function,
|
|
||||||
* as curDir would point to destroyed object.
|
|
||||||
*/
|
*/
|
||||||
void CardReader::diveSubfolder (const char *fileName, SdFile& dir)
|
bool CardReader::diveSubfolder (const char *&fileName)
|
||||||
{
|
{
|
||||||
curDir=&root;
|
curDir=&root;
|
||||||
if (!fileName) return;
|
if (!fileName)
|
||||||
|
return 1;
|
||||||
|
|
||||||
const char *dirname_start, *dirname_end;
|
const char *dirname_start, *dirname_end;
|
||||||
if (fileName[0] == '/') // absolute path
|
if (fileName[0] == '/') // absolute path
|
||||||
{
|
{
|
||||||
|
setroot(false);
|
||||||
dirname_start = fileName + 1;
|
dirname_start = fileName + 1;
|
||||||
while (*dirname_start)
|
while (*dirname_start)
|
||||||
{
|
{
|
||||||
@ -335,23 +357,13 @@ void CardReader::diveSubfolder (const char *fileName, SdFile& dir)
|
|||||||
{
|
{
|
||||||
const size_t maxLen = 12;
|
const size_t maxLen = 12;
|
||||||
char subdirname[maxLen+1];
|
char subdirname[maxLen+1];
|
||||||
subdirname[maxLen] = 0;
|
|
||||||
const size_t len = ((static_cast<size_t>(dirname_end-dirname_start))>maxLen) ? maxLen : (dirname_end-dirname_start);
|
const size_t len = ((static_cast<size_t>(dirname_end-dirname_start))>maxLen) ? maxLen : (dirname_end-dirname_start);
|
||||||
strncpy(subdirname, dirname_start, len);
|
strncpy(subdirname, dirname_start, len);
|
||||||
SERIAL_ECHOLN(subdirname);
|
subdirname[len] = 0;
|
||||||
if (!dir.open(curDir, subdirname, O_READ))
|
if (!chdir(subdirname, false))
|
||||||
{
|
return 0;
|
||||||
SERIAL_PROTOCOLRPGM(MSG_SD_OPEN_FILE_FAIL);
|
|
||||||
SERIAL_PROTOCOL(subdirname);
|
|
||||||
SERIAL_PROTOCOLLN('.');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
//SERIAL_ECHOLN("dive ok");
|
|
||||||
}
|
|
||||||
|
|
||||||
curDir = &dir;
|
curDir = &workDir;
|
||||||
dirname_start = dirname_end + 1;
|
dirname_start = dirname_end + 1;
|
||||||
}
|
}
|
||||||
else // the reminder after all /fsa/fdsa/ is the filename
|
else // the reminder after all /fsa/fdsa/ is the filename
|
||||||
@ -368,6 +380,7 @@ void CardReader::diveSubfolder (const char *fileName, SdFile& dir)
|
|||||||
{
|
{
|
||||||
curDir = &workDir;
|
curDir = &workDir;
|
||||||
}
|
}
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CardReader::openFile(const char* name,bool read, bool replace_current/*=true*/)
|
void CardReader::openFile(const char* name,bool read, bool replace_current/*=true*/)
|
||||||
@ -418,25 +431,24 @@ void CardReader::openFile(const char* name,bool read, bool replace_current/*=tru
|
|||||||
}
|
}
|
||||||
sdprinting = false;
|
sdprinting = false;
|
||||||
|
|
||||||
SdFile myDir;
|
|
||||||
const char *fname=name;
|
const char *fname=name;
|
||||||
diveSubfolder(fname,myDir);
|
if (!diveSubfolder(fname))
|
||||||
|
return;
|
||||||
|
|
||||||
if(read)
|
if(read)
|
||||||
{
|
{
|
||||||
if (file.open(curDir, fname, O_READ))
|
if (file.open(curDir, fname, O_READ))
|
||||||
{
|
{
|
||||||
|
getfilename(0, fname);
|
||||||
filesize = file.fileSize();
|
filesize = file.fileSize();
|
||||||
SERIAL_PROTOCOLRPGM(_N("File opened: "));////MSG_SD_FILE_OPENED
|
SERIAL_PROTOCOLRPGM(_N("File opened: "));////MSG_SD_FILE_OPENED
|
||||||
SERIAL_PROTOCOL(fname);
|
printAbsFilenameFast();
|
||||||
SERIAL_PROTOCOLRPGM(_n(" Size: "));////MSG_SD_SIZE
|
SERIAL_PROTOCOLRPGM(_n(" Size: "));////MSG_SD_SIZE
|
||||||
SERIAL_PROTOCOLLN(filesize);
|
SERIAL_PROTOCOLLN(filesize);
|
||||||
sdpos = 0;
|
sdpos = 0;
|
||||||
|
|
||||||
SERIAL_PROTOCOLLNRPGM(_N("File selected"));////MSG_SD_FILE_SELECTED
|
SERIAL_PROTOCOLLNRPGM(MSG_FILE_SELECTED);
|
||||||
getfilename(0, fname);
|
lcd_setstatuspgm(MSG_FILE_SELECTED);
|
||||||
lcd_setstatus(longFilename[0] ? longFilename : fname);
|
|
||||||
lcd_setstatuspgm(PSTR("SD-PRINTING"));
|
|
||||||
scrollstuff = 0;
|
scrollstuff = 0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -471,9 +483,9 @@ void CardReader::removeFile(const char* name)
|
|||||||
file.close();
|
file.close();
|
||||||
sdprinting = false;
|
sdprinting = false;
|
||||||
|
|
||||||
SdFile myDir;
|
|
||||||
const char *fname=name;
|
const char *fname=name;
|
||||||
diveSubfolder(fname,myDir);
|
if (!diveSubfolder(fname))
|
||||||
|
return;
|
||||||
|
|
||||||
if (file.remove(curDir, fname))
|
if (file.remove(curDir, fname))
|
||||||
{
|
{
|
||||||
@ -511,10 +523,8 @@ void CardReader::getStatus(bool arg_P)
|
|||||||
{
|
{
|
||||||
if (arg_P)
|
if (arg_P)
|
||||||
{
|
{
|
||||||
SERIAL_PROTOCOL('/');
|
printAbsFilenameFast();
|
||||||
for (uint8_t i = 0; i < getWorkDirDepth(); i++)
|
SERIAL_PROTOCOLLN();
|
||||||
printf_P(PSTR("%s/"), dir_names[i]);
|
|
||||||
puts(filename);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
SERIAL_PROTOCOLLN(LONGEST_FILENAME);
|
SERIAL_PROTOCOLLN(LONGEST_FILENAME);
|
||||||
@ -666,7 +676,7 @@ uint16_t CardReader::getnrfilenames()
|
|||||||
return nrFiles;
|
return nrFiles;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CardReader::chdir(const char * relpath)
|
bool CardReader::chdir(const char * relpath, bool doPresort)
|
||||||
{
|
{
|
||||||
SdFile newfile;
|
SdFile newfile;
|
||||||
SdFile *parent=&root;
|
SdFile *parent=&root;
|
||||||
@ -683,15 +693,22 @@ bool CardReader::chdir(const char * relpath)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
strcpy(dir_names[workDirDepth], relpath);
|
||||||
|
puts(relpath);
|
||||||
|
|
||||||
if (workDirDepth < MAX_DIR_DEPTH) {
|
if (workDirDepth < MAX_DIR_DEPTH) {
|
||||||
for (int d = ++workDirDepth; d--;)
|
for (int d = ++workDirDepth; d--;)
|
||||||
workDirParents[d+1] = workDirParents[d];
|
workDirParents[d+1] = workDirParents[d];
|
||||||
workDirParents[0]=*parent;
|
workDirParents[0]=*parent;
|
||||||
}
|
}
|
||||||
workDir=newfile;
|
workDir=newfile;
|
||||||
#ifdef SDCARD_SORT_ALPHA
|
|
||||||
|
#ifdef SDCARD_SORT_ALPHA
|
||||||
|
if (doPresort)
|
||||||
presort();
|
presort();
|
||||||
#endif
|
else
|
||||||
|
presort_flag = true;
|
||||||
|
#endif
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -34,14 +34,15 @@ public:
|
|||||||
uint16_t getnrfilenames();
|
uint16_t getnrfilenames();
|
||||||
|
|
||||||
void getAbsFilename(char *t);
|
void getAbsFilename(char *t);
|
||||||
|
void printAbsFilenameFast();
|
||||||
void getDirName(char* name, uint8_t level);
|
void getDirName(char* name, uint8_t level);
|
||||||
uint16_t getWorkDirDepth();
|
uint16_t getWorkDirDepth();
|
||||||
|
|
||||||
|
|
||||||
void ls(bool printLFN);
|
void ls(bool printLFN);
|
||||||
bool chdir(const char * relpath);
|
bool chdir(const char * relpath, bool doPresort);
|
||||||
void updir();
|
void updir();
|
||||||
void setroot();
|
void setroot(bool doPresort);
|
||||||
|
|
||||||
#ifdef SDCARD_SORT_ALPHA
|
#ifdef SDCARD_SORT_ALPHA
|
||||||
void presort();
|
void presort();
|
||||||
@ -77,6 +78,10 @@ public:
|
|||||||
char longFilename[LONG_FILENAME_LENGTH];
|
char longFilename[LONG_FILENAME_LENGTH];
|
||||||
bool filenameIsDir;
|
bool filenameIsDir;
|
||||||
int lastnr; //last number of the autostart;
|
int lastnr; //last number of the autostart;
|
||||||
|
#ifdef SDCARD_SORT_ALPHA
|
||||||
|
bool presort_flag;
|
||||||
|
char dir_names[MAX_DIR_DEPTH][9];
|
||||||
|
#endif // SDCARD_SORT_ALPHA
|
||||||
private:
|
private:
|
||||||
SdFile root,*curDir,workDir,workDirParents[MAX_DIR_DEPTH];
|
SdFile root,*curDir,workDir,workDirParents[MAX_DIR_DEPTH];
|
||||||
uint16_t workDirDepth;
|
uint16_t workDirDepth;
|
||||||
@ -114,7 +119,7 @@ private:
|
|||||||
int16_t nrFiles; //counter for the files in the current directory and recycled as position counter for getting the nrFiles'th name in the directory.
|
int16_t nrFiles; //counter for the files in the current directory and recycled as position counter for getting the nrFiles'th name in the directory.
|
||||||
char* diveDirName;
|
char* diveDirName;
|
||||||
|
|
||||||
void diveSubfolder (const char *fileName, SdFile& dir);
|
bool diveSubfolder (const char *&fileName);
|
||||||
void lsDive(const char *prepend, SdFile parent, const char * const match=NULL);
|
void lsDive(const char *prepend, SdFile parent, const char * const match=NULL);
|
||||||
#ifdef SDCARD_SORT_ALPHA
|
#ifdef SDCARD_SORT_ALPHA
|
||||||
void flush_presort();
|
void flush_presort();
|
||||||
|
@ -319,7 +319,9 @@ static_assert(sizeof(Sheets) == EEPROM_SHEETS_SIZEOF, "Sizeof(Sheets) is not EEP
|
|||||||
| ^ | ^ | ^ | 00h 0 | ^ | PINDA has no temp compensation PINDA v1/2 | ^ | ^
|
| ^ | ^ | ^ | 00h 0 | ^ | PINDA has no temp compensation PINDA v1/2 | ^ | ^
|
||||||
| ^ | ^ | ^ | 01h 1 | ^ | PINDA has temp compensation aka SuperPINDA | ^ | ^
|
| ^ | ^ | ^ | 01h 1 | ^ | PINDA has temp compensation aka SuperPINDA | ^ | ^
|
||||||
| 0x0D15 3349 | char[20] | EEPROM_PRUSA_SN | SN[19] == 0 | ffffffffffffffff... | PRUSA Serial number string | PRUSA SN | D3 Ax0d15 C20
|
| 0x0D15 3349 | char[20] | EEPROM_PRUSA_SN | SN[19] == 0 | ffffffffffffffff... | PRUSA Serial number string | PRUSA SN | D3 Ax0d15 C20
|
||||||
|
| 0x0D11 3345 | float | EEPROM_UVLO_ACCELL | ??? | ff ff ff ffh | Power panic saved normal acceleration | ??? | D3 Ax0d11 C4
|
||||||
|
| 0x0D0D 3341 | float | EEPROM_UVLO_RETRACT_ACCELL | ??? | ff ff ff ffh | Power panic saved retract acceleration | ??? | D3 Ax0d0d C4
|
||||||
|
| 0x0D09 3337 | float | EEPROM_UVLO_TRAVEL_ACCELL | ??? | ff ff ff ffh | Power panic saved travel acceleration | ??? | D3 Ax0d09 C4
|
||||||
|
|
||||||
| Address begin | Bit/Type | Name | Valid values | Default/FactoryReset | Description | Gcode/Function| Debug code
|
| Address begin | Bit/Type | Name | Valid values | Default/FactoryReset | Description | Gcode/Function| Debug code
|
||||||
| :--: | :--: | :--: | :--: | :--: | :--: | :--: | :--:
|
| :--: | :--: | :--: | :--: | :--: | :--: | :--: | :--:
|
||||||
@ -525,8 +527,13 @@ static Sheets * const EEPROM_Sheets_base = (Sheets*)(EEPROM_SHEETS_BASE);
|
|||||||
#define EEPROM_EXPERIMENTAL_VISIBILITY (EEPROM_ALTFAN_OVERRIDE-1) //uint8
|
#define EEPROM_EXPERIMENTAL_VISIBILITY (EEPROM_ALTFAN_OVERRIDE-1) //uint8
|
||||||
#define EEPROM_PINDA_TEMP_COMPENSATION (EEPROM_EXPERIMENTAL_VISIBILITY-1) //uint8
|
#define EEPROM_PINDA_TEMP_COMPENSATION (EEPROM_EXPERIMENTAL_VISIBILITY-1) //uint8
|
||||||
#define EEPROM_PRUSA_SN (EEPROM_PINDA_TEMP_COMPENSATION-20) //char[20]
|
#define EEPROM_PRUSA_SN (EEPROM_PINDA_TEMP_COMPENSATION-20) //char[20]
|
||||||
|
|
||||||
|
#define EEPROM_UVLO_ACCELL (EEPROM_PRUSA_SN-4) // float
|
||||||
|
#define EEPROM_UVLO_RETRACT_ACCELL (EEPROM_UVLO_ACCELL-4) // float
|
||||||
|
#define EEPROM_UVLO_TRAVEL_ACCELL (EEPROM_UVLO_RETRACT_ACCELL-4) // float
|
||||||
|
|
||||||
//This is supposed to point to last item to allow EEPROM overrun check. Please update when adding new items.
|
//This is supposed to point to last item to allow EEPROM overrun check. Please update when adding new items.
|
||||||
#define EEPROM_LAST_ITEM EEPROM_PRUSA_SN
|
#define EEPROM_LAST_ITEM EEPROM_UVLO_TRAVEL_ACCELL
|
||||||
// !!!!!
|
// !!!!!
|
||||||
// !!!!! this is end of EEPROM section ... all updates MUST BE inserted before this mark !!!!!
|
// !!!!! this is end of EEPROM section ... all updates MUST BE inserted before this mark !!!!!
|
||||||
// !!!!!
|
// !!!!!
|
||||||
|
@ -197,3 +197,4 @@ const char MSG_M112_KILL[] PROGMEM_N1 = "M112 called. Emergency Stop."; ////c=20
|
|||||||
const char MSG_ADVANCE_K[] PROGMEM_N1 = "Advance K:"; ////c=13
|
const char MSG_ADVANCE_K[] PROGMEM_N1 = "Advance K:"; ////c=13
|
||||||
const char MSG_POWERPANIC_DETECTED[] PROGMEM_N1 = "POWER PANIC DETECTED"; ////c=20
|
const char MSG_POWERPANIC_DETECTED[] PROGMEM_N1 = "POWER PANIC DETECTED"; ////c=20
|
||||||
const char MSG_LCD_STATUS_CHANGED[] PROGMEM_N1 = "LCD status changed";
|
const char MSG_LCD_STATUS_CHANGED[] PROGMEM_N1 = "LCD status changed";
|
||||||
|
const char MSG_FILE_SELECTED[] PROGMEM_N1 = "File selected"; ////c=20
|
||||||
|
@ -197,6 +197,7 @@ extern const char MSG_M112_KILL[];
|
|||||||
extern const char MSG_ADVANCE_K[];
|
extern const char MSG_ADVANCE_K[];
|
||||||
extern const char MSG_POWERPANIC_DETECTED[];
|
extern const char MSG_POWERPANIC_DETECTED[];
|
||||||
extern const char MSG_LCD_STATUS_CHANGED[];
|
extern const char MSG_LCD_STATUS_CHANGED[];
|
||||||
|
extern const char MSG_FILE_SELECTED[];
|
||||||
|
|
||||||
#if defined(__cplusplus)
|
#if defined(__cplusplus)
|
||||||
}
|
}
|
||||||
|
@ -1082,7 +1082,8 @@ Having the real displacement of the head, we can calculate the total movement le
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
block->acceleration_st = ceil(cs.acceleration * steps_per_mm); // convert to: acceleration steps/sec^2
|
float acceleration = (block->steps_e.wide == 0? cs.travel_acceleration: cs.acceleration);
|
||||||
|
block->acceleration_st = ceil(acceleration * steps_per_mm); // convert to: acceleration steps/sec^2
|
||||||
|
|
||||||
#ifdef LIN_ADVANCE
|
#ifdef LIN_ADVANCE
|
||||||
/**
|
/**
|
||||||
|
@ -71,11 +71,6 @@ int8_t FSensorStateMenu = 1;
|
|||||||
bool bMenuFSDetect=false;
|
bool bMenuFSDetect=false;
|
||||||
#endif //IR_SENSOR_ANALOG
|
#endif //IR_SENSOR_ANALOG
|
||||||
|
|
||||||
|
|
||||||
#ifdef SDCARD_SORT_ALPHA
|
|
||||||
bool presort_flag = false;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
LcdCommands lcd_commands_type = LcdCommands::Idle;
|
LcdCommands lcd_commands_type = LcdCommands::Idle;
|
||||||
static uint8_t lcd_commands_step = 0;
|
static uint8_t lcd_commands_step = 0;
|
||||||
|
|
||||||
@ -2059,18 +2054,18 @@ uint8_t nLevel;
|
|||||||
|
|
||||||
lcd_set_cursor(0,0);
|
lcd_set_cursor(0,0);
|
||||||
lcdui_print_temp(LCD_STR_THERMOMETER[0],(int)degHotend(0),(int)degTargetHotend(0));
|
lcdui_print_temp(LCD_STR_THERMOMETER[0],(int)degHotend(0),(int)degTargetHotend(0));
|
||||||
lcd_puts_at_P(0,2, _i("Press the knob")); ////MSG_ c=20 r=1
|
lcd_puts_at_P(0,1, _i("Press the knob")); ////MSG_ c=20
|
||||||
lcd_set_cursor(0,3);
|
lcd_set_cursor(0,2);
|
||||||
switch(eFilamentAction)
|
switch(eFilamentAction)
|
||||||
{
|
{
|
||||||
case FilamentAction::Load:
|
case FilamentAction::Load:
|
||||||
case FilamentAction::AutoLoad:
|
case FilamentAction::AutoLoad:
|
||||||
case FilamentAction::MmuLoad:
|
case FilamentAction::MmuLoad:
|
||||||
lcd_puts_P(_i("to load filament")); ////MSG_ c=20 r=1
|
lcd_puts_P(_i("to load filament")); ////MSG_ c=20
|
||||||
break;
|
break;
|
||||||
case FilamentAction::UnLoad:
|
case FilamentAction::UnLoad:
|
||||||
case FilamentAction::MmuUnLoad:
|
case FilamentAction::MmuUnLoad:
|
||||||
lcd_puts_P(_i("to unload filament")); ////MSG_ c=20 r=1
|
lcd_puts_P(_i("to unload filament")); ////MSG_ c=20
|
||||||
break;
|
break;
|
||||||
case FilamentAction::MmuEject:
|
case FilamentAction::MmuEject:
|
||||||
case FilamentAction::MmuCut:
|
case FilamentAction::MmuCut:
|
||||||
@ -4141,7 +4136,7 @@ static void lcd_sort_type_set() {
|
|||||||
default: sdSort = SD_SORT_TIME;
|
default: sdSort = SD_SORT_TIME;
|
||||||
}
|
}
|
||||||
eeprom_update_byte((unsigned char *)EEPROM_SD_SORT, sdSort);
|
eeprom_update_byte((unsigned char *)EEPROM_SD_SORT, sdSort);
|
||||||
presort_flag = true;
|
card.presort_flag = true;
|
||||||
}
|
}
|
||||||
#endif //SDCARD_SORT_ALPHA
|
#endif //SDCARD_SORT_ALPHA
|
||||||
|
|
||||||
@ -5108,8 +5103,6 @@ do\
|
|||||||
else\
|
else\
|
||||||
MENU_ITEM_TOGGLE_P(_T(MSG_SD_CARD), _T(MSG_NORMAL), lcd_toshiba_flash_air_compatibility_toggle);\
|
MENU_ITEM_TOGGLE_P(_T(MSG_SD_CARD), _T(MSG_NORMAL), lcd_toshiba_flash_air_compatibility_toggle);\
|
||||||
\
|
\
|
||||||
if (!farm_mode)\
|
|
||||||
{\
|
|
||||||
uint8_t sdSort;\
|
uint8_t sdSort;\
|
||||||
EEPROM_read(EEPROM_SD_SORT, (uint8_t*)&sdSort, sizeof(sdSort));\
|
EEPROM_read(EEPROM_SD_SORT, (uint8_t*)&sdSort, sizeof(sdSort));\
|
||||||
switch (sdSort)\
|
switch (sdSort)\
|
||||||
@ -5118,7 +5111,6 @@ do\
|
|||||||
case SD_SORT_ALPHA: MENU_ITEM_TOGGLE_P(_T(MSG_SORT), _T(MSG_SORT_ALPHA), lcd_sort_type_set); break;\
|
case SD_SORT_ALPHA: MENU_ITEM_TOGGLE_P(_T(MSG_SORT), _T(MSG_SORT_ALPHA), lcd_sort_type_set); break;\
|
||||||
default: MENU_ITEM_TOGGLE_P(_T(MSG_SORT), _T(MSG_NONE), lcd_sort_type_set);\
|
default: MENU_ITEM_TOGGLE_P(_T(MSG_SORT), _T(MSG_NONE), lcd_sort_type_set);\
|
||||||
}\
|
}\
|
||||||
}\
|
|
||||||
}\
|
}\
|
||||||
while (0)
|
while (0)
|
||||||
#else // SDCARD_SORT_ALPHA
|
#else // SDCARD_SORT_ALPHA
|
||||||
@ -7026,9 +7018,9 @@ void lcd_sdcard_menu()
|
|||||||
{
|
{
|
||||||
case _uninitialized: //Initialize menu data
|
case _uninitialized: //Initialize menu data
|
||||||
{
|
{
|
||||||
if (presort_flag == true) //used to force resorting if sorting type is changed.
|
if (card.presort_flag == true) //used to force resorting if sorting type is changed.
|
||||||
{
|
{
|
||||||
presort_flag = false;
|
card.presort_flag = false;
|
||||||
card.presort();
|
card.presort();
|
||||||
}
|
}
|
||||||
_md->fileCnt = card.getnrfilenames();
|
_md->fileCnt = card.getnrfilenames();
|
||||||
@ -8472,7 +8464,7 @@ static void menu_action_sdfile(const char* filename)
|
|||||||
|
|
||||||
for (uint_least8_t i = 0; i < depth; i++) {
|
for (uint_least8_t i = 0; i < depth; i++) {
|
||||||
for (uint_least8_t j = 0; j < 8; j++) {
|
for (uint_least8_t j = 0; j < 8; j++) {
|
||||||
eeprom_write_byte((uint8_t*)EEPROM_DIRS + j + 8 * i, dir_names[i][j]);
|
eeprom_write_byte((uint8_t*)EEPROM_DIRS + j + 8 * i, card.dir_names[i][j]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -8490,14 +8482,7 @@ static void menu_action_sdfile(const char* filename)
|
|||||||
|
|
||||||
void menu_action_sddirectory(const char* filename)
|
void menu_action_sddirectory(const char* filename)
|
||||||
{
|
{
|
||||||
bool success = card.chdir(filename);
|
card.chdir(filename, true);
|
||||||
|
|
||||||
if (success)
|
|
||||||
{
|
|
||||||
strcpy(dir_names[card.getWorkDirDepth()], filename);
|
|
||||||
MYSERIAL.println(filename);
|
|
||||||
}
|
|
||||||
|
|
||||||
lcd_encoder = 0;
|
lcd_encoder = 0;
|
||||||
menu_data_reset(); //Forces reloading of cached variables.
|
menu_data_reset(); //Forces reloading of cached variables.
|
||||||
}
|
}
|
||||||
|
@ -92,6 +92,7 @@ AXIS SETTINGS
|
|||||||
|
|
||||||
#define DEFAULT_ACCELERATION 1500 // X, Y, Z and E max acceleration in mm/s^2 for printing moves
|
#define DEFAULT_ACCELERATION 1500 // X, Y, Z and E max acceleration in mm/s^2 for printing moves
|
||||||
#define DEFAULT_RETRACT_ACCELERATION 1500 // X, Y, Z and E max acceleration in mm/s^2 for retracts
|
#define DEFAULT_RETRACT_ACCELERATION 1500 // X, Y, Z and E max acceleration in mm/s^2 for retracts
|
||||||
|
#define DEFAULT_TRAVEL_ACCELERATION 1500 // X, Y, Z and E max acceleration in mm/s^2 for travels
|
||||||
|
|
||||||
|
|
||||||
#define MANUAL_FEEDRATE {3000, 3000, 1000, 100} // set the speeds for manual moves (mm/min)
|
#define MANUAL_FEEDRATE {3000, 3000, 1000, 100} // set the speeds for manual moves (mm/min)
|
||||||
|
@ -92,6 +92,7 @@ AXIS SETTINGS
|
|||||||
|
|
||||||
#define DEFAULT_ACCELERATION 1500 // X, Y, Z and E max acceleration in mm/s^2 for printing moves
|
#define DEFAULT_ACCELERATION 1500 // X, Y, Z and E max acceleration in mm/s^2 for printing moves
|
||||||
#define DEFAULT_RETRACT_ACCELERATION 1500 // X, Y, Z and E max acceleration in mm/s^2 for retracts
|
#define DEFAULT_RETRACT_ACCELERATION 1500 // X, Y, Z and E max acceleration in mm/s^2 for retracts
|
||||||
|
#define DEFAULT_TRAVEL_ACCELERATION 1500 // X, Y, Z and E max acceleration in mm/s^2 for travels
|
||||||
|
|
||||||
|
|
||||||
#define MANUAL_FEEDRATE {3000, 3000, 1000, 100} // set the speeds for manual moves (mm/min)
|
#define MANUAL_FEEDRATE {3000, 3000, 1000, 100} // set the speeds for manual moves (mm/min)
|
||||||
|
@ -94,8 +94,9 @@
|
|||||||
#define DEFAULT_MAX_ACCELERATION {1000, 1000, 200, 5000} // (mm/sec^2) max acceleration (M201)
|
#define DEFAULT_MAX_ACCELERATION {1000, 1000, 200, 5000} // (mm/sec^2) max acceleration (M201)
|
||||||
#define DEFAULT_MAX_ACCELERATION_SILENT {960, 960, 200, 5000} // (mm/sec^2) max acceleration (M201), silent mode
|
#define DEFAULT_MAX_ACCELERATION_SILENT {960, 960, 200, 5000} // (mm/sec^2) max acceleration (M201), silent mode
|
||||||
|
|
||||||
#define DEFAULT_ACCELERATION 1250 // X, Y, Z and E max acceleration in mm/s^2 for printing moves (M204S)
|
#define DEFAULT_ACCELERATION 1250 // X, Y, Z and E max acceleration in mm/s^2 for printing moves (M204P)
|
||||||
#define DEFAULT_RETRACT_ACCELERATION 1250 // X, Y, Z and E max acceleration in mm/s^2 for retracts (M204T)
|
#define DEFAULT_RETRACT_ACCELERATION 1250 // X, Y, Z and E max acceleration in mm/s^2 for retracts (M204R)
|
||||||
|
#define DEFAULT_TRAVEL_ACCELERATION 1250 // X, Y, Z and E max acceleration in mm/s^2 for travels (M204T)
|
||||||
|
|
||||||
#define MANUAL_FEEDRATE {2700, 2700, 1000, 100} // set the speeds for manual moves (mm/min)
|
#define MANUAL_FEEDRATE {2700, 2700, 1000, 100} // set the speeds for manual moves (mm/min)
|
||||||
|
|
||||||
|
@ -95,8 +95,9 @@
|
|||||||
#define DEFAULT_MAX_ACCELERATION_SILENT {960, 960, 200, 5000} // (mm/sec^2) max acceleration (M201), silent mode
|
#define DEFAULT_MAX_ACCELERATION_SILENT {960, 960, 200, 5000} // (mm/sec^2) max acceleration (M201), silent mode
|
||||||
|
|
||||||
|
|
||||||
#define DEFAULT_ACCELERATION 1250 // X, Y, Z and E max acceleration in mm/s^2 for printing moves (M204S)
|
#define DEFAULT_ACCELERATION 1250 // X, Y, Z and E max acceleration in mm/s^2 for printing moves (M204P)
|
||||||
#define DEFAULT_RETRACT_ACCELERATION 1250 // X, Y, Z and E max acceleration in mm/s^2 for retracts (M204T)
|
#define DEFAULT_RETRACT_ACCELERATION 1250 // X, Y, Z and E max acceleration in mm/s^2 for retracts (M204R)
|
||||||
|
#define DEFAULT_TRAVEL_ACCELERATION 1250 // X, Y, Z and E max acceleration in mm/s^2 for travels (M204T)
|
||||||
|
|
||||||
#define MANUAL_FEEDRATE {2700, 2700, 1000, 100} // set the speeds for manual moves (mm/min)
|
#define MANUAL_FEEDRATE {2700, 2700, 1000, 100} // set the speeds for manual moves (mm/min)
|
||||||
|
|
||||||
|
@ -94,8 +94,9 @@
|
|||||||
#define DEFAULT_MAX_ACCELERATION {1000, 1000, 200, 5000} // (mm/sec^2) max acceleration (M201)
|
#define DEFAULT_MAX_ACCELERATION {1000, 1000, 200, 5000} // (mm/sec^2) max acceleration (M201)
|
||||||
#define DEFAULT_MAX_ACCELERATION_SILENT {960, 960, 200, 5000} // (mm/sec^2) max acceleration (M201), silent mode
|
#define DEFAULT_MAX_ACCELERATION_SILENT {960, 960, 200, 5000} // (mm/sec^2) max acceleration (M201), silent mode
|
||||||
|
|
||||||
#define DEFAULT_ACCELERATION 1250 // X, Y, Z and E max acceleration in mm/s^2 for printing moves (M204S)
|
#define DEFAULT_ACCELERATION 1250 // X, Y, Z and E max acceleration in mm/s^2 for printing moves (M204P)
|
||||||
#define DEFAULT_RETRACT_ACCELERATION 1250 // X, Y, Z and E max acceleration in mm/s^2 for retracts (M204T)
|
#define DEFAULT_RETRACT_ACCELERATION 1250 // X, Y, Z and E max acceleration in mm/s^2 for retracts (M204R)
|
||||||
|
#define DEFAULT_TRAVEL_ACCELERATION 1250 // X, Y, Z and E max acceleration in mm/s^2 for travels (M204T)
|
||||||
|
|
||||||
#define MANUAL_FEEDRATE {2700, 2700, 1000, 100} // set the speeds for manual moves (mm/min)
|
#define MANUAL_FEEDRATE {2700, 2700, 1000, 100} // set the speeds for manual moves (mm/min)
|
||||||
|
|
||||||
|
@ -95,8 +95,9 @@
|
|||||||
#define DEFAULT_MAX_ACCELERATION_SILENT {960, 960, 200, 5000} // (mm/sec^2) max acceleration (M201), silent mode
|
#define DEFAULT_MAX_ACCELERATION_SILENT {960, 960, 200, 5000} // (mm/sec^2) max acceleration (M201), silent mode
|
||||||
|
|
||||||
|
|
||||||
#define DEFAULT_ACCELERATION 1250 // X, Y, Z and E max acceleration in mm/s^2 for printing moves (M204S)
|
#define DEFAULT_ACCELERATION 1250 // X, Y, Z and E max acceleration in mm/s^2 for printing moves (M204P)
|
||||||
#define DEFAULT_RETRACT_ACCELERATION 1250 // X, Y, Z and E max acceleration in mm/s^2 for retracts (M204T)
|
#define DEFAULT_RETRACT_ACCELERATION 1250 // X, Y, Z and E max acceleration in mm/s^2 for retracts (M204R)
|
||||||
|
#define DEFAULT_TRAVEL_ACCELERATION 1250 // X, Y, Z and E max acceleration in mm/s^2 for travels (M204T)
|
||||||
|
|
||||||
#define MANUAL_FEEDRATE {2700, 2700, 1000, 100} // set the speeds for manual moves (mm/min)
|
#define MANUAL_FEEDRATE {2700, 2700, 1000, 100} // set the speeds for manual moves (mm/min)
|
||||||
|
|
||||||
|
@ -99,8 +99,9 @@
|
|||||||
#define DEFAULT_MAX_ACCELERATION_SILENT {960, 960, 200, 5000} // (mm/sec^2) max acceleration (M201), silent mode
|
#define DEFAULT_MAX_ACCELERATION_SILENT {960, 960, 200, 5000} // (mm/sec^2) max acceleration (M201), silent mode
|
||||||
|
|
||||||
|
|
||||||
#define DEFAULT_ACCELERATION 1250 // X, Y, Z and E max acceleration in mm/s^2 for printing moves (M204S)
|
#define DEFAULT_ACCELERATION 1250 // X, Y, Z and E max acceleration in mm/s^2 for printing moves (M204P)
|
||||||
#define DEFAULT_RETRACT_ACCELERATION 1250 // X, Y, Z and E max acceleration in mm/s^2 for retracts (M204T)
|
#define DEFAULT_RETRACT_ACCELERATION 1250 // X, Y, Z and E max acceleration in mm/s^2 for retracts (M204R)
|
||||||
|
#define DEFAULT_TRAVEL_ACCELERATION 1250 // X, Y, Z and E max acceleration in mm/s^2 for travels (M204T)
|
||||||
|
|
||||||
#define MANUAL_FEEDRATE {2700, 2700, 1000, 100} // set the speeds for manual moves (mm/min)
|
#define MANUAL_FEEDRATE {2700, 2700, 1000, 100} // set the speeds for manual moves (mm/min)
|
||||||
|
|
||||||
|
@ -101,8 +101,9 @@
|
|||||||
#define DEFAULT_MAX_ACCELERATION_SILENT {960, 960, 200, 5000} // (mm/sec^2) max acceleration (M201), silent mode
|
#define DEFAULT_MAX_ACCELERATION_SILENT {960, 960, 200, 5000} // (mm/sec^2) max acceleration (M201), silent mode
|
||||||
|
|
||||||
|
|
||||||
#define DEFAULT_ACCELERATION 1250 // X, Y, Z and E max acceleration in mm/s^2 for printing moves (M204S)
|
#define DEFAULT_ACCELERATION 1250 // X, Y, Z and E max acceleration in mm/s^2 for printing moves (M204P)
|
||||||
#define DEFAULT_RETRACT_ACCELERATION 1250 // X, Y, Z and E max acceleration in mm/s^2 for retracts (M204T)
|
#define DEFAULT_RETRACT_ACCELERATION 1250 // X, Y, Z and E max acceleration in mm/s^2 for retracts (M204R)
|
||||||
|
#define DEFAULT_TRAVEL_ACCELERATION 1250 // X, Y, Z and E max acceleration in mm/s^2 for travels (M204T)
|
||||||
|
|
||||||
#define MANUAL_FEEDRATE {2700, 2700, 1000, 100} // set the speeds for manual moves (mm/min)
|
#define MANUAL_FEEDRATE {2700, 2700, 1000, 100} // set the speeds for manual moves (mm/min)
|
||||||
|
|
||||||
|
@ -620,7 +620,7 @@
|
|||||||
"Please upgrade."
|
"Please upgrade."
|
||||||
|
|
||||||
#MSG_PRESS_TO_PREHEAT c=20 r=4
|
#MSG_PRESS_TO_PREHEAT c=20 r=4
|
||||||
"Press knob to preheat nozzle and continue."
|
"Press the knob to preheat nozzle and continue."
|
||||||
|
|
||||||
#MSG_FS_PAUSE c=5
|
#MSG_FS_PAUSE c=5
|
||||||
"Pause"
|
"Pause"
|
||||||
@ -643,7 +643,7 @@
|
|||||||
#MSG_CARD_MENU
|
#MSG_CARD_MENU
|
||||||
"Print from SD"
|
"Print from SD"
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"Press the knob"
|
"Press the knob"
|
||||||
|
|
||||||
#MSG_PRINT_PAUSED c=20 r=1
|
#MSG_PRINT_PAUSED c=20 r=1
|
||||||
@ -874,10 +874,10 @@
|
|||||||
#MSG_TOTAL_FAILURES c=20
|
#MSG_TOTAL_FAILURES c=20
|
||||||
"Total failures"
|
"Total failures"
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"to load filament"
|
"to load filament"
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"to unload filament"
|
"to unload filament"
|
||||||
|
|
||||||
#MSG_UNLOAD_FILAMENT c=17
|
#MSG_UNLOAD_FILAMENT c=17
|
||||||
|
@ -827,7 +827,7 @@
|
|||||||
"Prosim aktualizujte."
|
"Prosim aktualizujte."
|
||||||
|
|
||||||
#MSG_PRESS_TO_PREHEAT c=20 r=4
|
#MSG_PRESS_TO_PREHEAT c=20 r=4
|
||||||
"Press knob to preheat nozzle and continue."
|
"Press the knob to preheat nozzle and continue."
|
||||||
"Pro nahrati trysky a pokracovani stisknete tlacitko."
|
"Pro nahrati trysky a pokracovani stisknete tlacitko."
|
||||||
|
|
||||||
#MSG_FS_PAUSE c=5
|
#MSG_FS_PAUSE c=5
|
||||||
@ -858,7 +858,7 @@
|
|||||||
"Print from SD"
|
"Print from SD"
|
||||||
"Tisk z SD"
|
"Tisk z SD"
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"Press the knob"
|
"Press the knob"
|
||||||
"Stisknete hl. tlacitko"
|
"Stisknete hl. tlacitko"
|
||||||
|
|
||||||
@ -1166,11 +1166,11 @@
|
|||||||
"Total failures"
|
"Total failures"
|
||||||
"Celkem selhani"
|
"Celkem selhani"
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"to load filament"
|
"to load filament"
|
||||||
"k zavedeni filamentu"
|
"k zavedeni filamentu"
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"to unload filament"
|
"to unload filament"
|
||||||
"k vyjmuti filamentu"
|
"k vyjmuti filamentu"
|
||||||
|
|
||||||
|
@ -827,7 +827,7 @@
|
|||||||
"Bitte aktualisieren."
|
"Bitte aktualisieren."
|
||||||
|
|
||||||
#MSG_PRESS_TO_PREHEAT c=20 r=4
|
#MSG_PRESS_TO_PREHEAT c=20 r=4
|
||||||
"Press knob to preheat nozzle and continue."
|
"Press the knob to preheat nozzle and continue."
|
||||||
"Bitte druecken Sie den Knopf um die Duese vorzuheizen und fortzufahren."
|
"Bitte druecken Sie den Knopf um die Duese vorzuheizen und fortzufahren."
|
||||||
|
|
||||||
#MSG_FS_PAUSE c=5
|
#MSG_FS_PAUSE c=5
|
||||||
@ -858,7 +858,7 @@
|
|||||||
"Print from SD"
|
"Print from SD"
|
||||||
"Drucken von SD"
|
"Drucken von SD"
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"Press the knob"
|
"Press the knob"
|
||||||
"Knopf druecken zum"
|
"Knopf druecken zum"
|
||||||
|
|
||||||
@ -1166,11 +1166,11 @@
|
|||||||
"Total failures"
|
"Total failures"
|
||||||
"Gesamte Fehler"
|
"Gesamte Fehler"
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"to load filament"
|
"to load filament"
|
||||||
"Filament laden"
|
"Filament laden"
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"to unload filament"
|
"to unload filament"
|
||||||
"Filament entladen"
|
"Filament entladen"
|
||||||
|
|
||||||
|
@ -827,7 +827,7 @@
|
|||||||
"Actualize por favor"
|
"Actualize por favor"
|
||||||
|
|
||||||
#MSG_PRESS_TO_PREHEAT c=20 r=4
|
#MSG_PRESS_TO_PREHEAT c=20 r=4
|
||||||
"Press knob to preheat nozzle and continue."
|
"Press the knob to preheat nozzle and continue."
|
||||||
"Pulsa el dial para precalentar la boquilla y continue."
|
"Pulsa el dial para precalentar la boquilla y continue."
|
||||||
|
|
||||||
#MSG_FS_PAUSE c=5
|
#MSG_FS_PAUSE c=5
|
||||||
@ -858,7 +858,7 @@
|
|||||||
"Print from SD"
|
"Print from SD"
|
||||||
"Menu tarjeta SD"
|
"Menu tarjeta SD"
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"Press the knob"
|
"Press the knob"
|
||||||
"Pulsa el dial"
|
"Pulsa el dial"
|
||||||
|
|
||||||
@ -1166,13 +1166,13 @@
|
|||||||
"Total failures"
|
"Total failures"
|
||||||
"Fallos totales"
|
"Fallos totales"
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"to load filament"
|
"to load filament"
|
||||||
"para cargar el filamento"
|
"para cargar el fil."
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"to unload filament"
|
"to unload filament"
|
||||||
"para descargar el filamento"
|
"para descargar fil."
|
||||||
|
|
||||||
#MSG_UNLOAD_FILAMENT c=17
|
#MSG_UNLOAD_FILAMENT c=17
|
||||||
"Unload filament"
|
"Unload filament"
|
||||||
|
@ -827,7 +827,7 @@
|
|||||||
"Mettez a jour le FW."
|
"Mettez a jour le FW."
|
||||||
|
|
||||||
#MSG_PRESS_TO_PREHEAT c=20 r=4
|
#MSG_PRESS_TO_PREHEAT c=20 r=4
|
||||||
"Press knob to preheat nozzle and continue."
|
"Press the knob to preheat nozzle and continue."
|
||||||
"Appuyez sur le bouton pour prechauffer la buse et continuer."
|
"Appuyez sur le bouton pour prechauffer la buse et continuer."
|
||||||
|
|
||||||
#MSG_FS_PAUSE c=5
|
#MSG_FS_PAUSE c=5
|
||||||
@ -858,7 +858,7 @@
|
|||||||
"Print from SD"
|
"Print from SD"
|
||||||
"Impr. depuis la SD"
|
"Impr. depuis la SD"
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"Press the knob"
|
"Press the knob"
|
||||||
"App. sur sur bouton"
|
"App. sur sur bouton"
|
||||||
|
|
||||||
@ -1166,11 +1166,11 @@
|
|||||||
"Total failures"
|
"Total failures"
|
||||||
"Total des echecs"
|
"Total des echecs"
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"to load filament"
|
"to load filament"
|
||||||
"pour charger le fil."
|
"pour charger le fil."
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"to unload filament"
|
"to unload filament"
|
||||||
"pour decharger fil."
|
"pour decharger fil."
|
||||||
|
|
||||||
|
@ -827,7 +827,7 @@
|
|||||||
"Prego aggiornare."
|
"Prego aggiornare."
|
||||||
|
|
||||||
#MSG_PRESS_TO_PREHEAT c=20 r=4
|
#MSG_PRESS_TO_PREHEAT c=20 r=4
|
||||||
"Press knob to preheat nozzle and continue."
|
"Press the knob to preheat nozzle and continue."
|
||||||
"Premete la manopola per preriscaldare l'ugello e continuare."
|
"Premete la manopola per preriscaldare l'ugello e continuare."
|
||||||
|
|
||||||
#MSG_FS_PAUSE c=5
|
#MSG_FS_PAUSE c=5
|
||||||
@ -858,7 +858,7 @@
|
|||||||
"Print from SD"
|
"Print from SD"
|
||||||
"Stampa da SD"
|
"Stampa da SD"
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"Press the knob"
|
"Press the knob"
|
||||||
"Premere la manopola"
|
"Premere la manopola"
|
||||||
|
|
||||||
@ -1166,13 +1166,13 @@
|
|||||||
"Total failures"
|
"Total failures"
|
||||||
"Totale fallimenti"
|
"Totale fallimenti"
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"to load filament"
|
"to load filament"
|
||||||
"per caricare il filamento"
|
"per caricare il fil."
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"to unload filament"
|
"to unload filament"
|
||||||
"per scaricare il filamento"
|
"per scaricare fil."
|
||||||
|
|
||||||
#MSG_UNLOAD_FILAMENT c=17
|
#MSG_UNLOAD_FILAMENT c=17
|
||||||
"Unload filament"
|
"Unload filament"
|
||||||
|
@ -827,7 +827,7 @@
|
|||||||
"Prosze zaktualizowac."
|
"Prosze zaktualizowac."
|
||||||
|
|
||||||
#MSG_PRESS_TO_PREHEAT c=20 r=4
|
#MSG_PRESS_TO_PREHEAT c=20 r=4
|
||||||
"Press knob to preheat nozzle and continue."
|
"Press the knob to preheat nozzle and continue."
|
||||||
"Wcisnij pokretlo aby rozgrzac dysze i kontynuowac."
|
"Wcisnij pokretlo aby rozgrzac dysze i kontynuowac."
|
||||||
|
|
||||||
#MSG_FS_PAUSE c=5
|
#MSG_FS_PAUSE c=5
|
||||||
@ -858,7 +858,7 @@
|
|||||||
"Print from SD"
|
"Print from SD"
|
||||||
"Druk z karty SD"
|
"Druk z karty SD"
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"Press the knob"
|
"Press the knob"
|
||||||
"Wcisnij pokretlo"
|
"Wcisnij pokretlo"
|
||||||
|
|
||||||
@ -1166,11 +1166,11 @@
|
|||||||
"Total failures"
|
"Total failures"
|
||||||
"Suma bledow"
|
"Suma bledow"
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"to load filament"
|
"to load filament"
|
||||||
"aby zaladow. fil."
|
"aby zaladow. fil."
|
||||||
|
|
||||||
#
|
# c=20
|
||||||
"to unload filament"
|
"to unload filament"
|
||||||
"aby rozlad. filament"
|
"aby rozlad. filament"
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user