注释
是的,这当然是可能的。然而,我们需要发送尽可能少的字符,这样 grbl 才能专注于保持运动规划器的完整…就像回显所有命令可能会导致 grbl 卡顿一样,我们遇到了长 g 代码文件结束的问题up 要求 grbl 发送几个字符来确认每一行。例如,为 g 代码行 53645 发送“ok153645”需要 grbl 花费四倍以上的时间为串行发送缓冲区提供服务。因此,我建议创建一个环形缓冲区(0x0 到 0xF),然后将“ok”替换为该字符(例如“k1、k5、kA、kF 等)”。然后我们让主机记住哪一行对应于每个“ok”命令。这只有效,因为 grbl 的缓冲区只能存储少于 16 行。 我们最终会在我们的 grbl 分支中实现这种行为……当然,请注意,这将破坏与几乎所有 grbl 主机控制器(例如 grblPanel 等)的兼容性……他们期待“好”,并且赢了’知道如何处理’k5’。 |
要检查规划器缓冲区是否为空,请发送“?” 然后查看缓冲区何时为空。 |
作者
听起来不错。很好的妥协。 |
似乎有必要区分一些“确定”消息。例如,来自 ‘Grbl v1.1 界面:
“同步
对于 GUI 需要运行一组特殊命令以进行工具更改、自动调平等的情况,通常需要一种方法来了解 Grbl 何时完成任务并且规划器缓冲区是空的。最简单的方法是插入一个 G4 P0.01 驻留命令,其中 P 以秒为单位并且必须大于 0.0。这作为快速强制同步并确保规划器缓冲区是在 GUI 发送下一个要执行的任务之前完全清空。”
如果“ok”消息的编号与错误消息一样,那么它们可以有区别:例如“ok1”==“上一个命令已完成执行”等。
也许需要考虑一下。