Какова цель asterix (*) в Gcode?

10

При некотором низкоуровневом мониторинге на принтер отправляется следующая последовательность:

N0 M106*36 
N1 G28*18 
N2 M107*39

Эта последовательность просто включает вентилятор, включает принтер, затем выключает вентилятор.

Вопрос: Какова цель звездочки / звезды / (*) и двух последующих цифр в каждой строке?

Mtl Dev
источник
1
* звездочка - Астерикс - персонаж мультсериала.
Эндрю Мортон
1
@AndrewMorton Итак, что же тогда сделает римлянин gcode, а Астерикс будет их контрольной суммой, остановив коррупцию в его районе?
Mtl Dev
Хм ... может быть. Римляне построили много вещей, как это сделал 3-й принтер.
Эндрю Мортон

Ответы:

9

Это контрольная сумма. Он добавляется программным обеспечением хоста в G-код, чтобы обеспечить некоторую базовую проверку встроенного ПО, что G-код был передан без изменений. Это не меняет смысла G-кода, и то, что на самом деле представляет ваша последовательность, просто M106, G28, M107. Это N0,N1,N2,...номера строк, а комбинация номеров строк и контрольных сумм используется для запроса повторной отправки любых строк, которые были повреждены во время передачи.

Том ван дер Занден
источник
Вы случайно не знаете алгоритм контрольной суммы, используемый здесь?
Карл Виттофт
3
В Marlin все байты для отдельных символов XOR-ed вместе, и результат должен быть таким же, как контрольная сумма.
Том ван дер Занден
1
Просто XOR:byte checksum = 0; byte count = 0; while(instruction[count] != '*') checksum = checksum^instruction[count++];
Mtl Dev