Merge pull request #617 from mkbel/fix_farm_reset_1

Fix farm reset
This commit is contained in:
PavelSindler 2018-04-13 10:02:54 +02:00 committed by GitHub
commit b1bb6841c9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 47 additions and 27 deletions

View File

@ -2507,6 +2507,52 @@ void gcode_M701()
#endif
}
/**
* @brief Get serial number from 32U2 processor
*
* Typical format of S/N is:CZPX0917X003XC13518
*
* Command operates only in farm mode, if not in farm mode, "Not in farm mode." is written to MYSERIAL.
*
* Send command ;S to serial port 0 to retrieve serial number stored in 32U2 processor,
* reply is transmitted to serial port 1 character by character.
* Operation takes typically 23 ms. If the retransmit is not finished until 100 ms,
* it is interrupted, so less, or no characters are retransmitted, only newline character is send
* in any case.
*/
static void gcode_PRUSA_SN()
{
if (farm_mode) {
selectedSerialPort = 0;
MSerial.write(";S");
int numbersRead = 0;
Timer timeout;
timeout.start();
while (numbersRead < 19) {
while (MSerial.available() > 0) {
uint8_t serial_char = MSerial.read();
selectedSerialPort = 1;
MSerial.write(serial_char);
numbersRead++;
selectedSerialPort = 0;
}
if (timeout.expired(100)) break;
}
selectedSerialPort = 1;
MSerial.write('\n');
#if 0
for (int b = 0; b < 3; b++) {
tone(BEEPER, 110);
delay(50);
noTone(BEEPER);
delay(50);
}
#endif
} else {
MYSERIAL.println("Not in farm mode.");
}
}
void process_commands()
{
@ -2626,33 +2672,7 @@ void process_commands()
prusa_sd_card_upload = true;
card.openFile(strchr_pointer+4,false);
} else if (code_seen("SN")) {
if (farm_mode) {
selectedSerialPort = 0;
MSerial.write(";S");
// S/N is:CZPX0917X003XC13518
int numbersRead = 0;
while (numbersRead < 19) {
while (MSerial.available() > 0) {
uint8_t serial_char = MSerial.read();
selectedSerialPort = 1;
MSerial.write(serial_char);
numbersRead++;
selectedSerialPort = 0;
}
}
selectedSerialPort = 1;
MSerial.write('\n');
/*for (int b = 0; b < 3; b++) {
tone(BEEPER, 110);
delay(50);
noTone(BEEPER);
delay(50);
}*/
} else {
MYSERIAL.println("Not in farm mode.");
}
gcode_PRUSA_SN();
} else if(code_seen("Fir")){
SERIAL_PROTOCOLLN(FW_VERSION);