Merge remote-tracking branch 'refs/remotes/prusa3d/MK2' into MK2

# Conflicts:
#	Firmware/Configuration.h
#	Firmware/ConfigurationStore.cpp
#	Firmware/Configuration_adv.h
#	Firmware/Marlin_main.cpp
#	Firmware/language_all.cpp
#	Firmware/language_all.h
#	Firmware/language_de.h
#	Firmware/language_en.h
#	Firmware/stepper.cpp
This commit is contained in:
3d-gussner 2017-08-01 15:38:47 +02:00
commit 1cc5f5972b
15 changed files with 198 additions and 108 deletions

View File

@ -5,7 +5,7 @@
#include "Configuration_prusa.h"
// Firmware version
#define FW_version "3.0.12"
#define FW_version "3.0.12-2"
#define FW_PRUSA3D_MAGIC "PRUSA3DFW"
#define FW_PRUSA3D_MAGIC_LEN 10
@ -47,9 +47,6 @@
#define EEPROM_TEMP_CAL_ACTIVE (EEPROM_PROBE_TEMP_SHIFT - 1)
#define EEPROM_BOWDEN_LENGTH (EEPROM_TEMP_CAL_ACTIVE - 2*4) //4 x int for bowden lengths for multimaterial
#define EEPROM_CALIBRATION_STATUS_PINDA (EEPROM_BOWDEN_LENGTH - 1) //0 - not calibrated; 1 - calibrated
#define EEPROM_FILENAME (EEPROM_CALIBRATION_STATUS_PINDA - 8) //8chars to store filename without extension
#define EEPROM_FILE_POSITION (EEPROM_FILENAME - 4) //32 bit for uint32_t file position
// Currently running firmware, each digit stored as uint16_t.
// The flavor differentiates a dev, alpha, beta, release candidate or a release version.

View File

@ -43,7 +43,13 @@ void _EEPROM_readData(int &pos, uint8_t* value, uint8_t size)
// wrong data being written to the variables.
// ALSO: always make sure the variables in the Store and retrieve sections are in the same order.
#define EEPROM_VERSION "V1"
#ifdef SNMM
#define EEPROM_VERSION "M1"
#else
#define EEPROM_VERSION "V1"
#endif
#ifdef EEPROM_SETTINGS
void Config_StoreSettings()
@ -264,13 +270,15 @@ void Config_PrintSettings()
#ifdef EEPROM_SETTINGS
void Config_RetrieveSettings()
bool Config_RetrieveSettings()
{
int i=EEPROM_OFFSET;
bool previous_settings_retrieved = true;
char stored_ver[4];
char ver[4]=EEPROM_VERSION;
EEPROM_READ_VAR(i,stored_ver); //read stored version
// SERIAL_ECHOLN("Version: [" << ver << "] Stored version: [" << stored_ver << "]");
// SERIAL_ECHOLN("Version: [" << ver << "] Stored version: [" << stored_ver << "]");
if (strncmp(ver,stored_ver,3) == 0)
{
// version number match
@ -352,17 +360,25 @@ void Config_RetrieveSettings()
updatePID();
float tmp1[] = DEFAULT_AXIS_STEPS_PER_UNIT;
axis_steps_per_unit[3] = tmp1[3];
SERIAL_ECHO_START;
SERIAL_ECHOLNPGM("Stored settings retrieved");
}
else
{
Config_ResetDefault();
//Return false to inform user that eeprom version was changed and firmware is using default hardcoded settings now.
//In case that storing to eeprom was not used yet, do not inform user that hardcoded settings are used.
if (eeprom_read_byte((uint8_t *)EEPROM_OFFSET) != 0xFF ||
eeprom_read_byte((uint8_t *)EEPROM_OFFSET + 1) != 0xFF ||
eeprom_read_byte((uint8_t *)EEPROM_OFFSET + 2) != 0xFF) {
previous_settings_retrieved = false;
}
}
#ifdef EEPROM_CHITCHAT
Config_PrintSettings();
#endif
return previous_settings_retrieved;
}
#endif

View File

@ -14,7 +14,7 @@ FORCE_INLINE void Config_PrintSettings() {}
#ifdef EEPROM_SETTINGS
void Config_StoreSettings();
void Config_RetrieveSettings();
bool Config_RetrieveSettings();
#else
FORCE_INLINE void Config_StoreSettings() {}
FORCE_INLINE void Config_RetrieveSettings() { Config_ResetDefault(); Config_PrintSettings(); }

View File

@ -68,7 +68,7 @@
// When first starting the main fan, run it at full speed for the
// given number of milliseconds. This gets the fan spinning reliably
// before setting a PWM value. (Does not work with software PWM for fan on Sanguinololu)
//#define FAN_KICKSTART_TIME 100
#define FAN_KICKSTART_TIME 1000

View File

@ -348,8 +348,4 @@ float temp_comp_interpolation(float temperature);
void temp_compensation_apply();
void temp_compensation_start();
void wait_for_heater(long codenum);
void serialecho_temperatures();
extern void save_print_to_eeprom();
extern void restore_print_from_eeprom();
extern void position_menu();
void serialecho_temperatures();

View File

@ -1046,7 +1046,7 @@ void setup()
SERIAL_ECHOLN((int)sizeof(block_t)*BLOCK_BUFFER_SIZE);
lcd_update_enable(false);
// loads data from EEPROM if available else uses defaults (and resets step acceleration rate)
Config_RetrieveSettings();
bool previous_settings_retrieved = Config_RetrieveSettings();
SdFatUtil::set_stack_guard(); //writes magic number at the end of static variables to protect against overwriting static memory by stack
tp_init(); // Initialize temperature loop
plan_init(); // Initialize planner;
@ -1210,6 +1210,12 @@ void setup()
lcd_show_fullscreen_message_and_wait_P(MSG_FOLLOW_CALIBRATION_FLOW);
}
for (int i = 0; i<4; i++) EEPROM_read_B(EEPROM_BOWDEN_LENGTH + i * 2, &bowden_length[i]);
//If eeprom version for storing parameters to eeprom using M500 changed, default settings are used. Inform user in this case
if (!previous_settings_retrieved) {
lcd_show_fullscreen_message_and_wait_P(MSG_DEFAULT_SETTINGS_LOADED);
}
lcd_update_enable(true);
// Store the currently running firmware into an eeprom,
@ -1380,6 +1386,7 @@ void get_command()
continue;
if(serial_char == '\n' ||
serial_char == '\r' ||
(serial_char == ':' && comment_mode == false) ||
serial_count >= (MAX_CMD_SIZE - 1) )
{
if(!serial_count) { //if empty line
@ -1388,8 +1395,7 @@ void get_command()
}
cmdbuffer[bufindw+serial_count+1] = 0; //terminate string
if(!comment_mode){
comment_mode = false; //for new command
if ((strchr_pointer = strstr(cmdbuffer+bufindw+1, "PRUSA")) == NULL && (strchr_pointer = strchr(cmdbuffer+bufindw+1, 'N')) != NULL) {
if ((strchr_pointer = strstr(cmdbuffer+bufindw+1, "PRUSA")) == NULL && (strchr_pointer = strchr(cmdbuffer+bufindw+1, 'N')) != NULL) {
if ((strchr_pointer = strchr(cmdbuffer+bufindw+1, 'N')) != NULL)
{
// Line number met. When sending a G-code over a serial line, each line may be stamped with its index,
@ -3490,7 +3496,6 @@ void process_commands()
starttime=millis();
break;
case 25: //M25 - Pause SD print
save_print_to_eeprom();
card.pauseSDPrint();
break;
case 26: //M26 - Set SD index
@ -4378,13 +4383,13 @@ Sigma_Exit:
}
}
}
break;
case 110: // M110 - reset line pos
if (code_seen('N'))
gcode_LastN = code_value_long();
else
gcode_LastN = 0;
break;
case 110: // M110 - reset line pos
if (code_seen('N'))
gcode_LastN = code_value_long();
else
gcode_LastN = 0;
break;
case 115: // M115
if (code_seen('V')) {
// Report the Prusa version number.
@ -4999,10 +5004,6 @@ case 404: //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp
}
break;
#endif
case 500: // M500 Store settings in EEPROM
{
@ -6659,41 +6660,3 @@ void serialecho_temperatures() {
SERIAL_PROTOCOL_F(degBed(), 1);
SERIAL_PROTOCOLLN("");
}
void save_print_to_eeprom() {
eeprom_update_dword((uint32_t*)(EEPROM_FILE_POSITION), card.get_sdpos());
}
void restore_print_from_eeprom() {
char cmd[30];
char* c;
char filename[13];
char str[5] = ".gco";
for (int i = 0; i < 8; i++) {
filename[i] = eeprom_read_byte((uint8_t*)EEPROM_FILENAME + i);
}
filename[8] = '\0';
MYSERIAL.print(filename);
strcat(filename, str);
sprintf_P(cmd, PSTR("M23 %s"), filename);
for (c = &cmd[4]; *c; c++)
*c = tolower(*c);
enquecommand(cmd);
uint32_t position = eeprom_read_dword((uint32_t*)(EEPROM_FILE_POSITION));
SERIAL_ECHOPGM("Position read from eeprom:");
MYSERIAL.println(position);
card.setIndex(position);
enquecommand_P(PSTR("M24"));
sprintf_P(cmd, PSTR("M26 S%d"), position);
enquecommand(cmd);
}
void position_menu() {
SERIAL_ECHOPGM("Percent done:");
MYSERIAL.println(card.percentDone());
SERIAL_ECHOPGM("sdpos:");
MYSERIAL.println(card.get_sdpos());
}

View File

@ -47,7 +47,6 @@ public:
FORCE_INLINE void setIndex(long index) {sdpos = index;file.seekSet(index);};
FORCE_INLINE uint8_t percentDone(){if(!isFileOpen()) return 0; if(filesize) return sdpos/((filesize+99)/100); else return 0;};
FORCE_INLINE char* getWorkDirName(){workDir.getFilename(filename);return filename;};
FORCE_INLINE uint32_t get_sdpos() { if (!isFileOpen()) return 0; else return(sdpos); };
bool ToshibaFlashAir_isEnabled() const { return card.getFlashAirCompatible(); }
void ToshibaFlashAir_enable(bool enable) { card.setFlashAirCompatible(enable); }

View File

@ -856,7 +856,7 @@ const char MSG_DATE_CZ[] PROGMEM = "Datum:";
const char MSG_DATE_IT[] PROGMEM = "Data";
const char MSG_DATE_ES[] PROGMEM = "Fecha:";
const char MSG_DATE_PL[] PROGMEM = "Data:";
const char MSG_DATE_DE[] PROGMEM = "Datum:";
const char MSG_DATE_DE[] PROGMEM = "Datum";
const char MSG_DATE_NL[] PROGMEM = "Datum:";
const char * const MSG_DATE_LANG_TABLE[LANG_NUM] PROGMEM = {
MSG_DATE_EN,
@ -868,6 +868,11 @@ const char * const MSG_DATE_LANG_TABLE[LANG_NUM] PROGMEM = {
MSG_DATE_NL
};
const char MSG_DEFAULT_SETTINGS_LOADED_EN[] PROGMEM = "Default settings loaded";
const char * const MSG_DEFAULT_SETTINGS_LOADED_LANG_TABLE[1] PROGMEM = {
MSG_DEFAULT_SETTINGS_LOADED_EN
};
const char MSG_DISABLE_STEPPERS_EN[] PROGMEM = "Disable steppers";
const char MSG_DISABLE_STEPPERS_CZ[] PROGMEM = "Vypnout motory";
const char MSG_DISABLE_STEPPERS_IT[] PROGMEM = "Disabilit motori";
@ -1813,7 +1818,7 @@ const char MSG_MEASURED_SKEW_CZ[] PROGMEM = "Merene zkoseni:";
const char MSG_MEASURED_SKEW_IT[] PROGMEM = "Incl. misurata:";
const char MSG_MEASURED_SKEW_ES[] PROGMEM = "Inclin. medida:";
const char MSG_MEASURED_SKEW_PL[] PROGMEM = "Zmier. sciecie:";
const char MSG_MEASURED_SKEW_DE[] PROGMEM = "Symmetrie:";
const char MSG_MEASURED_SKEW_DE[] PROGMEM = "Schraeglauf:";
const char MSG_MEASURED_SKEW_NL[] PROGMEM = "Symmetrie:";
const char * const MSG_MEASURED_SKEW_LANG_TABLE[LANG_NUM] PROGMEM = {
MSG_MEASURED_SKEW_EN,
@ -3229,7 +3234,7 @@ const char MSG_SEVERE_SKEW_CZ[] PROGMEM = "Tezke zkoseni:";
const char MSG_SEVERE_SKEW_IT[] PROGMEM = "Inc. rilevante:";
const char MSG_SEVERE_SKEW_ES[] PROGMEM = "Inclin. severa:";
const char MSG_SEVERE_SKEW_PL[] PROGMEM = "Ostre sciecie:";
const char MSG_SEVERE_SKEW_DE[] PROGMEM = "Schwere Asym.:";
const char MSG_SEVERE_SKEW_DE[] PROGMEM = "Schwerer Schr.:";
const char MSG_SEVERE_SKEW_NL[] PROGMEM = "Hevige Asym.:";
const char * const MSG_SEVERE_SKEW_LANG_TABLE[LANG_NUM] PROGMEM = {
MSG_SEVERE_SKEW_EN,
@ -3295,7 +3300,7 @@ const char MSG_SLIGHT_SKEW_CZ[] PROGMEM = "Lehke zkoseni:";
const char MSG_SLIGHT_SKEW_IT[] PROGMEM = "Incl. leggera:";
const char MSG_SLIGHT_SKEW_ES[] PROGMEM = "Inclin. ligera:";
const char MSG_SLIGHT_SKEW_PL[] PROGMEM = "Lekkie sciecie:";
const char MSG_SLIGHT_SKEW_DE[] PROGMEM = "Geringe Asym.:";
const char MSG_SLIGHT_SKEW_DE[] PROGMEM = "Leichter Schr.:";
const char MSG_SLIGHT_SKEW_NL[] PROGMEM = "Geringe Asym.:";
const char * const MSG_SLIGHT_SKEW_LANG_TABLE[LANG_NUM] PROGMEM = {
MSG_SLIGHT_SKEW_EN,
@ -3795,7 +3800,7 @@ const char MSG_USED_CZ[] PROGMEM = "Pouzite behem tisku";
const char MSG_USED_IT[] PROGMEM = "Usati nella stampa";
const char MSG_USED_ES[] PROGMEM = "Usado en impresion";
const char MSG_USED_PL[] PROGMEM = "Uzyte przy druku";
const char MSG_USED_DE[] PROGMEM = "Benutzt beim Druck";
const char MSG_USED_DE[] PROGMEM = "Beim Druck benutzte";
const char MSG_USED_NL[] PROGMEM = "Gebruikt bij print";
const char * const MSG_USED_LANG_TABLE[LANG_NUM] PROGMEM = {
MSG_USED_EN,
@ -3930,7 +3935,7 @@ const char MSG_Y_DISTANCE_FROM_MIN_CZ[] PROGMEM = "Y vzdalenost od min:";
const char MSG_Y_DISTANCE_FROM_MIN_IT[] PROGMEM = "Distanza Y da min:";
const char MSG_Y_DISTANCE_FROM_MIN_ES[] PROGMEM = "Dist. Y desde min:";
const char MSG_Y_DISTANCE_FROM_MIN_PL[] PROGMEM = "Odleglosc Y od min.:";
const char MSG_Y_DISTANCE_FROM_MIN_DE[] PROGMEM = "Y Entfernung von min";
const char MSG_Y_DISTANCE_FROM_MIN_DE[] PROGMEM = "Y Entfernung vom min";
const char MSG_Y_DISTANCE_FROM_MIN_NL[] PROGMEM = "Y afstand van min";
const char * const MSG_Y_DISTANCE_FROM_MIN_LANG_TABLE[LANG_NUM] PROGMEM = {
MSG_Y_DISTANCE_FROM_MIN_EN,

View File

@ -151,6 +151,8 @@ extern const char* const MSG_CURRENT_LANG_TABLE[LANG_NUM];
#define MSG_CURRENT LANG_TABLE_SELECT(MSG_CURRENT_LANG_TABLE)
extern const char* const MSG_DATE_LANG_TABLE[LANG_NUM];
#define MSG_DATE LANG_TABLE_SELECT(MSG_DATE_LANG_TABLE)
extern const char* const MSG_DEFAULT_SETTINGS_LOADED_LANG_TABLE[1];
#define MSG_DEFAULT_SETTINGS_LOADED LANG_TABLE_SELECT_EXPLICIT(MSG_DEFAULT_SETTINGS_LOADED_LANG_TABLE, 0)
extern const char* const MSG_DISABLE_STEPPERS_LANG_TABLE[LANG_NUM];
#define MSG_DISABLE_STEPPERS LANG_TABLE_SELECT(MSG_DISABLE_STEPPERS_LANG_TABLE)
extern const char* const MSG_DWELL_LANG_TABLE[LANG_NUM];

View File

@ -210,6 +210,7 @@
#define(length=20, lines=8) MSG_MOVE_CARRIAGE_TO_THE_TOP "Kalibrieren von XYZ. Drehen Sie den Knopf, bis beide Z-Schlitten obere Anschaege erreichen. Klicken wenn beide ganz oben sind."
#define(length=20, lines=8) MSG_MOVE_CARRIAGE_TO_THE_TOP_Z "Kalibrieren von Z. Drehen Sie den Knopf, bis beide Z-Schlitten obere Anschaege erreichen. Klicken wenn beide ganz oben sind."
<<<<<<< HEAD
#define(length=20, lines=8) MSG_CONFIRM_NOZZLE_CLEAN "Bitte reinigen Sie die Duese zur Kalibrierung. Klicken wenn sauber."
#define(length=20, lines=8) MSG_CONFIRM_CARRIAGE_AT_THE_TOP "Sind beide Z Schlitten ganz oben?"
@ -324,4 +325,35 @@
#define MSG_RIGHT "Rechts:"
#define MSG_MEASURED_SKEW "Symmetrie:"
#define MSG_SLIGHT_SKEW "Geringe Asym.:"
#define MSG_SEVERE_SKEW "Schwere Asym.:"
#define MSG_SEVERE_SKEW "Schwere Asym.:"
=======
#define MSG_LOAD_ALL "Alle laden"
#define MSG_LOAD_FILAMENT_1 "Filament 1 laden"
#define MSG_LOAD_FILAMENT_2 "Filament 2 laden"
#define MSG_LOAD_FILAMENT_3 "Filament 3 laden"
#define MSG_LOAD_FILAMENT_4 "Filament 4 laden"
#define MSG_UNLOAD_FILAMENT_1 "Filam. 1 entladen"
#define MSG_UNLOAD_FILAMENT_2 "Filam. 2 entladen"
#define MSG_UNLOAD_FILAMENT_3 "Filam. 3 entladen"
#define MSG_UNLOAD_FILAMENT_4 "Filam. 4 entladen"
#define MSG_UNLOAD_ALL "Alles entladen"
#define MSG_PREPARE_FILAMENT "Filam. bereithalten"
#define MSG_ALL "Alle"
#define MSG_USED "Beim Druck benutzte"
#define MSG_CURRENT "Aktuelles"
#define MSG_CHOOSE_EXTRUDER "Waehlen Sie Extruder"
#define MSG_EXTRUDER "Extruder"
#define MSG_EXTRUDER_1 "Extruder 1"
#define MSG_EXTRUDER_2 "Extruder 2"
#define MSG_EXTRUDER_3 "Extruder 3"
#define MSG_EXTRUDER_4 "Extruder 4"
#define MSG_DATE "Datum"
#define MSG_XYZ_DETAILS "XYZ Kal. Details"
#define MSG_Y_DISTANCE_FROM_MIN "Y Entfernung vom min"
#define MSG_LEFT "Links:"
#define MSG_CENTER "Mitte:"
#define MSG_RIGHT "Rechts:"
#define MSG_MEASURED_SKEW "Schraeglauf:"
#define MSG_SLIGHT_SKEW "Leichter Schr.:"
#define MSG_SEVERE_SKEW "Schwerer Schr.:"
>>>>>>> refs/remotes/prusa3d/MK2

View File

@ -273,15 +273,9 @@
#define MSG_MESH_BED_LEVELING "Mesh Bed Leveling"
#define MSG_MENU_CALIBRATION "Calibration"
<<<<<<< HEAD
#define(length=20) MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF "SD card [normal]"
#define(length=20) MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON "SD card [FlshAir]"
#define(length=20) MSG_PRINTER_DISCONNECTED "Printer disconnected"
=======
#define(length=19, lines=1) MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF "SD card [normal]"
#define(length=19, lines=1) MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON "SD card [FlshAir]"
#define(length=20, lines=1) MSG_PRINTER_DISCONNECTED "Printer disconnected"
>>>>>>> refs/remotes/prusa3d/MK2
#define(length=20, lines=1) MSG_FINISHING_MOVEMENTS "Finishing movements"
#define(length=20, lines=1) MSG_PRINT_PAUSED "Print paused"
#define(length=20, lines=1) MSG_RESUMING_PRINT "Resuming print"
@ -320,3 +314,4 @@
#define(length=15, lines=1) MSG_MEASURED_SKEW "Measured skew:"
#define(length=15, lines=1) MSG_SLIGHT_SKEW "Slight skew:"
#define(length=15, lines=1) MSG_SEVERE_SKEW "Severe skew:"
#define(length=20, lines=4) MSG_DEFAULT_SETTINGS_LOADED "Default settings loaded"

View File

@ -956,8 +956,6 @@ static void lcd_support_menu()
START_MENU();
MENU_ITEM(back, MSG_MAIN, lcd_main_menu);
MENU_ITEM(submenu, PSTR("restore"), restore_print_from_eeprom);
MENU_ITEM(submenu, PSTR("position"), position_menu);
// Ideally this block would be optimized out by the compiler.
const uint8_t fw_string_len = strlen_P(FW_VERSION_STR_P());
@ -2107,7 +2105,7 @@ void lcd_diag_show_end_stops()
void prusa_statistics(int _message) {
void prusa_statistics(int _message, uint8_t _fil_nr) {
switch (_message)
@ -2176,14 +2174,18 @@ void prusa_statistics(int _message) {
break;
case 4: // print succesfull
SERIAL_ECHOLN("{[RES:1]");
SERIAL_ECHO("{[RES:1][FIL:");
MYSERIAL.print(int(_fil_nr));
SERIAL_ECHO("]");
prusa_stat_printerstatus(status_number);
prusa_stat_farm_number();
SERIAL_ECHOLN("}");
farm_timer = 2;
break;
case 5: // print not succesfull
SERIAL_ECHOLN("{[RES:0]");
SERIAL_ECHO("{[RES:0][FIL:");
MYSERIAL.print(int(_fil_nr));
SERIAL_ECHO("]");
prusa_stat_printerstatus(status_number);
prusa_stat_farm_number();
SERIAL_ECHOLN("}");
@ -3664,8 +3666,91 @@ static void lcd_farm_no()
}
unsigned char lcd_choose_color() {
//function returns index of currently chosen item
//following part can be modified from 2 to 255 items:
//-----------------------------------------------------
unsigned char items_no = 2;
const char *item[items_no];
item[0] = "Black";
item[1] = "Orange";
//-----------------------------------------------------
unsigned char active_rows;
static int first = 0;
int enc_dif = 0;
unsigned char cursor_pos = 1;
enc_dif = encoderDiff;
lcd_implementation_clear();
lcd.setCursor(0, 1);
lcd.print(">");
active_rows = items_no < 3 ? items_no : 3;
while (1) {
lcd_print_at_PGM(0, 0, PSTR("Choose color:"));
for (int i = 0; i < active_rows; i++) {
lcd.setCursor(1, i+1);
lcd.print(item[first + i]);
}
manage_heater();
manage_inactivity(true);
if (abs((enc_dif - encoderDiff)) > 4) {
if ((abs(enc_dif - encoderDiff)) > 1) {
if (enc_dif > encoderDiff) {
cursor_pos--;
}
if (enc_dif < encoderDiff) {
cursor_pos++;
}
if (cursor_pos > active_rows) {
cursor_pos = active_rows;
if (first < items_no - active_rows) {
first++;
lcd_implementation_clear();
}
}
if (cursor_pos < 1) {
cursor_pos = 1;
if (first > 0) {
first--;
lcd_implementation_clear();
}
}
lcd.setCursor(0, 1);
lcd.print(" ");
lcd.setCursor(0, 2);
lcd.print(" ");
lcd.setCursor(0, 3);
lcd.print(" ");
lcd.setCursor(0, cursor_pos);
lcd.print(">");
enc_dif = encoderDiff;
delay(100);
}
}
if (lcd_clicked()) {
while (lcd_clicked());
delay(10);
while (lcd_clicked());
return(cursor_pos + first - 1);
}
}
}
void lcd_confirm_print()
{
uint8_t filament_type;
int enc_dif = 0;
int cursor_pos = 1;
int _ret = 0;
@ -3714,14 +3799,14 @@ void lcd_confirm_print()
if (cursor_pos == 1)
{
_ret = 1;
prusa_statistics(20);
prusa_statistics(4);
filament_type = lcd_choose_color();
prusa_statistics(4, filament_type);
}
if (cursor_pos == 2)
{
_ret = 2;
prusa_statistics(20);
prusa_statistics(5);
filament_type = lcd_choose_color();
prusa_statistics(5, filament_type);
}
}
@ -4051,7 +4136,7 @@ void lcd_sdcard_stop()
lcd_return_to_status();
lcd_ignore_click(true);
lcd_commands_type = LCD_COMMAND_STOP_PRINT;
// Turn off the print fan
@ -4902,9 +4987,7 @@ static void menu_action_sdfile(const char* filename, char* longFilename)
for (c = &cmd[4]; *c; c++)
*c = tolower(*c);
enquecommand(cmd);
for (int i = 0; i < 8; i++) {
eeprom_write_byte((uint8_t*)EEPROM_FILENAME+i, filename[i]);
}
enquecommand_P(PSTR("M24"));
lcd_return_to_status();
}

View File

@ -26,8 +26,9 @@
void lcd_loading_color();
void lcd_force_language_selection();
void lcd_sdcard_stop();
void prusa_statistics(int _message);
void prusa_statistics(int _message, uint8_t _col_nr = 0);
void lcd_confirm_print();
unsigned char lcd_choose_color();
void lcd_mylang();
bool lcd_detected(void);

View File

@ -742,7 +742,6 @@ static void lcd_implementation_status_screen()
if (IS_SD_PRINTING)
{
lcd.print(itostr3(card.percentDone()));
card.get_sdpos();
lcd.print('%');
}
else
@ -1183,33 +1182,34 @@ static void lcd_implementation_drawmenu_sdfile_selected(uint8_t row, const char*
int i = 1;
int j = 0;
int inter = 0;
char* longFilenameTMP = longFilename;
while( ((c = *longFilenameTMP) != '\0') && (inter == 0) )
while((c = *longFilenameTMP) != '\0')
{
lcd.setCursor(i, row);
lcd.print(c);
i++;
longFilenameTMP++;
if(i==LCD_WIDTH){
if(i==LCD_WIDTH) {
i=1;
j++;
longFilenameTMP = longFilename;
longFilenameTMP = longFilenameTMP+j;
longFilenameTMP = longFilename + j;
n = LCD_WIDTH - 1;
for(int g = 0; ((g<300)&&(inter == 0)) ;g++){
for(int g = 0; g<300 ;g++){
if(LCD_CLICKED || ( enc_dif != encoderDiff )){
// inter = 1;
longFilenameTMP = longFilename;
*(longFilenameTMP + LCD_WIDTH - 2) = '\0';
int i = 1;
int j = 0;
break;
}else{
delay(1);
if (j == 1) delay(3); //wait around 1.2 s to start scrolling text
delay(1); //then scroll with redrawing every 300 ms
}
}
}
}
if(c!='\0'){
lcd.setCursor(i, row);
@ -1218,7 +1218,7 @@ static void lcd_implementation_drawmenu_sdfile_selected(uint8_t row, const char*
}
n=n-i+1;
while(n--)
lcd.print(' ');
lcd.print(' ');
}
static void lcd_implementation_drawmenu_sdfile(uint8_t row, const char* pstr, const char* filename, char* longFilename)
{

View File

@ -416,4 +416,5 @@ THERMISTORS SETTINGS
#else
#define DEFAULT_RETRACTION 1 //used for PINDA temp calibration and pause print
#endif
#endif //__CONFIGURATION_PRUSA_H