带有子程序文件的程序行计数器 #1694

推推 grbl 3年前 (2023-01-30) 289次浏览
打开
3 个任务中的第 1 个
grandixximo 打开了这个问题 2022 年 4 月 2 日 · 10 条评论
打开
3 个任务中的第 1 个

带有子程序文件的程序行计数器#1694

grandixximo 打开了这个问题 2022 年 4 月 2 日 · 10 条评论

注释

带有子程序文件的程序行计数器 #1694
格兰迪希莫 评论了 2022 年 4 月 2 日  

以下是我重现该问题所遵循的步骤:

1.Extract attached nc_files.zip to [DISPLAY] PROGRAM_PREFIX
2.run test.ngc 3.observe
program line counter

这是我期望发生的事情:

程序行计数器应该停留在子例程调用上,或者子例程应该加载到 UI 中并进行计数。

这是发生了什么:

计数器正在计算错误文件上的程序行数,它并没有真正执行 UI 代码预览中显示的行。

在此之前它工作正常:

绝不

有关我的硬件和软件的信息:

  • 我正在使用这个 Linux 发行版和版本(通常显示为lsb_release -a):Debian 10 Buster
  • 我正在使用这个内核版本(显示为uname -a):4.19.0-20-amd64
  • 我在跑步 …
    • 来自 linuxcnc.org 的二进制版本(包括 buildbot.linuxcnc.org)
    • 我自己构建的二进制文件
    • 来自 linuxcnc.org 之外的其他来源的二进制版本
  • 我正在使用这个 LinuxCNC 版本(显示在包管理器中,或者对于 git 版本,scripts/get-version-from-git):2.9.0-pre0-6210-g28d82b0a7
  • 我正在使用此用户界面 (GUI)(例如,AXIS、Touchy、gmoccapy 等):在 AXIS gmoccapy 和 Touchy 上测试
  • 我正在使用此接口硬件供应商和芯片组(例如,并行端口、以太网端口、FPGA 卡):sim

更多的是功能请求而不是错误。有兴趣知道这样的改变会有多难。我快速查看了代码,据我所知(不多),要获得正确的行为似乎相当复杂。

带有子程序文件的程序行计数器 #1694
成员

你能提供你的测试文件 test.ngc 吗?

带有子程序文件的程序行计数器 #1694
成员

好的,解释器发出“行已更改”信号,其中包含与当前文件对应的行,如果是外部子例程,它指向该文件但仍显示初始文件。
我有点奇怪,这以前没有打扰过任何人。

所以这里有两种可能性:

  • 在子程序中不要发出“换行”信号。但是因为我们不知道(我认为是)子例程是否在外部文件中,所以它永远不会显示子例程的行 –> 不太好。
  • 从外部文件调用子程序时也会发出“文件加载”信号

@robEllenberg @snowgoer540可能想在这里发表评论?

带有子程序文件的程序行计数器 #1694
合作者

它困扰了很多人,但没有人抽出时间来解决它。:-)

在某种程度上,这真的无关紧要。

但是,在执行其他文件的同时,只坐在子程序调用行或重新映射的 G 代码上会更优雅。
我不认为将子程序文件加载到预览窗口是值得的。

我认为解决这个问题的部分原因是它需要为每个 GUI 单独修复。

带有子程序文件的程序行计数器 #1694
成员

它困扰了很多人,但没有人抽出时间来解决它。:-)

处理这些信号似乎是一个很大的障碍……

但是,在执行其他文件的同时,只坐在子程序调用行或重新映射的 G 代码上会更优雅。

如果子例程在外部文件中,也许是。但是如果是在同一个文件里,不跳到那一行就很奇怪了。

我认为解决这个问题的部分原因是它需要为每个 GUI 单独修复。

很可能是。但理想情况下不会,因为他们已经对这个信号做出反应。

带有子程序文件的程序行计数器 #1694
合作者
c-莫利 评论了 2022 年 4 月 6 日  

这是一个已知的并且在某种程度上可以解决的问题。
可能不是行号,而是正在加载的子程序/重新映射文​​件。
基于 qtvcp/gladevcp 的屏幕使用 hal_glib 库来获取大多数状态信息。
在 hal_glib 中有这样一行:

        # Only update file if call level is 0, which
        # means we are not executing a subroutine/remap
        # This avoids emitting signals for bogus file names below
        if self.stat.call_level == 0:
            self.old['file']  = self.stat.file

我想我们可以为行号添加类似的内容。

正确的修复肯定需要一些思考。

带有子程序文件的程序行计数器 #1694

但是,在执行其他文件的同时,只坐在子程序调用行或重新映射的 G 代码上会更优雅。

我发现使用带有重新映射的 M6 的轴有问题,并希望它能做到这一点。

带有子程序文件的程序行计数器 #1694
成员

所以期望的行为是

  • 对于重新映射的命令:留在这一行
  • 对于子程序,要么留在这一行,要么在同一个文件中跳转到子程序

此外,仅在运动命令上更新行号的问题也与此有关。

我认为我们不能一直推迟。我会自愿深入研究这个问题,但我需要一些帮助。谁能支持我?至少让我知道口译员从哪里开始等等。

带有子程序文件的程序行计数器 #1694

不确定这有多相关,但它似乎说明了这个问题有多复杂:http ://wiki.linuxcnc.org/cgi-bin/wiki.pl?LineNumbers

带有子程序文件的程序行计数器 #1694
成员

这有点解释了为什么一直推迟?
谢谢。

免费注册 在 GitHub 上加入此对话。已有帐户? 登录评论
标签
还没有
项目

还没有

发展

没有分支机构或拉取请求

6人参加
带有子程序文件的程序行计数器 #1694带有子程序文件的程序行计数器 #1694带有子程序文件的程序行计数器 #1694带有子程序文件的程序行计数器 #1694带有子程序文件的程序行计数器 #1694带有子程序文件的程序行计数器 #1694

喜欢 (0)