开源改变世界!!

加载程序会更改可选的停止设置 #116

推推 grbl 2年前 (2023-01-29) 285次浏览
关闭
gmoccapy 打开了这个问题 2016 年 7 月 23 日 · 2 条评论
关闭

加载程序会更改可选的停止设置#116

gmoccapy 打开了这个问题 2016 年 7 月 23 日 · 2 条评论

注释

加载程序会更改可选的停止设置 #116
合作者
gmoccapy 评论了 2016 年 7 月 23 日  

你好,

发现另一个奇怪的行为:

  • 启动 sim/axis_mm.ini
  • 启动 hal show 并观看 halui.program.optional-stop.is-on(
    这里默认开启)
  • 按下可选的停止按钮(pin 现在应该是 False)
  • 加载您选择的程序(即 arcspiral.ngc)
  • 看到halui pin,变了

据我测试,每次加载新程序时都会发生这种情况(模式
更改为模式 2)。

恕我直言,这是不正确的,应该可以随时
在任何运动模式下设置 optional_stops 并且设置应
保持设置,直到用户更改它。

不仅影响轴,还影响 gmoccapy 并且可能是其他 GUI

诺伯特

加载程序会更改可选的停止设置 #116
成员

我使用 gdb 找到可选停止被设置回 true 的位置。它发生在任务正在处理 EMC_TASK_PLAN_INIT 类型的消息时

Hardware watchpoint 3: *$1

Old value = false
New value = true
(gdb) where
#0  INIT_CANON () at emc/task/emccanon.cc:2474
#1  0x00007f712c3ee65a in Interp::init (this=0x11b8c50)
    at emc/rs274ngc/rs274ngc_pre.cc:814
#2  0x0000000000413bca in emcTaskPlanInit () at emc/task/emctask.cc:440
#3  0x000000000041e77f in emcTaskIssueCommand (cmd=0x118d7f0)
    at emc/task/emctaskmain.cc:2301
#4  0x0000000000411993 in emcTaskPlan () at emc/task/emctaskmain.cc:1228
#5  main (argc=<optimized out>, argv=<optimized out>)
    at emc/task/emctaskmain.cc:3309

所有使用 Python linuxcnc 模块的 UI 最近都通过向 program_open 添加对 reset_interpreter 的调用来更改其行为。在我进行此更改时,我没有意识到它的后果(请参阅提交27d3822):

static PyObject *reset_interpreter(pyCommandChannel *s, PyObject *o) {
    EMC_TASK_PLAN_INIT m;
    emcSendCommand(s, m);
    Py_INCREF(Py_None);
    return Py_None;
}

static PyObject *program_open(pyCommandChannel *s, PyObject *o) {
    if(!reset_interpreter(s, o))
        return NULL;

    EMC_TASK_PLAN_OPEN m;
    char *file;
    int len;

    if(!PyArg_ParseTuple(o, "s#", &file, &len)) return NULL;
    if(unsigned(len) > sizeof(m.file) - 1) {
        PyErr_Format(PyExc_ValueError, "File name limited to %zu characters", sizeof(m.file) - 1);
        return NULL;
    }
    strcpy(m.file, file);
    emcSendCommand(s, m);
    Py_INCREF(Py_None);
    return Py_None;
}