À quoi sert astérisque (*) dans Gcode?

10

En effectuant une surveillance de bas niveau, la séquence suivante est envoyée à l'imprimante:

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

Cette séquence allume simplement le ventilateur, abrite l'imprimante, puis l'éteint.

Question: À quoi servent les astérisques / étoiles / (*) et les deux chiffres suivants sur chaque ligne?

Mtl Dev
la source
1
* astérisque - Astérix est un personnage d'une série de dessins animés.
Andrew Morton du
1
@AndrewMorton Donc, cela ferait alors du gcode les Romains - avec Astérix comme leur somme de contrôle, arrêtant la corruption dans sa région?
Mtl Dev
Hmmm ... peut-être. Les Romains ont construit beaucoup de choses, comme le fait une imprimante 3D.
Andrew Morton,

Réponses:

9

C'est une somme de contrôle. Il est ajouté par le logiciel hôte au code G, pour permettre une vérification de base par le micrologiciel que le code G a été transmis tel quel. Cela ne change pas la signification du code G, et ce que votre séquence représente réellement est juste M106, G28, M107. Il N0,N1,N2,...s'agit de numéros de ligne, et la combinaison de numéros de ligne et de sommes de contrôle est utilisée pour demander un nouvel envoi de toutes les lignes endommagées pendant la transmission.

Tom van der Zanden
la source
Connaissez-vous justement l'algorithme de somme de contrôle utilisé ici?
Carl Witthoft du
3
Dans Marlin, tous les octets des caractères individuels sont XOR-ed ensemble, et le résultat doit être le même que la somme de contrôle.
Tom van der Zanden
1
Juste XOR:byte checksum = 0; byte count = 0; while(instruction[count] != '*') checksum = checksum^instruction[count++];
Mtl Dev