注释
这听起来超级容易修复。Appart 从引导消息来看,Smoothie 应该主要与 GRBL 兼容…… |
如果您取消注释FirmwareUtils中的 TinyG 行,TinyG 插件可能适用于 Smoothie。这里的“插件”模型从未完全开发过,但大部分架构更改在我筋疲力尽之前就已完成。 |
请有人介意取消注释 Smoothie(第 41 行)行并为我编译一个测试版本。我没有安装 NetBeans,愿意对此进行测试并报告 |
午餐时我有一些空闲时间,所以我想试试这个。我在 MAC OS X 上,克隆了项目,安装了 NetBeans,并尝试构建(未注释该行)。没有走得太远,所以我想我会发布这个以防您看到它并快速回答缺少的内容。
|
仅供参考,如果我下载 1.0.8 版,它将编译无误,但 TinyG 没有成功发出任何命令。有趣的是,可视化工具也不起作用(在其他版本上对我也不起作用)。 如果我切换到边缘分支,可视化工具和编译工作,但 TinyG 也不起作用。 看起来需要做更多的工作来支持除 GRBL 之外的任何东西的不同响应和设置。 也许更好的第一个测试是编辑代码以寻找 Smoothie 响应并接受它以及 GRBL 0.8/0.9 响应? |
@GeorgeIoak你是绝对正确的。如果您看一下此处,您会发现 Smoothie 根本没有实现。您还可以看到用于在不同 gcode 类型之间切换的模式设置。就像您建议的那样-一种支持不同响应和设置的方法!很多跑腿工作已经完成,我只是没有时间为我的 TinyG 设置电子设备并修复错误。这项工作将在TinyGCommunicator和TinyGController中完成。对于 Smoothie,将创建另外两个文件来实现这些接口。 |
@winder我确实进行了快速更改并绕过了版本检查,只是为了确认我可以运行一个文件。好消息是我能够开始工作,但坏消息是工作在同一个地方停了 2 次,大约 1/2 次(我认为是 1150/2249)。它在 (G3) 上停止的代码在作业的早期已经成功运行,所以我不确定它为什么会在这里停止。 我认为 Smoothie 比 TinyG 更容易,因为我认为 Smoothie 是 GRBL 的直接端口,而 TinyG 是 GRBL 的分支。我可能是错的,所以不要引用我的话! 没有可视化工具工作有点令人失望,我找到了一些线索来尝试让它工作但还没有成功。一旦我得到一份成功运行的工作,我就可以帮助创建和测试 SmoothieCommunicator 和 SmoothieController。 |
嘿。 Smoothie 目前有一个 G3 问题,所以这可能不是 这听起来确实像是让 Smoothie 与 UGS 一起工作:) 干杯。 2015 年 2 月 28 日星期六凌晨 2:32,George Ioakimedes < notifications@github.com
Courage et bonne humeur。 |
我将不得不跳转到 Smoothie 论坛并研究这个问题。该代码昨晚使用 Pronterface 确实运行了一次,但这可能是抽签的运气,因为我认为我之前已经测试过它但它也失败了。作为参考,我正在试验的文件可以在此处查看。 是的,UGS 和 Smoothie 一起工作。我主要是一名硬件设计人员,所以编码对我来说并不是天生的,但我将开始研究如何正式获得 Smoothie 支持。我只是碰巧用 Mac 进行测试,所以可能会引发其他一些问题。 |
@GeorgeIoak刚遇到同样的错误。替换了代码片段(因为包含的 Point3d 没有 .getX()): public void updateSystemState(SystemStateBean systemStateBean) {
logger.log(Level.INFO, "Getting system state 'updateSystemState'");
double[] mp = new double[3];
this.machineCoord.get(mp);
double[] wp = new double[3];
this.machineCoord.get(wp);
systemStateBean.setFileName(gcodeFile.getAbsolutePath());
systemStateBean.setLatestComment(lastComment);
systemStateBean.setActiveState(activeState);
systemStateBean.setControlState(controlState);
systemStateBean.setDuration(String.valueOf(this.getSendDuration()));
systemStateBean.setEstimatedTimeRemaining(String.valueOf(this.getSendRemainingDuration()));
systemStateBean.setMachineX(Utils.formatter.format(mp[0]));
systemStateBean.setMachineY(Utils.formatter.format(mp[1]));
systemStateBean.setMachineZ(Utils.formatter.format(mp[2]));
systemStateBean.setRemainingRows(String.valueOf(this.getNumRemainingRows()));
systemStateBean.setRowsInFile(String.valueOf(this.getNumRows()));
systemStateBean.setSentRows(String.valueOf(this.getNumSentRows()));
systemStateBean.setWorkX(Utils.formatter.format(wp[0]));
systemStateBean.setWorkY(Utils.formatter.format(wp[1]));
systemStateBean.setWorkZ(Utils.formatter.format(wp[2]));
systemStateBean.setSendButtonText(openCloseButtonText);
systemStateBean.setSendButtonEnabled(openCloseButtonEnabled);
systemStateBean.setPauseResumeButtonText(pauseButtonText);
systemStateBean.setPauseResumeButtonEnabled(this.canPause());
systemStateBean.setCancelButtonText(cancelButtonText);
systemStateBean.setCancelButtonEnabled(this.canCancel());
}
现在代码执行时没有错误。 |
今天我的邮箱里应该有一个 SmoothieBoard!我是一名拥有 15 年以上经验的专业 Java 开发人员。我主要使用 J2SE 进行销售点自动化和控制系统开发。我做了一些企业/网络的东西有一段时间了,但已经好几年了。 我非常有兴趣帮助它与 Smoothie 一起使用。 是否有任何代码用于 Smoothie 支持?如果不是,我怎样才能得到到目前为止已经实施的内容来帮助解决这个问题? 肯 |
有一个用于添加额外控制器的 API。目前只有 GRBL 和几乎完整的 TinyG 实现。您使用 Java 的时间比我长,所以我很想听听您的意见。 这是后端如何实现的高级概述: 添加完整的 smoothie 支持应该不错,这可能只是扩展 GRBL 控制器类并重新实现几个在 smoothie 中处理不同的功能(即版本检查)的问题。 |
感谢您提供概述链接。稍后我会看一下并熟悉一下。我使用 Eclipse 多年,对 NetBeans 的经验很少。我需要下载 NB 才能继续。 肯 |
我一直在努力让 Smoothie board 正常工作。似乎在连接时,Universal Gcode 发件人没有收到“Smoothie”问候消息。如果我通过将“isReady”设置为“true”来强制它,我可以让它至少允许我发送命令,但每次我都会遇到与#214中提到的计时问题相同的错误 另一件有趣的事情是,如果我使用串行终端连接到 smoothieboard,我会收到问候消息,但如果我连接到通用 Gcode 发送器,关闭连接,然后尝试串行终端,我不再收到问候消息,但我可以发送命令并接收回复。 我在 2015 年 1 月 15 日和 6 月 21 日尝试了 Smoothie 固件 |
嘿。 这听起来确实像是 Windows 串行驱动程序部分的一些奇怪之处,我 您可以做的一件事:不是仅仅“等待”Smoothie 说 关于“ok”,我不知道那里发生了什么……也许它 干杯。 在 2015 年 6 月 25 日星期四上午 7:50,morrowsend notifications@github.com
Courage et bonne humeur。 |
@morrowsend听起来你走在正确的轨道上。GRBL/Arduino 在通过 USB 连接时会自行重启,听起来 Smoothie 可能没有此功能。实际上,我一直在考虑 UGS 是否也应该将其用于 GRBL。像 Arthur 的建议这样的东西是伟大的第一步,AbstractController 中有一个名为“openCommAfterEvent”的函数,您可以实现它以在您的控制器中发送“版本”。 我最近制作了一个简单的流媒体程序来测试一些通信更改,您可以考虑在解决这些奇怪的串行问题时关闭该项目。 最后…对此感到抱歉,但我最近对 AbstractController 类进行了一系列优化,可能会有一些合并冲突。您应该取消这些更改,因为它们修复了 AbstractController 的一些基本问题(它过于复杂、缓慢、存在并发问题等)。 |
所有帮助我解决这个问题的好主意。多谢你们!winder,我昨晚分叉了它,这样我就可以随心所欲地破解它(比如 12 小时前从这篇文章开始的)所以我假设最新的变化是在那个时候实施的。不过,我将查看 AbstractController 类是否有任何不同以确保。 |
After playing a bit with it today, I still haven’t made progress, but here’s what I tried playing around with the openCommAfterEvent method in Abstract Controller: |
当我尝试将 Universal GCode Sender 与运行 Smoothieware 的新 Shapeoko 一起使用时,我得到了这个;
**** 连接到 COM10 @ 9600 波特 ****
Smoothie
[详细][错误] 处理响应时出错:尝试完成不存在的命令:<(-1)>ok
然后,如果我尝试发送 gcode,我会收到
“启动文件流时出错:Grbl 尚未完成启动”