From 2f7ef212b07f559cdc85401d24d83d75a6f9ec77 Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Fri, 8 Sep 2017 13:25:13 +0200 Subject: [PATCH 01/13] farm mode: confirm print has lower sensitivity, changed items order in color selection menu --- Firmware/ultralcd.cpp | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 5e5ffc2b2..74187b14f 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -3649,8 +3649,8 @@ unsigned char lcd_choose_color() { //----------------------------------------------------- unsigned char items_no = 2; const char *item[items_no]; - item[0] = "Black"; - item[1] = "Orange"; + item[0] = "Orange"; + item[1] = "Black"; //----------------------------------------------------- unsigned char active_rows; static int first = 0; @@ -3673,9 +3673,8 @@ unsigned char lcd_choose_color() { manage_heater(); manage_inactivity(true); - if (abs((enc_dif - encoderDiff)) > 4) { - - if ((abs(enc_dif - encoderDiff)) > 1) { + if (abs((enc_dif - encoderDiff)) > 12) { + if (enc_dif > encoderDiff) { cursor_pos--; } @@ -3683,7 +3682,7 @@ unsigned char lcd_choose_color() { if (enc_dif < encoderDiff) { cursor_pos++; } - + if (cursor_pos > active_rows) { cursor_pos = active_rows; if (first < items_no - active_rows) { @@ -3709,7 +3708,6 @@ unsigned char lcd_choose_color() { lcd.print(">"); enc_dif = encoderDiff; delay(100); - } } @@ -3717,7 +3715,11 @@ unsigned char lcd_choose_color() { while (lcd_clicked()); delay(10); while (lcd_clicked()); - return(cursor_pos + first - 1); + switch(cursor_pos + first - 1) { + case 0: return 1; break; + case 1: return 0; break; + default: return 99; break; + } } } @@ -3732,7 +3734,7 @@ void lcd_confirm_print() int _ret = 0; int _t = 0; - + enc_dif = encoderDiff; lcd_implementation_clear(); lcd.setCursor(0, 0); @@ -3741,7 +3743,7 @@ void lcd_confirm_print() do { - if (abs((enc_dif - encoderDiff)) > 2) { + if (abs(enc_dif - encoderDiff) > 12) { if (enc_dif > encoderDiff) { cursor_pos--; } @@ -3749,6 +3751,7 @@ void lcd_confirm_print() if (enc_dif < encoderDiff) { cursor_pos++; } + enc_dif = encoderDiff; } if (cursor_pos > 2) { cursor_pos = 2; } @@ -3793,7 +3796,7 @@ void lcd_confirm_print() NcTime = millis(); } } - + manage_heater(); manage_inactivity(); From 2322830c8998ddbe6bd6bc3ba3796c8012830288 Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Fri, 8 Sep 2017 13:26:33 +0200 Subject: [PATCH 02/13] changed version --- Firmware/Configuration.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Firmware/Configuration.h b/Firmware/Configuration.h index cac5271b4..6f14080dc 100644 --- a/Firmware/Configuration.h +++ b/Firmware/Configuration.h @@ -5,7 +5,7 @@ #include "Configuration_prusa.h" // Firmware version -#define FW_version "3.0.12-5" +#define FW_version "3.0.12-6" #define FW_PRUSA3D_MAGIC "PRUSA3DFW" #define FW_PRUSA3D_MAGIC_LEN 10 From 54083e28ac1a3411e21409a14045c57749051b2b Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Fri, 8 Sep 2017 14:10:28 +0200 Subject: [PATCH 03/13] farm mode: sending status every 10 seconds, printer can response on serial communication when in confirm mode --- Firmware/ultralcd.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 74187b14f..9bfb24ce8 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -105,7 +105,7 @@ int lcd_commands_step=0; bool isPrintPaused = false; uint8_t farm_mode = 0; int farm_no = 0; -int farm_timer = 30; +int farm_timer = 8; int farm_status = 0; unsigned long allert_timer = millis(); bool printer_connected = true; @@ -408,15 +408,15 @@ static void lcd_status_screen() farm_timer--; if (farm_timer < 1) { - farm_timer = 180; + farm_timer = 10; prusa_statistics(0); } switch (farm_timer) { - case 45: + case 8: prusa_statistics(21); break; - case 10: + case 5: if (IS_SD_PRINTING) { prusa_statistics(20); @@ -2166,7 +2166,7 @@ void prusa_statistics(int _message, uint8_t _fil_nr) { prusa_stat_printerstatus(status_number); prusa_stat_farm_number(); SERIAL_ECHOLN("}"); - farm_timer = 5; + farm_timer = 4; break; case 21: // temperatures SERIAL_ECHO("{"); @@ -3672,7 +3672,7 @@ unsigned char lcd_choose_color() { manage_heater(); manage_inactivity(true); - + proc_commands(); if (abs((enc_dif - encoderDiff)) > 12) { if (enc_dif > encoderDiff) { @@ -3742,7 +3742,6 @@ void lcd_confirm_print() do { - if (abs(enc_dif - encoderDiff) > 12) { if (enc_dif > encoderDiff) { cursor_pos--; @@ -3799,6 +3798,7 @@ void lcd_confirm_print() manage_heater(); manage_inactivity(); + proc_commands(); } while (_ret == 0); From 70544f1cea558c713641d3469c58bb330e0254aa Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Fri, 8 Sep 2017 14:47:51 +0200 Subject: [PATCH 04/13] min temp error message on serial updated --- Firmware/ultralcd.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 9bfb24ce8..a663a5fe4 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -2193,7 +2193,7 @@ void prusa_statistics(int _message, uint8_t _fil_nr) { SERIAL_ECHOLN("}"); break; case 92: // Error - Min temp - SERIAL_ECHOLN("{[ERR:3]"); + SERIAL_ECHO("{[ERR:3]"); prusa_stat_farm_number(); SERIAL_ECHOLN("}"); break; From 61592f9bfa21cb6dae53fcecf7a6e54adb9a80da Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Mon, 11 Sep 2017 02:55:06 +0200 Subject: [PATCH 05/13] initial version --- Firmware/Marlin.h | 4 +++ Firmware/Marlin_main.cpp | 36 ++++++++++++++++++++++++++ Firmware/SdBaseFile.cpp | 2 ++ Firmware/cardreader.cpp | 8 +++++- Firmware/cardreader.h | 5 +++- Firmware/language_all.cpp | 5 ++++ Firmware/language_all.h | 2 ++ Firmware/language_en.h | 3 ++- Firmware/ultralcd.cpp | 54 +++++++++++++++++++++++++++++++++++---- 9 files changed, 111 insertions(+), 8 deletions(-) diff --git a/Firmware/Marlin.h b/Firmware/Marlin.h index 61d7c2c75..bfb940ef4 100644 --- a/Firmware/Marlin.h +++ b/Firmware/Marlin.h @@ -356,3 +356,7 @@ void temp_compensation_start(); void wait_for_heater(long codenum); void serialecho_temperatures(); void proc_commands(); +bool check_commands(); +bool search_end_command(); +void empty_buffer(); +void show_buffer(); \ No newline at end of file diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index b1f2a5f55..79d6c3b73 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -1405,8 +1405,34 @@ void proc_commands() { } } +bool check_commands() { + bool ret = false; + + if (buflen) + { + //SERIAL_ECHOLNPGM("search_end "); + ret = search_end_command(); + if (!cmdbuffer_front_already_processed) + cmdqueue_pop_front(); + cmdbuffer_front_already_processed = false; + } + return ret; +} + +void show_buffer() { + SERIAL_ECHOPGM("bufindr:"); + MYSERIAL.println(bufindr); + SERIAL_ECHOPGM("bufindw:"); + MYSERIAL.println(bufindw); +} + +void empty_buffer() { + bufindr = bufindw; +} + void get_command() { + //show_buffer(); // Test and reserve space for the new command string. if (!cmdqueue_could_enqueue_back(MAX_CMD_SIZE - 1)) return; @@ -2076,6 +2102,16 @@ void ramming() { } } */ + +bool search_end_command() +{ + //SERIAL_ECHOLNPGM("E"); + bool return_value = false; + if (code_seen("M84")) return_value = true; + return return_value; + +} + void process_commands() { #ifdef FILAMENT_RUNOUT_SUPPORT diff --git a/Firmware/SdBaseFile.cpp b/Firmware/SdBaseFile.cpp index be04ab1a2..d8eca5fc8 100644 --- a/Firmware/SdBaseFile.cpp +++ b/Firmware/SdBaseFile.cpp @@ -277,6 +277,8 @@ int16_t SdBaseFile::fgets(char* str, int16_t num, char* delim) { * \return The value one, true, is returned for success and * the value zero, false, is returned for failure. */ + + bool SdBaseFile::getFilename(char* name) { if (!isOpen()) return false; diff --git a/Firmware/cardreader.cpp b/Firmware/cardreader.cpp index db20b6a86..b37b42233 100644 --- a/Firmware/cardreader.cpp +++ b/Firmware/cardreader.cpp @@ -162,6 +162,7 @@ void CardReader::lsDive(const char *prepend, SdFile parent, const char * const m } // while readDir } + void CardReader::ls() { lsAction=LS_SerialPrint; @@ -500,6 +501,11 @@ void CardReader::removeFile(char* name) } +void CardReader::getFileSize() +{ + public_fileSize = filesize; +} + void CardReader::getStatus() { if(sdprinting){ @@ -964,7 +970,7 @@ void CardReader::printingHasFinished() if(SD_FINISHED_STEPPERRELEASE) { //finishAndDisableSteppers(); - enquecommand_P(PSTR(SD_FINISHED_RELEASECOMMAND)); + //enquecommand_P(PSTR(SD_FINISHED_RELEASECOMMAND)); } autotempShutdown(); #ifdef SDCARD_SORT_ALPHA diff --git a/Firmware/cardreader.h b/Firmware/cardreader.h index 3ef9ff297..ccc8df3f6 100644 --- a/Firmware/cardreader.h +++ b/Firmware/cardreader.h @@ -27,6 +27,7 @@ public: void release(); void startFileprint(); void pauseSDPrint(); + void getFileSize(); void getStatus(); void printingHasFinished(); @@ -69,9 +70,11 @@ public: bool cardOK ; char filename[13]; uint16_t creationTime, creationDate; + uint32_t public_fileSize; char longFilename[LONG_FILENAME_LENGTH]; bool filenameIsDir; int lastnr; //last number of the autostart; + uint32_t sdpos; private: SdFile root,*curDir,workDir,workDirParents[MAX_DIR_DEPTH]; uint16_t workDirDepth; @@ -133,7 +136,7 @@ private: uint32_t filesize; //int16_t n; unsigned long autostart_atmillis; - uint32_t sdpos ; + //uint32_t sdpos ; bool autostart_stilltocheck; //the sd start is delayed, because otherwise the serial cannot answer fast enought to make contact with the hostsoftware. diff --git a/Firmware/language_all.cpp b/Firmware/language_all.cpp index 7035a2d8f..66f618db2 100644 --- a/Firmware/language_all.cpp +++ b/Firmware/language_all.cpp @@ -1092,6 +1092,11 @@ const char * const MSG_FILAMENT_LOADING_T3_LANG_TABLE[LANG_NUM] PROGMEM = { MSG_FILAMENT_LOADING_T3_DE }; +const char MSG_FILE_INCOMPLETE_EN[] PROGMEM = "File incomplete. Continue anyway?"; +const char * const MSG_FILE_INCOMPLETE_LANG_TABLE[1] PROGMEM = { + MSG_FILE_INCOMPLETE_EN +}; + const char MSG_FILE_PRINTED_EN[] PROGMEM = "Done printing file"; const char * const MSG_FILE_PRINTED_LANG_TABLE[1] PROGMEM = { MSG_FILE_PRINTED_EN diff --git a/Firmware/language_all.h b/Firmware/language_all.h index 209c4954a..e4d512a7a 100644 --- a/Firmware/language_all.h +++ b/Firmware/language_all.h @@ -218,6 +218,8 @@ extern const char* const MSG_FILAMENT_LOADING_T2_LANG_TABLE[LANG_NUM]; #define MSG_FILAMENT_LOADING_T2 LANG_TABLE_SELECT(MSG_FILAMENT_LOADING_T2_LANG_TABLE) extern const char* const MSG_FILAMENT_LOADING_T3_LANG_TABLE[LANG_NUM]; #define MSG_FILAMENT_LOADING_T3 LANG_TABLE_SELECT(MSG_FILAMENT_LOADING_T3_LANG_TABLE) +extern const char* const MSG_FILE_INCOMPLETE_LANG_TABLE[1]; +#define MSG_FILE_INCOMPLETE LANG_TABLE_SELECT_EXPLICIT(MSG_FILE_INCOMPLETE_LANG_TABLE, 0) extern const char* const MSG_FILE_PRINTED_LANG_TABLE[1]; #define MSG_FILE_PRINTED LANG_TABLE_SELECT_EXPLICIT(MSG_FILE_PRINTED_LANG_TABLE, 0) extern const char* const MSG_FILE_SAVED_LANG_TABLE[1]; diff --git a/Firmware/language_en.h b/Firmware/language_en.h index 4e5e7b195..2251753e6 100644 --- a/Firmware/language_en.h +++ b/Firmware/language_en.h @@ -315,4 +315,5 @@ #define(length=17, lines=1) MSG_SORT_TIME "Sort: [Time]" #define(length=17, lines=1) MSG_SORT_ALPHA "Sort: [Alphabet]" #define(length=17, lines=1) MSG_SORT_NONE "Sort: [None]" -#define(length=20, lines=1) MSG_SORTING "Sorting files" \ No newline at end of file +#define(length=20, lines=1) MSG_SORTING "Sorting files" +#define MSG_FILE_INCOMPLETE "File incomplete. Continue anyway?" \ No newline at end of file diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index e44dbe855..39e235cc0 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -4964,17 +4964,61 @@ static void menu_action_setlang(unsigned char lang) { static void menu_action_function(menuFunc_t data) { (*data)(); } + +/*check_file() { + +}*/ + +static bool check_file(const char* filename) { + bool result = false; + card.openFile(filename, true); + card.getFileSize(); + //SERIAL_ECHOPGM("Filesize my:"); + //MYSERIAL.println(card.public_fileSize); + card.setIndex((card.public_fileSize) - 10000); + //SERIAL_ECHOPGM("Position:"); + //MYSERIAL.println(card.sdpos); + + while (!card.eof() && !result) { + //show_buffer(); + +// SERIAL_ECHOPGM("Position prior:"); +// MYSERIAL.println(card.sdpos); + card.sdprinting = true; + get_command(); + //result = search_end_command(); + result = check_commands(); + + +/* SERIAL_ECHOPGM("Position after:"); + MYSERIAL.println(card.sdpos); + SERIAL_ECHOPGM("Command find:"); + MYSERIAL.println(int(result));*/ + } + //empty_buffer(); + return result; +} + static void menu_action_sdfile(const char* filename, char* longFilename) -{ +{ loading_flag = false; char cmd[30]; char* c; + bool result = true; sprintf_P(cmd, PSTR("M23 %s"), filename); for (c = &cmd[4]; *c; c++) - *c = tolower(*c); - enquecommand(cmd); - enquecommand_P(PSTR("M24")); - lcd_return_to_status(); + *c = tolower(*c); + if (!check_file(filename)) { + result = lcd_show_fullscreen_message_yes_no_and_wait_P(MSG_FILE_INCOMPLETE, false, false); + lcd_update_enable(true); + } + + if (!result) lcd_return_to_status(); + else { + enquecommand(cmd); + enquecommand_P(PSTR("M24")); + lcd_return_to_status(); + } } static void menu_action_sddirectory(const char* filename, char* longFilename) { From fe04b9f467fe62eecda79d63e426ec9230ad7fc1 Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Mon, 11 Sep 2017 14:42:23 +0200 Subject: [PATCH 06/13] cleanup --- Firmware/Marlin.h | 5 +---- Firmware/Marlin_main.cpp | 28 +++------------------------- Firmware/ultralcd.cpp | 24 +++--------------------- 3 files changed, 7 insertions(+), 50 deletions(-) diff --git a/Firmware/Marlin.h b/Firmware/Marlin.h index bfb940ef4..deda0421d 100644 --- a/Firmware/Marlin.h +++ b/Firmware/Marlin.h @@ -356,7 +356,4 @@ void temp_compensation_start(); void wait_for_heater(long codenum); void serialecho_temperatures(); void proc_commands(); -bool check_commands(); -bool search_end_command(); -void empty_buffer(); -void show_buffer(); \ No newline at end of file +bool check_commands(); \ No newline at end of file diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 79d6c3b73..229789f64 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -1406,33 +1406,20 @@ void proc_commands() { } bool check_commands() { - bool ret = false; + bool end_command_found = false; if (buflen) { - //SERIAL_ECHOLNPGM("search_end "); - ret = search_end_command(); + if ((code_seen("M84")) || (code_seen("M 84"))) end_command_found = true; if (!cmdbuffer_front_already_processed) cmdqueue_pop_front(); cmdbuffer_front_already_processed = false; } - return ret; -} - -void show_buffer() { - SERIAL_ECHOPGM("bufindr:"); - MYSERIAL.println(bufindr); - SERIAL_ECHOPGM("bufindw:"); - MYSERIAL.println(bufindw); -} - -void empty_buffer() { - bufindr = bufindw; + return end_command_found; } void get_command() { - //show_buffer(); // Test and reserve space for the new command string. if (!cmdqueue_could_enqueue_back(MAX_CMD_SIZE - 1)) return; @@ -2103,15 +2090,6 @@ void ramming() { } */ -bool search_end_command() -{ - //SERIAL_ECHOLNPGM("E"); - bool return_value = false; - if (code_seen("M84")) return_value = true; - return return_value; - -} - void process_commands() { #ifdef FILAMENT_RUNOUT_SUPPORT diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 39e235cc0..ecd1c587e 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -4965,37 +4965,19 @@ static void menu_action_function(menuFunc_t data) { (*data)(); } -/*check_file() { - -}*/ - static bool check_file(const char* filename) { bool result = false; card.openFile(filename, true); card.getFileSize(); - //SERIAL_ECHOPGM("Filesize my:"); - //MYSERIAL.println(card.public_fileSize); - card.setIndex((card.public_fileSize) - 10000); - //SERIAL_ECHOPGM("Position:"); - //MYSERIAL.println(card.sdpos); + if (card.public_fileSize > END_FILE_SECTION) { + card.setIndex((card.public_fileSize) - END_FILE_SECTION); + } while (!card.eof() && !result) { - //show_buffer(); - -// SERIAL_ECHOPGM("Position prior:"); -// MYSERIAL.println(card.sdpos); card.sdprinting = true; get_command(); - //result = search_end_command(); result = check_commands(); - - -/* SERIAL_ECHOPGM("Position after:"); - MYSERIAL.println(card.sdpos); - SERIAL_ECHOPGM("Command find:"); - MYSERIAL.println(int(result));*/ } - //empty_buffer(); return result; } From 7d7b617442ff6d6bf9a68c4a5300d646f3145de6 Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Mon, 11 Sep 2017 16:11:49 +0200 Subject: [PATCH 07/13] linear advance using allowed in config file, version changed --- Firmware/Configuration.h | 2 +- Firmware/Configuration_adv.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Firmware/Configuration.h b/Firmware/Configuration.h index 6f14080dc..8e248e563 100644 --- a/Firmware/Configuration.h +++ b/Firmware/Configuration.h @@ -5,7 +5,7 @@ #include "Configuration_prusa.h" // Firmware version -#define FW_version "3.0.12-6" +#define FW_version "3.0.12-7" #define FW_PRUSA3D_MAGIC "PRUSA3DFW" #define FW_PRUSA3D_MAGIC_LEN 10 diff --git a/Firmware/Configuration_adv.h b/Firmware/Configuration_adv.h index 455eb5c18..4f3a71c49 100644 --- a/Firmware/Configuration_adv.h +++ b/Firmware/Configuration_adv.h @@ -323,7 +323,7 @@ * K=0 means advance disabled. * See Marlin documentation for calibration instructions. */ -//#define LIN_ADVANCE +#define LIN_ADVANCE #ifdef LIN_ADVANCE #define LIN_ADVANCE_K 0 //Try around 45 for PLA, around 25 for ABS. From 26cd35a8cb56a07bb3ae95b0593ecb30f191a28b Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Mon, 11 Sep 2017 17:31:06 +0200 Subject: [PATCH 08/13] reverting few changes, --- Firmware/Marlin_main.cpp | 26 +++++++++++++------------- Firmware/cardreader.cpp | 2 +- Firmware/cardreader.h | 3 +-- 3 files changed, 15 insertions(+), 16 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 229789f64..4b2e30b08 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -1405,19 +1405,6 @@ void proc_commands() { } } -bool check_commands() { - bool end_command_found = false; - - if (buflen) - { - if ((code_seen("M84")) || (code_seen("M 84"))) end_command_found = true; - if (!cmdbuffer_front_already_processed) - cmdqueue_pop_front(); - cmdbuffer_front_already_processed = false; - } - return end_command_found; -} - void get_command() { // Test and reserve space for the new command string. @@ -1905,6 +1892,19 @@ static float probe_pt(float x, float y, float z_before) { } #endif // LIN_ADVANCE +bool check_commands() { + bool end_command_found = false; + + if (buflen) + { + if ((code_seen("M84")) || (code_seen("M 84"))) end_command_found = true; + if (!cmdbuffer_front_already_processed) + cmdqueue_pop_front(); + cmdbuffer_front_already_processed = false; + } + return end_command_found; +} + void homeaxis(int axis) { #define HOMEAXIS_DO(LETTER) \ ((LETTER##_MIN_PIN > -1 && LETTER##_HOME_DIR==-1) || (LETTER##_MAX_PIN > -1 && LETTER##_HOME_DIR==1)) diff --git a/Firmware/cardreader.cpp b/Firmware/cardreader.cpp index b37b42233..59116f919 100644 --- a/Firmware/cardreader.cpp +++ b/Firmware/cardreader.cpp @@ -970,7 +970,7 @@ void CardReader::printingHasFinished() if(SD_FINISHED_STEPPERRELEASE) { //finishAndDisableSteppers(); - //enquecommand_P(PSTR(SD_FINISHED_RELEASECOMMAND)); + enquecommand_P(PSTR(SD_FINISHED_RELEASECOMMAND)); } autotempShutdown(); #ifdef SDCARD_SORT_ALPHA diff --git a/Firmware/cardreader.h b/Firmware/cardreader.h index ccc8df3f6..ec6c00728 100644 --- a/Firmware/cardreader.h +++ b/Firmware/cardreader.h @@ -74,7 +74,6 @@ public: char longFilename[LONG_FILENAME_LENGTH]; bool filenameIsDir; int lastnr; //last number of the autostart; - uint32_t sdpos; private: SdFile root,*curDir,workDir,workDirParents[MAX_DIR_DEPTH]; uint16_t workDirDepth; @@ -136,7 +135,7 @@ private: uint32_t filesize; //int16_t n; unsigned long autostart_atmillis; - //uint32_t sdpos ; + uint32_t sdpos ; bool autostart_stilltocheck; //the sd start is delayed, because otherwise the serial cannot answer fast enought to make contact with the hostsoftware. From ff73fbc5627eb058bc1a667347d294c7852a1c4d Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Wed, 13 Sep 2017 18:38:46 +0200 Subject: [PATCH 09/13] code simplified --- Firmware/ultralcd.cpp | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index ecd1c587e..955e2d68c 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -4993,14 +4993,12 @@ static void menu_action_sdfile(const char* filename, char* longFilename) if (!check_file(filename)) { result = lcd_show_fullscreen_message_yes_no_and_wait_P(MSG_FILE_INCOMPLETE, false, false); lcd_update_enable(true); - } - - if (!result) lcd_return_to_status(); - else { + } + if (result) { enquecommand(cmd); - enquecommand_P(PSTR("M24")); - lcd_return_to_status(); + enquecommand_P(PSTR("M24")); } + lcd_return_to_status(); } static void menu_action_sddirectory(const char* filename, char* longFilename) { From 026e3ecaac7df98bdef466547027bfc0d4628444 Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Thu, 14 Sep 2017 14:21:16 +0200 Subject: [PATCH 10/13] getter function for filesize --- Firmware/cardreader.cpp | 4 ++-- Firmware/cardreader.h | 3 +-- Firmware/ultralcd.cpp | 7 ++++--- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Firmware/cardreader.cpp b/Firmware/cardreader.cpp index 59116f919..77c52a6b4 100644 --- a/Firmware/cardreader.cpp +++ b/Firmware/cardreader.cpp @@ -501,9 +501,9 @@ void CardReader::removeFile(char* name) } -void CardReader::getFileSize() +uint32_t CardReader::getFileSize() { - public_fileSize = filesize; + return filesize; } void CardReader::getStatus() diff --git a/Firmware/cardreader.h b/Firmware/cardreader.h index ec6c00728..dff3d263d 100644 --- a/Firmware/cardreader.h +++ b/Firmware/cardreader.h @@ -27,7 +27,7 @@ public: void release(); void startFileprint(); void pauseSDPrint(); - void getFileSize(); + uint32_t getFileSize(); void getStatus(); void printingHasFinished(); @@ -70,7 +70,6 @@ public: bool cardOK ; char filename[13]; uint16_t creationTime, creationDate; - uint32_t public_fileSize; char longFilename[LONG_FILENAME_LENGTH]; bool filenameIsDir; int lastnr; //last number of the autostart; diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 955e2d68c..c49dfe1fc 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -4967,10 +4967,11 @@ static void menu_action_function(menuFunc_t data) { static bool check_file(const char* filename) { bool result = false; + uint32_t filesize; card.openFile(filename, true); - card.getFileSize(); - if (card.public_fileSize > END_FILE_SECTION) { - card.setIndex((card.public_fileSize) - END_FILE_SECTION); + filesize = card.getFileSize(); + if (fileSize > END_FILE_SECTION) { + card.setIndex(filesize - END_FILE_SECTION); } while (!card.eof() && !result) { From 7cf8920c0a8803e24c5e99a82aee9621cb9e08ce Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Thu, 14 Sep 2017 14:41:51 +0200 Subject: [PATCH 11/13] typo fixed --- Firmware/ultralcd.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index c49dfe1fc..91b7bbb59 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -4970,7 +4970,7 @@ static bool check_file(const char* filename) { uint32_t filesize; card.openFile(filename, true); filesize = card.getFileSize(); - if (fileSize > END_FILE_SECTION) { + if (filesize > END_FILE_SECTION) { card.setIndex(filesize - END_FILE_SECTION); } From f9153d4417b2cb341f976f2f81bf8763a7cba963 Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Thu, 14 Sep 2017 15:27:01 +0200 Subject: [PATCH 12/13] dont enque M84 function at the end of print, changed to function; added defines to config files --- Firmware/cardreader.cpp | 4 ++-- Firmware/variants/1_75mm_MK1-RAMBo10a-E3Dv6full.h | 2 ++ Firmware/variants/1_75mm_MK1-RAMBo13a-E3Dv6full.h | 2 ++ .../variants/1_75mm_MK2-MultiMaterial-RAMBo10a-E3Dv6full.h | 2 ++ .../variants/1_75mm_MK2-MultiMaterial-RAMBo13a-E3Dv6full.h | 2 ++ Firmware/variants/1_75mm_MK2-RAMBo10a-E3Dv6full.h | 2 ++ Firmware/variants/1_75mm_MK2-RAMBo13a-E3Dv6full.h | 2 ++ 7 files changed, 14 insertions(+), 2 deletions(-) diff --git a/Firmware/cardreader.cpp b/Firmware/cardreader.cpp index 77c52a6b4..27100077c 100644 --- a/Firmware/cardreader.cpp +++ b/Firmware/cardreader.cpp @@ -969,8 +969,8 @@ void CardReader::printingHasFinished() sdprinting = false; if(SD_FINISHED_STEPPERRELEASE) { - //finishAndDisableSteppers(); - enquecommand_P(PSTR(SD_FINISHED_RELEASECOMMAND)); + finishAndDisableSteppers(); + //enquecommand_P(PSTR(SD_FINISHED_RELEASECOMMAND)); } autotempShutdown(); #ifdef SDCARD_SORT_ALPHA diff --git a/Firmware/variants/1_75mm_MK1-RAMBo10a-E3Dv6full.h b/Firmware/variants/1_75mm_MK1-RAMBo10a-E3Dv6full.h index ac0463370..27bece70c 100644 --- a/Firmware/variants/1_75mm_MK1-RAMBo10a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK1-RAMBo10a-E3Dv6full.h @@ -403,4 +403,6 @@ THERMISTORS SETTINGS #define DEFAULT_RETRACTION 1 //used for PINDA temp calibration +#define END_FILE_SECTION 10000 //number of bytes from end of file used for checking if file is complete + #endif //__CONFIGURATION_PRUSA_H diff --git a/Firmware/variants/1_75mm_MK1-RAMBo13a-E3Dv6full.h b/Firmware/variants/1_75mm_MK1-RAMBo13a-E3Dv6full.h index bf748354b..e372831c4 100644 --- a/Firmware/variants/1_75mm_MK1-RAMBo13a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK1-RAMBo13a-E3Dv6full.h @@ -403,4 +403,6 @@ THERMISTORS SETTINGS #define DEFAULT_RETRACTION 1 //used for PINDA temp calibration +#define END_FILE_SECTION 10000 //number of bytes from end of file used for checking if file is complete + #endif //__CONFIGURATION_PRUSA_H diff --git a/Firmware/variants/1_75mm_MK2-MultiMaterial-RAMBo10a-E3Dv6full.h b/Firmware/variants/1_75mm_MK2-MultiMaterial-RAMBo10a-E3Dv6full.h index 83917cb98..6093f8ac5 100644 --- a/Firmware/variants/1_75mm_MK2-MultiMaterial-RAMBo10a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK2-MultiMaterial-RAMBo10a-E3Dv6full.h @@ -400,4 +400,6 @@ THERMISTORS SETTINGS #define DEFAULT_RETRACTION 1 //used for PINDA temp calibration and pause print #endif +#define END_FILE_SECTION 10000 //number of bytes from end of file used for checking if file is complete + #endif //__CONFIGURATION_PRUSA_H diff --git a/Firmware/variants/1_75mm_MK2-MultiMaterial-RAMBo13a-E3Dv6full.h b/Firmware/variants/1_75mm_MK2-MultiMaterial-RAMBo13a-E3Dv6full.h index fb3329db6..06ea61f83 100644 --- a/Firmware/variants/1_75mm_MK2-MultiMaterial-RAMBo13a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK2-MultiMaterial-RAMBo13a-E3Dv6full.h @@ -402,4 +402,6 @@ THERMISTORS SETTINGS #define DEFAULT_RETRACTION 1 //used for PINDA temp calibration and pause print #endif +#define END_FILE_SECTION 10000 //number of bytes from end of file used for checking if file is complete + #endif //__CONFIGURATION_PRUSA_H diff --git a/Firmware/variants/1_75mm_MK2-RAMBo10a-E3Dv6full.h b/Firmware/variants/1_75mm_MK2-RAMBo10a-E3Dv6full.h index d42400dcc..fc89c0656 100644 --- a/Firmware/variants/1_75mm_MK2-RAMBo10a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK2-RAMBo10a-E3Dv6full.h @@ -400,4 +400,6 @@ THERMISTORS SETTINGS #define DEFAULT_RETRACTION 1 //used for PINDA temp calibration and pause print #endif +#define END_FILE_SECTION 10000 //number of bytes from end of file used for checking if file is complete + #endif //__CONFIGURATION_PRUSA_H diff --git a/Firmware/variants/1_75mm_MK2-RAMBo13a-E3Dv6full.h b/Firmware/variants/1_75mm_MK2-RAMBo13a-E3Dv6full.h index 6c71bab92..5307ede95 100644 --- a/Firmware/variants/1_75mm_MK2-RAMBo13a-E3Dv6full.h +++ b/Firmware/variants/1_75mm_MK2-RAMBo13a-E3Dv6full.h @@ -402,4 +402,6 @@ THERMISTORS SETTINGS #define DEFAULT_RETRACTION 1 //used for PINDA temp calibration and pause print #endif +#define END_FILE_SECTION 10000 //number of bytes from end of file used for checking if file is complete + #endif //__CONFIGURATION_PRUSA_H From a3f49d7879e7b7d6fdebf151a5037d0471a3251c Mon Sep 17 00:00:00 2001 From: PavelSindler Date: Thu, 14 Sep 2017 16:39:14 +0200 Subject: [PATCH 13/13] changed status in case that print is aborted --- Firmware/ultralcd.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 7d53e8bb4..f954b0dfb 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -4993,6 +4993,8 @@ static bool check_file(const char* filename) { get_command(); result = check_commands(); } + card.printingHasFinished(); + strncpy_P(lcd_status_message, WELCOME_MSG, LCD_WIDTH); return result; }