Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/prusa3d/PrusaSlicer.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormichalprusa <git@michalprusa.cz>2016-08-21 17:23:36 +0300
committermichalprusa <git@michalprusa.cz>2016-08-21 17:23:36 +0300
commitbe47a2b7c141c1b3068bb0723955deb8454ac3a7 (patch)
tree1fe66aefa8f5c5469dead7a843376e3028f08cec
parent3c1349a7461a69e645e788bad4b7ee13d6a435bc (diff)
Serial receive timeout while in farm mode to prevent printer from stuck when some characters appears on serial line. Added status echo while waiting for filament.
-rw-r--r--Firmware/Marlin_main.cpp35
-rw-r--r--Firmware/ultralcd.cpp13
2 files changed, 43 insertions, 5 deletions
diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp
index 00659efd9..0eedde5fb 100644
--- a/Firmware/Marlin_main.cpp
+++ b/Firmware/Marlin_main.cpp
@@ -228,6 +228,8 @@
CardReader card;
#endif
+unsigned long TimeSent = millis();
+unsigned long TimeNow = millis();
union Data
{
@@ -1122,6 +1124,9 @@ void get_command()
while (MYSERIAL.available() > 0) {
char serial_char = MYSERIAL.read();
+ TimeSent = millis();
+ TimeNow = millis();
+
if (serial_char < 0)
// Ignore extended ASCII characters. These characters have no meaning in the G-code apart from the file names
// and Marlin does not support such file names anyway.
@@ -1247,6 +1252,23 @@ void get_command()
}
} // end of serial line processing loop
+ if(farm_mode){
+ TimeNow = millis();
+ if ( ((TimeNow - TimeSent) > 800) && (serial_count > 0) ) {
+ cmdbuffer[bufindw+serial_count+1] = 0;
+
+ bufindw += strlen(cmdbuffer+bufindw+1) + 2;
+ if (bufindw == sizeof(cmdbuffer))
+ bufindw = 0;
+ ++ buflen;
+
+ serial_count = 0;
+
+ SERIAL_ECHOPGM("TIMEOUT:");
+ //memset(cmdbuffer, 0 , sizeof(cmdbuffer));
+ return;
+ }
+ }
#ifdef SDSUPPORT
if(!card.sdprinting || serial_count!=0){
@@ -4342,6 +4364,14 @@ case 404: //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp
{
st_synchronize();
+ if (farm_mode)
+
+ {
+
+ prusa_statistics(22);
+
+ }
+
feedmultiplyBckp=feedmultiply;
int8_t TooLowZ = 0;
float target[4];
@@ -4922,8 +4952,9 @@ void manage_inactivity(bool ignore_stepper_queue/*=false*/) //default argument s
const int KILL_DELAY = 10000;
#endif
- if(buflen < (BUFSIZE-1))
- get_command();
+ if(buflen < (BUFSIZE-1)){
+ get_command();
+ }
if( (millis() - previous_millis_cmd) > max_inactive_time )
if(max_inactive_time)
diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp
index 2da15dda8..2629073c0 100644
--- a/Firmware/ultralcd.cpp
+++ b/Firmware/ultralcd.cpp
@@ -1811,9 +1811,16 @@ void prusa_statistics(int _message) {
prusa_stat_temperatures();
SERIAL_ECHOLN("}");
break;
- case 99: // heartbeat
- SERIAL_ECHOLN("{[PRN:99]}");
- break;
+ case 22: // waiting for filament change
+ SERIAL_ECHOLN("{[PRN:5]}");
+ break;
+
+ case 99: // heartbeat
+ SERIAL_ECHO("{[PRN:99]");
+ prusa_stat_temperatures();
+ SERIAL_ECHOLN("}");
+
+ break;
}
}