概述众所周知,3D 打印机执行的是一堆指令,这一堆指令都来源于一个指令集,即G-M 指令集。而固件就负责解释这些指令,并将命令指派给电子原件,从而完成打印任务。因此,固件和指令集必须相互配合,否那么打印机不会正常工作。开源的 3D打印机使用的固件多种多样,但和这些固件匹配的指令集绝大多数指令都一样,即RepRap G-M 指令集。由于 Marlin 固件使用的最为广泛,笔者就以 Marlin 固件的指令集为例作表达。了解 G-M 指令有什么用?这用处可大了。帮助使用者更方便地调试打印机,检测打印机的问题,扩展打印机菜单功能…反正好处多多,不管你信不信,反正我是信了。废话不多说,进入正题。G-M 指令集就是一些以 G 或 M 开头的代码,有时候还会掺杂一些以其其他字母以标示参数意义,比如 T、S、F、P 等。具体意义见下表,表中 nnn 表示数字。字母意义Gnnn标准 GCode 命令, 例如移动到一个坐标点。MnnnRepRap 定义的命令,例如打开一个冷却风扇Tnnn选择工具代码。 在 RepRap 中,工具通常是挤出头〔extruder〕。Snnn命令参数, 例如马达的电压。Pnnn命令参数, 频率:1 次每毫秒。XnnnX 坐标, 通常用于移动命令。YnnnY 坐标, 通常用于移动命令。ZnnnZ 坐标, 通常用于移动命令。Ennn挤出长度,用于控制挤出线材的长度.Innn参数 - 现在仍未使用〔定义〕。Jnnn参数 - 现在仍未使用〔定义〕。Fnnn打印头移动速度 单位: 毫米每分钟Rnnn参数 - 温度相关。Qnnn参数- 现在仍未使用〔定义〕。Nnnn行码,在发送错误情况后,用来重复输入某行代码〔命令〕。*nnn校验码〔Checksum〕. 用于检测通信错误因此,能够被 Marlin 固件识别的代码应该是像下面的样子:详解注释G-Code 一行中分号“;〞后面的容为解释性语句,即注释。固件会忽略其容。为了减少通信量,可以把注释信息都去掉。标记代码N 和 *,比如 N123 [...G Code 写在这里...] *71。这是行码和标记码。RepRap 的固件会以一个本地计算的值来比照标记码,假如两者值不同,就会要求重复输入该条指令。行码和检查码都可以去掉,RepRap 仍会工作, 但它不会做检查。你必须同时使用,或同时放弃使用。检查码 cs 是通过对对应的指令(包括它的的行码)的原始字节数据进展异或位运算得出的。检查码 cs 的值即是其*符号右边的十进制数字,RepRap 固件希望每次命令的行代码都是逐次增加 1 的大小,不然的话,它会返回一个错误。当然你也可以发...