So, for example ...lem wrote:really means a communication error
The M105 command should return the current temperature, whereupon the PC host program updates the on-screen thermometer. That exchange happens once every second, amid the torrent of G-Code going out to the printer.
If the printer doesn't respond with something that looks like:
Code: Select all
ok T:11.7 /0.0 B:11.1 /0.0 T0:11.7 /0.0 @:0 B@:0
For example, when the firmware sees M303, it'll spend the next several minutes auto-tuning the extruder's PID parameters, regardless of whether it's idle or in the middle of seven hours of printing. If the host intended to send:
Code: Select all
M105
G1 X-10.303 Y-4.901 F15000.000
Code: Select all
M303 Y-4.901 F15000.000
The G-Code syntax includes a line-by-line checksum that's supposed to prevent that sort of problem, but ...
That's obviously a contrived example, but you get the general idea: a "communications failure" happens when the conversation between the host and the printer gets out of sync. Once that happens, it's really really hard to recover, because the host program has no idea what the printer has been doing lately.
Fun fact 1: G-Code files on the SD card don't have checksums.
Fun fact 2: Reading from the SD card isn't infallible.