Contact me: hankecnc@gmail.com

重新映射的 m6 结束时出错 #217

推推 grbl 3年前 (2023-01-29) 462次浏览
关闭
dhweizel 打开了这个问题 2016 年 12 月 9 日 · 6条评论
关闭

重新映射的 m6 结束时出错#217

dhweizel 打开了这个问题 2016 年 12 月 9 日 · 6条评论

注释

重新映射的 m6 结束时出错 #217
矮人 评论了 2016 年 12 月 9 日  

我刚换了master。该机器使用从 vismach 样本复制的 m6 重映射,在 2.7 上工作正常,现在,在 master 上,在工具更换结束时引发错误。

emc/task/emctask.cc 397: interp_error: 生成器调用期间出现异常: TypeError: ‘NoneType’ 对象不可调用

生成器调用期间出现异常:TypeError: ‘NoneType’ object is not callable

解释器栈: – int Interp::pycall(setup_pointer, context_pointer, const char*, const char*, in – int Interp::execute_return(setup_pointer, context_pointer, int) – int Interp::convert_control_functions(block_pointer, setup_pointer) – int Interp ::_execute(const char*)
emcTaskPlanExecute((null)) 返回 5

vismach 示例中存在相同的错误:以下是我重现该问题所遵循的步骤:

  1. linuxcnc sim.axis.vismach.VMC_toolchange/vmc_index.ini
  2. 全部回家
  3. t10m6

ini文件说:
REMAP=M6 modalgroup=6 prolog=change_prolog ngc=toolchange epilog=change_epilog
如果我删除 epilog=change_epilog 就没有错误

该错误似乎与 stdglue.py 的 change_epilog 有关

在第 198 行:返回 INTERP_EXECUTE_FINISH

如果我更改为:返回 INTERP_OK 它按预期工作

我不知道更改的含义,但我发现此返回 vaue 在 master (gmoccapy) 的另一个 stdglue.py 文件中使用

编辑:错字

重新映射的 m6 结束时出错 #217
合作者

我不太了解 remap 和/或 stdglue.py,但我觉得 INTERP_EXECUTE_FINISH 旨在在工具更改后引起“同步”,即确保清空已读队列并使用新工具数据重新计算。

我不认为我们在任何消息中看到实际错误发生的那一行。但我可能是错的。

重新映射的 m6 结束时出错 #217
作者
矮人 评论了 2016 年 12 月 10 日  

如果我理解正确,则该错误与重新执行 epilog 相关。
我将错误的出现追溯到文件 src/emc/rs274ngc/interp_o_word.cc 的提交

44377d8

当 python epilog 返回时INTERP_EXECUTE_FINISH

  • 将执行块调用类型设置为CT_REMAP以便下一个read()
    跳过,并且
  • 将控制权交还给任务。

下一次调用execute()将恢复 epilog 执行。

签字人:John Morris john@zultron.com

重新映射的 m6 结束时出错 #217
贡献者

@dhweizel感谢您报告此事。在 1 月之前,我很难抽出时间来查看此内容,但我会尽力的。非常抱歉,您一定不得不查看代码库中这个极其毛茸茸的部分!

重新映射的 m6 结束时出错 #217
作者

@zultron谢谢你快速的回复。我想补充一点,Andy 发现如果您只是打开 sim/remap/rack
toolchange 因为预览,错误会更容易显示。

代码非常复杂,但是各种不同的日志功能让我感到惊讶

重新映射的 m6 结束时出错 #217
贡献者

@dhwiezel,错误原来是在stdglue.py函数change_epilog()中,它没有正确地编写为 python 生成器函数。return INTERP_*您可以通过将所有行替换为来修复该功能yield INTERP_*,就像我在 PR #221中所做的那样(它应该在合并后立即自动关闭此问题)。

再次感谢您为追踪和报告此问题所做的辛勤工作。这使得重现和修复变得容易得多。

重新映射的 m6 结束时出错 #217
作者

好消息 !!!
很高兴我能提供帮助。