开源改变世界

m117 命令错误 #286

推推 grbl 3年前 (2023-02-05) 276次浏览
关闭
jbernardis 打开了这个问题 2012 年 11 月 2 日 · 10 条评论
关闭

m117 命令错误#286

jbernardis 打开了这个问题 2012 年 11 月 2 日 · 10 条评论

评论

m117 命令错误 #286

使用 pronterface/printcore 时。如果我以交互方式输入 m117 命令,一切正常。但是,如果我将 M117 命令放入 gcode 文件中,屏幕上就会出现垃圾。看起来它忘记了 printcore 插入的序列号和校验和。

m117 命令错误 #286
贡献者

更多信息?截图/照片?
别人能复制吗?(我没有使用液晶显示器)

m117 命令错误 #286
贡献者

*68 确实是校验和的一部分。

我认为这会解决它:

diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp
index 1874ab5..21c10f0 100644
--- a/Marlin/Marlin_main.cpp
+++ b/Marlin/Marlin_main.cpp
@@ -426,6 +426,7 @@ void get_command()
               serial_count = 0;
               return;
             }
+                       strchr_pointer[0] = '\0';
             //if no errors, continue parsing
           }
           else
m117 命令错误 #286
贡献者

(我在那里的 gcode 解析器中看到了一些更奇怪的东西,但我现在没有时间测试这些东西,而且我不会在没有测试的情况下向主树添加补丁)

m117 命令错误 #286

我愿意在我的机器上本地进行此更改并尝试一下,但在不查看那里的代码的情况下,在我看来,这似乎只解决了校验和的显示问题。117呢?那是 M117 命令的最后 3 个字符,也不应该在那里。看起来代码只是显示从字节偏移量 5 开始的所有内容,它可以很好地交互工作,但在代码文件中不考虑序列号。

m117 命令错误 #286
贡献者

哦,我错过了 117,它必须在 M117 中解决,很可能它只是跳过了前 4 个字符。

m117 命令错误 #286

是的,这正是它正在做的。这是 M117 代码的全部:
case 117: // M117 display message
LCD_MESSAGE(cmdbuffer[bufindr]+5);
休息;

+5 将它带到“M117”之后的第一个字符。当然,如果命令前面有序列号,则此偏移量不起作用(至少 printcore 就是这种情况)

m117 命令错误 #286

我通过用以下代码替换当前的 M117 代码,在我的系统上修复了这个问题。不优雅,但它完成了工作。第一个 if 语句的 else 情况永远不会发生,但如果发生,我只是保持原始逻辑不变,但这可能会被安全地删除。

case 117: // M117 显示消息
char * cp;
cp = strstr(cmdbuffer[bufindr], “M117”);
如果 (cp != NULL) {
cp = cp + 5;
字符* ep;
ep = strstr(cmdbuffer[bufindr], “*”);
如果 (ep != NULL)
*ep = ‘\0’;
LCD_MESSAGE(cp);
}
else
LCD_MESSAGE(cmdbuffer[bufindr]+5);
休息;

m117 命令错误 #286
贡献者

这个是大约一年前创建的,有很多变化,请下载最新的 marlin 副本,看看问题是否仍然存在。您还可以使用最新的 arduino IDE 来刷新 marlin 固件。如果您的板文件等只能在旧的 ide 下工作,请先升级它们,以便它们在最新的 IDE 下工作。

如果您为不在https://github.com/ErikZalm/Marlin/tree/Marlin_v1/ArduinoAddons中的硬件创建板文件,请 fork marlin 并添加文件,然后创建一个拉取请求,以便我们可以获得硬件支持的。这也将使人们了解人们正在使用什么硬件。