评论
作者
知道了! 对,所以
第 269 至 273 行 bca2837
还应该包括 即更改为
现在它正确地将 Mpos/Wpos 附加到 strGrblBuf(虽然现在它是 IdleWPos 所以…… 接下来在 第 176 至 178 行 bca2837
将字符串复制到 machineStatus 后,我清理了 strGrblBuf 和 strGrblIdx :
现在 wposOrMpos = strGrblBuf[0] 并且 strGrblBuf 按预期正确包含 Mpos 或 WPos |
作者
U测试也不错! 我收到 WPos 反馈,其中包含 WCO 条目。并正确计算出 MPOS <空闲|WPos:0.000,0.000,0.000|FS:0,0|WCO:92.188,0.000,0.000> 我们可以关闭该问题,但将其保持打开状态以提醒您也应用修复 |
所有者
感谢您发现并解决问题。 |
您好,我建议您自己设置 wifi 设置的 ip 地址(Dhcp 或修复 ip) |
所有者
较新版本支持修复 ip。 |
参考
grbl_controller_esp32/com.cpp
第 195 至 201 行 bca2837
将问题追溯到上面的链接代码
如果我只是将 Serial.print 添加到调试中,我就能明白为什么它会失败:只是还没有深入到你的代码中来进行修复(编辑:见下面的回复)
添加了我的 serial.println:
我可以看到
那就是你存储 wposOrMpos = strGrblBuf[0] 的地方;strGrblBuf 仍然包含 Idle/Jog/Hold/etc 字符串,而不是预期的 wPos/mPos
随后, handleLastNumericField() 在检查时中断计算:
但是 wposOrMpos = “I”(在我当前的空闲状态下)所以我们总是点击“else”计算(:
如果我使用坐标偏移以及 $10=0(wpos 报告),则发现 wpos/mpos 数据不会正确出现。
默认 $10=1 它“有效”,mPos 报告由 handleLastNumericField 的“else”部分处理。但是,如果报告未设置为 $10=1,那么我们仍然会点击“else”,尽管它不应该。handleLastNumericField 中的代码部分显然打算处理这两种报告设置,只是之前它存储了错误的字符(: