Apa tujuan dari asterix (*) di Gcode?

10

Melakukan pemantauan tingkat rendah, urutan berikut dikirim ke printer:

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

Urutan ini hanya menyalakan kipas, rumah printer, lalu mematikan kipas.

Pertanyaan: Apa tujuan asterix / bintang / (*) dan dua digit berikutnya pada setiap baris?

Mtl Dev
sumber
1
* asterisk - Asterix adalah karakter dalam serial kartun.
Andrew Morton
1
@AndrewMorton Jadi itu akan membuat gcode orang Romawi saat itu - dengan Asterix menjadi checksum mereka, menghentikan korupsi di daerahnya?
Mtl Dev
Hmmm ... mungkin. Bangsa Romawi memang membangun banyak hal, seperti halnya printer 3-d.
Andrew Morton

Jawaban:

9

Itu sebuah checksum. Itu ditambahkan oleh perangkat lunak host ke kode-G, untuk memungkinkan beberapa verifikasi dasar oleh firmware bahwa kode-G dikirimkan tidak berubah. Itu tidak mengubah arti dari G-code, dan apa yang sebenarnya diwakili oleh urutan Anda adalah adil M106, G28, M107. The N0,N1,N2,...adalah nomor baris, dan kombinasi nomor baris dan checksum digunakan untuk meminta re-send dari setiap garis yang rusak selama transmisi.

Tom van der Zanden
sumber
Apakah Anda mengetahui algoritma checksum yang digunakan di sini?
Carl Witthoft
3
Di Marlin, semua byte untuk masing-masing karakter adalah XOR-ed bersama, dan hasilnya harus sama dengan checksum.
Tom van der Zanden
1
Just XOR:byte checksum = 0; byte count = 0; while(instruction[count] != '*') checksum = checksum^instruction[count++];
Mtl Dev