Qual è lo scopo di asterix (*) in Gcode?


10

Effettuando un monitoraggio di basso livello, la seguente sequenza viene inviata alla stampante:

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

Questa sequenza accende solo la ventola, ospita la stampante, quindi spegne la ventola.

Domanda: Qual è lo scopo di asterix / star / (*) e delle due cifre successive su ciascuna riga?


1
* asterisco - Asterix è un personaggio di una serie di cartoni animati.
Andrew Morton,

1
@AndrewMorton Quindi questo renderebbe il gcode i romani allora - con Asterix come loro checksum, fermando la corruzione nella sua zona?
Mtl Dev,

Hmmm ... forse. I romani costruirono molte cose, come fa una stampante 3D.
Andrew Morton,

Risposte:


9

Questo è un checksum. È stato aggiunto dal software host al codice G, per consentire una verifica di base da parte del firmware che il codice G è stato trasmesso invariato. Non cambia il significato del codice G, e ciò che la sequenza rappresenta effettivamente è giusto M106, G28, M107. Si N0,N1,N2,...tratta di numeri di riga e la combinazione di numeri di riga e checksum viene utilizzata per richiedere un nuovo invio di tutte le righe danneggiate durante la trasmissione.


Conosci l'algoritmo di checksum usato qui?
Carl Witthoft,

3
In Marlin, tutti i byte per i singoli personaggi sono messi insieme in XOR e il risultato dovrebbe essere lo stesso del checksum.
Tom van der Zanden,

1
Solo XOR:byte checksum = 0; byte count = 0; while(instruction[count] != '*') checksum = checksum^instruction[count++];
Mtl Dev il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.