开源改变世界!!

操纵杆配置问题? #1410

推推 grbl 2年前 (2023-01-28) 212次浏览
关闭
Darren-Smithe 打开了这个问题 2020 年 6 月 19 日 · 7 条评论 · 由#1413修复
关闭

操纵杆配置问题?#1410

Darren-Smithe 打开了这个问题 2020 年 6 月 19 日 · 7 条评论 · 由#1413修复

注释

操纵杆配置问题? #1410

Hi, loving the joystick implementation…all worked great on first try, but when selecting a new action to assign to a button, the list of available options seems strangely limited.

例如,有编辑宏的选项,但没有运行任何预定义宏的选项。

我想使用标有按钮的字母来更改步长,以便可以使用方向键对位置进行非常精细的调整,但选项似乎不存在,这是一个错误吗?

除非按下另一个按钮,否则最好防止任何操作(例如,除非当前按下特定的肩部按钮,否则操纵杆不会执行任何操作)。如果控制器掉落,这将是防止出现问题的理想选择!不过,我可以理解这是否更像是一个功能请求:)

感谢提供如此出色的功能,我只是想知道是否错误地列出了按钮配置选项。希望选项的图像可以上传……

UGS 平台 2.0 – 每晚构建 2020 年 4 月 25 日
Windows 10
GRBL 1.1f

操纵杆配置问题? #1410

操纵杆配置问题? #1410
合作者

这似乎不正确。我无法重现它,但看起来它没有发现所有动作类别。
我需要做更多的测试。

“死人开关”是个好主意,我会考虑一下。

操纵杆配置问题? #1410 布雷勒 补充说 漏洞 标签 2020 年 6 月 22 日
操纵杆配置问题? #1410

谢谢乔阿西姆。我以前从未深入研究过 Java,所以我想我应该下载 IDE,看看它是否是 Windows 10 特定的东西……据我所知,没有这样的运气!

问题似乎出在函数 recursiveAddCategoryActions 中。
在初始调用时,文件对象解析(在我的开发设置中)为:

C:\ugs\Universal-G-Code-Sender-master\ugs-platform\application\target\userdir\config\Actions

该目录包含三个子目录(Machine、Macro 和 Overrides)。

当 recursiveAddCategoryActions 第一次调用 getChildren() 时,我期待看到提到的三个子目录,但它返回的是这三个目录加上 13 个其他目录。我对 getChildren() 进行了一些研究,它似乎正在使用一个覆盖的虚拟文件系统……我不知道这是否是预期的行为?!!?!

我会继续看,但不是 Java 程序员可能会导致我得出错误的结论 :)

操纵杆配置问题? #1410

前提是即使列表中有很多意想不到的目录,我希望看到的目录也在那里……因此它至少应该提供我期望的选项。我查看了 getActionFromFileObject 函数,它似乎抛出了相当多的异常,并且操纵杆配置中缺少这种功能。我将附上屏幕截图并将其留在那里,因为我不确定我是否在提供帮助!
操纵杆配置问题? #1410

操纵杆配置问题? #1410
合作者

感谢您调试这个!

我现在没有时间研究这个,但这些都是很好的线索。=)

操纵杆配置问题? #1410

嗨 Joacim,我相信我已经找到了答案,尽管我不知道修复它的“正确”方法。

“ActionRegistrationService”类创建一个名为“actionCache”的操作引用缓存。这个缓存是在许多动作类被实例化之前创建的,这意味着它们从缓存中被省略(尝试将它们添加到缓存会抛出异常)。操纵杆配置屏幕调用返回不完整的 actionCache 的类别动作信息(函数 getCategoryActions)。我已经通过更改 getCategoryActions 以引用仅在第一次调用 getCategoryActions 时创建的新缓存来证明这一点。菜单选项现在看起来符合预期。

上面显然不是一个完整的修复,因为在类的另一个函数中使用了 actionCache,这可能会产生我没有见过的问题。我对 Java 了解不够,无法在创建 actionCache 之前强制类实例化,或者对应用程序结构了解不够,无法将 actionCache 创建移至更好的位置。

我会测试看看我的解决方法是否能在短期内为我解决问题,并希望我的 Java 学习经验对您有所帮助,或者将为我们的 Windows 用户提供修复。

再次感谢出色的操纵杆功能!

一切顺利,
达伦

操纵杆配置问题? #1410
合作者

优秀作品!

看看这一行:https ://github.com/winder/Universal-G-Code-Sender/blob/master/ugs-platform/ugs-platform-ugslib/src/main/java/com/willwinder/ugs /nbp/lib/services/ActionRegistrationService.java#L45

此行将尝试在加载类时加载操作,而不是在使用和实例化操作服务时加载操作。该类很可能在所有操作之前加载。

初始化应移至可以解决问题的构造函数:

private Map<String, List<ActionReference>> actionCache;

public ActionRegistrationService() {
    actionCache = initCategoryActions();
}
操纵杆配置问题? #1410

不幸的是,我已经尝试过了,但没有解决问题:(

缓存构建仍然会为大多数操作类抛出“NoSuchMethodException”,导致缓存中缺少许多项目。