¿Cuál es el propósito de asterix (*) en Gcode?


10

Al realizar un monitoreo de bajo nivel, se envía la siguiente secuencia a la impresora:

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

Esta secuencia solo enciende el ventilador, aloja la impresora y luego apaga el ventilador.

Pregunta: ¿Cuál es el propósito del asterisco / estrella / (*) y los dos dígitos siguientes en cada línea?


1
* asterisco: Asterix es un personaje de una serie de dibujos animados.
— Andrew Morton

1
@AndrewMorton Entonces, ¿eso haría que los romanos se convirtieran en gcode, con Asterix como su suma de control, deteniendo la corrupción en su área local?
— Mtl Dev

Hmmm ... tal vez. Los romanos construyeron muchas cosas, como hace una impresora 3-d.
— Andrew Morton

Respuestas:


9

Eso es una suma de verificación. El software host lo agrega al código G, para permitir una verificación básica por parte del firmware de que el código G se transmitió sin cambios. No cambia el significado del código G, y lo que su secuencia representa realmente es justo M106, G28, M107. El N0,N1,N2,...son los números de línea, y la combinación de números de línea y las sumas de comprobación se utiliza para solicitar una re-envío de las líneas que fueron dañados durante la transmisión.


¿Conoces el algoritmo de suma de comprobación utilizado aquí?
— Carl Witthoft

3
En Marlin, todos los bytes para los caracteres individuales se editan XOR juntos, y el resultado debe ser el mismo que la suma de verificación.
— Tom van der Zanden

1
Solo XOR:byte checksum = 0; byte count = 0; while(instruction[count] != '*') checksum = checksum^instruction[count++];
— Mtl Dev
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.