* "G1 X1 ; test" was not executing "G1 X1" due to never leaving comment mode.
* "M117 Hello \;)" printed "Hello \" to the display due to not replacing serial_char properly.
Tested with the following commands:
* M117 Hello ; test => displays "Hello" on display, ignores "test"
* G1 X1 ; foo => moves 1mm in X, ignores "foo"
* ; test => completely ignored, not even acknowledged
* M117 Hello \;) => displays "Hello ;)" on display
* M117 Hello \\;) => displays "Hello \" on display, ignores ")"
in
G0 to G3 were previously acknowledged in the get_command method, causing
them to be possibly acknowledged before commands coming after them that
were acknowledged in process_commands.
This patch fixes this, moving the acknowledgement of G0 to G3 to the
process_commands method as well. These commands are therefore no
longer acknowledged when the enter the cmd_buffer but instead only
acknowledged when the enter the plan_buffer.
Guaranteeing that commands are acknowledged in the same order in which
they were received by the firmware allows host software to be able to
track the life cycle of commands and such a better management of the
firmware's serial buffers as well as better internal command processing
and response parsing without having to depend on throwing an epic
amount of regular expressions against each line received back from the
firmware.
FixesErikZalm/Marlin#1147
The serial protocol has to stay machine readable, without having
to cope with a ton of different human language variants. So
just leave it at the original english version.
Should fixErikZalm/Marlin#1052
Positioning of string terminator to truncate checksum from the commands
M23, M28, M30, M32, M928 and M117 was off by one, causing the last
letter of the actual command to be truncated instead of just the
checksum.
In case of the SD commands this caused checksummed commands targeting
existing files to fail since the last letter of the filename was
truncated.
In case of M117 this caused the last given letter not to be displayed.
This patch fixes the off-by-one error and sets the null terminator
on the exact position of the * starting the checksum instead of the
character before that.
This leads to the command not being acknowledged properly
by the firmware, leading to consecutive issues in host software
waiting for an acknowledgement.