我能够将我的终端程序 (Putty) 连接到我的 3D 打印机 (Creality Ender 3 Pro),并且能够将 G 代码命令发送到我的打印机并且它服从。
现在假设我发送了长命令
G29 ; auto bed leveling
它仍在执行。打印机写信给我
echo:busy: processing
怎么打断呢?
我尝试发送M0
,但没有成功。
我能够将我的终端程序 (Putty) 连接到我的 3D 打印机 (Creality Ender 3 Pro),并且能够将 G 代码命令发送到我的打印机并且它服从。
现在假设我发送了长命令
G29 ; auto bed leveling
它仍在执行。打印机写信给我
echo:busy: processing
怎么打断呢?
我尝试发送M0
,但没有成功。
3D 打印机在 G 代码方面非常基础。它们没有循环启动或循环暂停功能。也没有 g-code 命令可以中断上一个命令。要让它停止,您可以将其关闭。或者,如果打印机的固件配置为这样做,您可以触摸其中一个限位开关以使其停止移动。
G-Code 作为队列处理。FIFO 行为将不允许并行执行任何命令。
但是我知道 - 但我没有机会尝试 - Marlin 提供的紧急命令M112或M108。Marlin 文档说需要启用 EMERGENCY_PARSER 和 HOST_KEEPALIVE_FEATURE 来处理这些。显然有一种机制可以并行工作(比如更高优先级的队列?)。
这些命令可能被设计为中断某些特定动作的执行,例如 M108 被描述为中断等待温度循环。您可能想尝试一下。
M0 还需要 EMERGENCY_PARSER 设置。它可能与您的预期略有不同:它被描述为最后一个动作后的暂停。相比之下,紧急代码(M112句号)被设计为即使在打印时也跳过内部命令队列并立即执行,当紧急解析器启用时(命令队列可能会丢失,打印机可能会关闭或用户可能会被迫重新启动打印机)。