注释
Netbeans v7.2.1。如果您想将 smoothie 与 UGS 完全结合,您应该首先创建一个扩展 GrblController 的类 SmoothieController,然后是扩展 GrblController 或 AbstractController 的 SmoothieCommunicator。然后出于测试目的,在 MainWindow.java 中将控制器类从 GrblController 更改为 SmoothieController,将来会有一个下拉菜单来选择要使用的控制器类。 |
行。我已经安装了 NetBeans。 |
我在 GrblController 上添加了一些方法
|
我已经设法将一个 gcode 文件发送到冰沙板,但在 3 次之后,我遇到了一个严重的错误: 线程“AWT-EventQueue-0”中的异常 java.lang.ArrayIndexOutOfBoundsException:-1 可能是冰沙在收到命令后必须用其他字符串回答? |
GrblController 中的许多内容最终将移至 AbstractController 类中,这将简化您所看到的许多问题。使这些公共访问器成为一个很好的中止之门,直到我到达那里。 除了初始化新的 SmoothieController 类之外,您根本不需要修改 GUI。当控制器类没有以正确的顺序发送事件,或者由于某种原因控制器的队列损坏(丢失命令号)时,您看到的异常就会发生。每个命令都需要发送事件(这就是所有“dispatch*”静态方法正在做的事情)。在我的脑海中,每个命令都必须是:
控制器类负责跟踪正在排队/发送/完成的命令。目前,我使用 3 个列表(outgoingQueue、awaitingResponseQueue 和 completedCommandList)执行此操作,当其中一个事件发生时,命令从一个列表中取出,并附加到下一个列表。 最终我希望将这些东西放入抽象类中,以便其中的大部分自动发生,但在那之前要做到正确可能有点棘手。 |
感谢您记录/解释 UGS 的工作方式。 不幸的是,Smoothie 在命令处理方面有不同的方法:我已经与 Smoothie 的主要开发人员讨论过,他告诉我:
这些让我得出结论,在 UGS 上需要一些重要的改变:
另一个想法是对 smoothie 添加一些更改以更像 grbl。 你能提供一些指导吗? 亲切的问候, |
嗨丹尼尔, 我很乐意根据您的需要提供帮助,如果您的更改在公共存储库中,我可以对其进行审核。 修改 smoothie 为每个完成的命令发送一个“ok”将使 GUI 可以有效地保持缓冲区满,或者至少在“ok”之后附加一些空闲字节。我真的没有看到另一种方式,我们可以通过假设“ok”意味着发送 X 个字节的命令来使用它。也许 Smoothie 有一个如此大的缓冲区,以至于有效地填充缓冲区成为一个有争议的问题,并且像这样成批发送数据足以让计划者忙碌。 如果在 smoothie 发送“ok”时剩余空间有一个定义的阈值,那么您应该能够从活动字符串列表中查看/弹出命令,直到释放那么多字节的数据。这将在 SmoothieCommunicator.java 中完成,在“responseMessage”事件中,您只需要更新“isOkErrorResponse”事件以删除多个命令而不是一个。 Smoothie 开发人员是否建议应如何保持缓冲区满? -将要 |
嗨,威尔, 关于公共存储库 – 我对这些一无所知。请给我一个指向一些文档的指针,当然我会发布我所有的更改。 经过数小时的努力,我已经让 UGS 将完整的文件发送给 smoothie:
在 较早的更改使 UGS 能够将完整的文件发送到 smoothie。 请告诉我,您是否不时发送“?” 命令登机?此命令未在 smoothie 中实现。 BR, |
@dandumit凉爽的!恭喜您发送了完整的文件。 我想我明白你所说的“确定”消息是什么意思,基本上它可能意味着完成了多个命令,而不是像我的代码假设的那样只完成一个命令。 我实际上并没有提出 github 拉取请求,但是这里有一些文档:https ://help.github.com/articles/using-pull-requests 当我重构 AbstractController 时,我将使行终止符像 AbstractCommunicator 一样可配置。 你是对的“?” 命令,是GRBL获取当前机器状态的状态命令。不过,我认为它不应该在 Smoothie 上看到它,因为除非收到 GRBL 版本字符串,否则它不会打开。 |
@dandumit我刚刚添加了一个用于选择固件的组合框。您应该能够将新类添加到 FirmwareUtils.java 并对其进行初始化。 |
我刚刚完成了制作 AbstractController 的第一步。我还制作了一个扩展“AbstractCommunicator”并执行一般 RXTX 操作的“AbstractSerialCommunicator”。 可能还有一些东西可以使界面更易于使用,但目前我认为可以通过仅实现 Communicator/Controller 对象并在固件下拉列表中添加一个条目来添加其他固件。 |
抱歉旷工。我在 Smoothie 中添加了更多功能,使其与 grbl 更兼容,从而与 UGS 更兼容 |
大家好,
我正在尝试将 Universal G Code Sender 与 smoothie(GRBL 的 cortex M3 端口)一起使用,当我尝试发送文件时,我收到此“java.lang.Exception:Grbl 尚未完成启动。”。看来思慕雪应该用什么来回答了。
您能否向我详细说明我应该使用什么 IDE 来编译 Universal-G-Code-Sender。我想调试这种情况。
兄弟,
丹尼尔