注释
我不确定我是否理解🤔 您正在寻找的功能是使异步 例如,今天如果你想发送一个命令并找出该命令的结果,你需要实现并注册一个ControllerListener。 但是使用建议的UGSserial.writeConsoleCommand(“command”)它会阻止操作,等待并返回来自控制器的响应? |
啊 – 我明白我做了什么,那主要是我在写建议时的糟糕尝试,同时我过于关注可能性。 该功能归结为能够仅使用 UGS 的命令行界面对自定义微控制器挂件进行编程。这个想法源于 UNO 引脚已用尽,我不想将我的 Uno 更改为 Mega,而且我仍然想保留和使用 USG UI,因为它显示了所有可用的东西。 根据我的阅读,人们已经设法让 DIY 吊坠使用键盘仿真来工作,但似乎也有一个问题,那就是它都是单向通信,并且只有应用程序具有正确的焦点。我想如果有一个微处理器可以直接与命令行接口而不依赖于应用程序焦点,并且能够解析信息/机器状态的响应,我可以从吊坠中获得更多。(我知道我必须编写大量的响应解析逻辑。但我只有一组有限的按钮/开关我想添加,所以我知道这是一项可行的任务。 |
好的,所以你想使用串行通信与 UGS 集成,好主意。我现在没有时间处理这样的功能(也许其他人感兴趣?),所以与此同时我可以给你一些其他选择。 选项 1 – 使用“中间人”硬件,它将代理与控制器(即 GRBL)的所有通信,并发送自己的命令。即使它应该是可能的,也不是一个好主意。因为 UGS 试图跟踪所有发送的命令和收到的响应。如果它得到一堆“OK”响应,它不知道任何事情,UGS 内部就会变得混乱,并且可能会出现错误。 选项 2 – 使用现有的 REST/RPC API。它的文档有点缺乏,但如果您阅读代码,应该很容易理解。如果您激活 UGS 中的“Pendant”,它将开始收听网络电话。 选项 3 – 使用游戏手柄或操纵杆。这只允许单向通信,但可以与选项 2 结合使用。此选项的最大优点是它允许使用模拟控制。 |
感谢您的想法。 对于选项 2,这是否类似于该项目的实施方式?( https://discuss.inventables.com/t/prototype-ugs-pendant/47171/3 ) 感谢 REST/RPC 的链接。我今天会读那些。 对于选项 3,我可能会退回到游戏手柄的键盘模拟器。个人喜好比什么都重要,但我知道其他人更喜欢那种控制类型。 |
您还可以稍后利用 UGS 的通信来实施特殊逻辑,然后再将其支付给 GRBL 控制器。当时没有太大兴趣,但如果您想试验一下,我们不久前为 XLCD 添加了钩子: https ://github.com/winder/Universal-G-Code-Sender/blob/master/ugs -core/src/com/willwinder/universalgcodesender/XLCDCommunicator.java
|
“选项 2”是您链接的项目所使用的,UGS 中的 REST/RPC 服务今天比当时要好得多。这种方法将比中间人吊坠简单得多。
|
功能要求
只是一个插件的想法,它建议人们在需要时扩展其机器功能的方法。
建议使用一个插件,让您可以为微处理器选择一个 COM 端口,以与 G 代码 API 函数交互。我建议的初始用例是使用建议的串行连接来制作“花哨的”CNC 吊坠。它将避免键盘仿真器挂件解决方案带来的所有问题。(鼠标焦点、动作延迟、快捷方式规划等…)
相反,串行连接可以连接到 Arduino,后者将直接通过 API 发出命令。来自插件端的代码需要能够将发送的 Gcode 命令传递给机器并返回带有返回消息的回复。
来自微处理器串行连接的示例命令:
response = UGSserial.writeConsoleCommand(“$H”)
MachineStateParser(UGSserial.writeConsoleCommand(“$G”))
PositionParser(UGSserial.writeConsoleCommand(“?”))
通过这种方式,人们可以制作和编码他们自己的吊坠版本,并添加他们想要的任何按钮、滚轮和状态更改。当然,它类似于内置 UGS 吊坠的可用功能,但这将允许人们提出他们自己的(理想情况下可共享的)解决方案,并希望减轻您的一些开发负担,以提出一个通用的解决方案解决方案。