开源改变世界!!

堆栈粉碎保护失败! #456

推推 grbl 2年前 (2022-10-17) 240次浏览 0个评论
关闭
Claude54 打开了这个问题 2020 年 6 月 27 日 · 6 条评论
关闭

堆栈粉碎保护失败!#456

Claude54 打开了这个问题 on 27 Jun 2020 · 6 条评论

注释

堆栈粉碎保护失败! #456

请回答以下问题。

您使用的是什么版本的固件?grbl 1.3a

问题是否可重复?是的

什么情况下会出现bug?

它发生在我使用第四轴 A 时。我将 GCode 发送到 bCNC。
3轴一切顺利,但当我使用第四轴时,它会在一段时间后系统崩溃。

重要如果您粘贴固件代码,请使用C++ 语言的Markdown 代码和语法突出显示。使用三个反勾号方法。

  #define EASIER_TO_READ true
堆栈粉碎保护失败! #456 Claude54 添加了 漏洞 有些东西不工作标签 2020 年 6 月 27 日
堆栈粉碎保护失败! #456
所有者

婚戒 评论 2020 年 6 月 27 日

您能否发布导致问题的gcode。今天晚些时候我可以测试一下。只需最少的几行即可重复该问题。

必须尝试通过串行监视器手动发送 gcode?许多 gcode 发件人在超过 3 个轴上遇到问题,看看这是否是问题的一部分会很有帮助。

堆栈粉碎保护失败! #456

抱歉回复晚了,但我这个周末没空。我正在向您发送一段 GCode,它系统地使 GRBL
崩溃。我注意到当 A 到达 -10000 附近时,GRBL 崩溃了。

test_axe_A.zip

堆栈粉碎保护失败! #456

我已经尝试过其他文件并且总是相同,当 A 到达 -10000 左右时,GRBL 崩溃了

堆栈粉碎保护失败! #456
所有者

 婚戒 评论 2020 年 7 月 1 日

堆栈粉碎保护失败! #456
所有者

婚戒 评论 2020 年 7 月 1 日

我能够重复这个问题。我认为这是由于没有正确规划这么多的功能……

// formats axis values into a string and returns that string in rpt
static void report_util_axis_values(float* axis_value, char* rpt) {
    uint8_t idx;
    char axisVal[10];
    float unit_conv = 1.0; // unit conversion multiplier..default is mm
    rpt[0] = '\0';
    if (report_inches->get())
        unit_conv = 1.0 / MM_PER_INCH;
    for (idx = 0; idx < N_AXIS; idx++) {
        if (report_inches->get())
            sprintf(axisVal, "%4.4f", axis_value[idx] * unit_conv);  // Report inches to 4 decimals
        else
            sprintf(axisVal, "%4.3f", axis_value[idx] * unit_conv);  // Report mm to 3 decimals
        strcat(rpt, axisVal);
        if (idx < (N_AXIS - 1))
            strcat(rpt, ",");
    }
}

char axisVal[10];没有足够的空间来存放它。

这是在report.cpp 中。您可以尝试将其更改为char axisVal[20];. 它对我有用。在更新代码之前,我需要寻找其他区域。

堆栈粉碎保护失败! #456

Yessss ..
我已经改变了axisVal数组的大小,它现在可以工作了。
非常感谢。

堆栈粉碎保护失败! #456
喜欢 (0)

您必须 登录 才能发表评论!