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

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

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

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

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

, 👍16

Обсуждение

* звездочка - [Астерикс] (https://en.wikipedia.org/wiki/Asterix ) - персонаж мультсериала., @Andrew Morton

@AndrewMorton Значит, это сделало бы gcode римлянами, а Asterix - их контрольной суммой, останавливающей коррупцию в его регионе?, @Mtl Dev

Хммм... может быть. Римляне действительно создавали много вещей, как это делает 3D-принтер., @Andrew Morton


1 ответ


Лучший ответ:

14

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


,

Вы случайно не знаете алгоритм контрольной суммы, используемый здесь?, @Carl Witthoft

В Marlin все байты для отдельных символов упорядочиваются вместе, и результат должен совпадать с контрольной суммой., @Tom van der Zanden

Просто XOR: контрольная сумма байта = 0; количество байтов = 0; while(инструкция[количество] != '*') контрольная сумма = контрольная сумма^инструкция[count++];, @Mtl Dev