Contact me: hankecnc@gmail.com

GCode 文件开始加载,导致程序挂起 #1905

推推 grbl 3年前 (2023-01-29) 390次浏览
关闭
tillig 打开了这个问题 2022 年 6 月 20 日 · 4条评论
关闭

GCode 文件开始加载,导致程序挂起#1905

tillig 打开了这个问题 2022 年 6 月 20 日 · 4条评论

注释

GCode 文件开始加载,导致程序挂起 #1905

版本

2.0.11

硬件/固件

GRBL 1.1

发生了什么

我试图加载 Fusion 360 为 CNC 路由器生成的 GCode 文件。该文件约为 28MB。我选择要加载的文件,但 UI 变得无响应。“文件夹”图标仍然突出显示,就好像我点击了它一样,但无法点击其他按钮。即使将 UI 单独放置 15 分钟以上,它也不会完成加载,也不会报告错误。

我认为这是一个内存问题,所以我编辑了ugsplatform.conf必须-J-Xms512m给它 512MB 的内存。我没有看到任何内存不足的迹象,但我也没有看到文件加载完成。日志中没有任何消息表明发生了什么。

我已经在两台不同的机器上尝试过这个 – Surface Book(Intel i7 2GHz)上的 Windows 11 和 Raspberry Pi 4 上的 Raspbian 10 Buster。两者都显示相同的结果。

GCode 文件开始加载,导致程序挂起 #1905

GCode 文件开始加载,导致程序挂起 #1905

如何重现

这是有问题的文件。要重现该问题,请从 UGS 打开它,就像您想将其发送到您的 CNC 机器一样。就是这样。

操作系统

Windows 11 专业版;Raspbian 10 克星

还要别的吗

我将包括messages.log来自 Raspberry Pi 的尾部,因为这是我拥有的 CNC 路由器的主要发送器,但 Windows 日志看起来相同。我看到Setting gcode file消息,它“预处理”并完成,然后说About to process {}日志以鼠标移动消息结束。此后,日志中不会显示任何错误或其他详细信息。

messages.log – 树莓派

我确实经历了一些问题,看看是否还有其他我可以调整的东西,但我找不到任何东西。我没有启用“Arc Expander”,不确定这是否重要。

我尝试了另一个相当大的 (~26MB) 文件,而那个文件也完全挂起了 Windows 和 Raspberry Pi 上的 UI。我能够毫无问题地加载较小的文件(~5-10MB)。这使得它看起来像是与文件大小相关(或者,我猜,更准确地说,与指令数量有关)。

可能不相关但有趣 – 在 Windows 上运行时ugsplatform64.exe,它似乎仍然在 32 位 JDK 下运行。

GCode 文件开始加载,导致程序挂起 #1905

GCode 文件开始加载,导致程序挂起 #1905
作者

我已经为此奋斗了几个小时,但我刚刚将内存调到 1024 (1GB),现在在 Raspberry Pi 版本上,文件会在……10 分钟后加载?在 Windows 上,系统会提示我是否真的要打开该文件,因为它太大,用户界面将变得无法使用。这可能是一个很好的提示,可以在较低的内存级别查看。?(如果我确实允许它完成加载,果然,我确实遇到了内存不足错误。)

在 Windows 上,我似乎无法为内存指定大于 about1500m的内存 – 我尝试打开 UGS,但在启动画面后它关闭了。在 1500 时,我的内存仍然不足。

有什么方法可以弄清楚是什么在吞噬所有内存并摆脱它?如果它是可视化工具,我可以以某种方式禁用它并释放内存吗?

GCode 文件开始加载,导致程序挂起 #1905
合作者

感谢您的详细报告!

我在一台相当旧的机器上的 MacOSX 上打开这个文件没有问题,尽管它需要大约 15 秒才能被解析。不同之处在于它使用 64 位 jdk,我可以看到它使用了将近 4Gb 的 ram(很多)…

我们在 Windows 上使用 32 位 JRE/JDK,以便用户更轻松地不用担心他们使用的是哪个操作系统。我们有人仍在运行 32 位 Windows XP。

GCode 文件开始加载,导致程序挂起 #1905
作者

很酷,我会试一试这些技巧。可能要过几天(我通常会在周末在 CNC 上玩)。我假设“打开 g 代码文件时显示编辑器”是您所说的“禁用编辑器”设置。我不记得我是否尝试在没有打开可视化工具选项卡的情况下打开文件。如果它没有打开,是否会跳过可视化计算/处理?再次感谢您的提示。

GCode 文件开始加载,导致程序挂起 #1905
作者

结果我已经禁用了编辑器,但关闭可视化窗口至少让文件加载到 Raspberry Pi 上,老实说,这是我的主要用例 – 我没有笔记本电脑,我可以在连接到 CNC 的同时它减少了几个小时。

我确实在加载过程中看到日志中有一个异常,不确定这是否是后果:

INFO [com.willwinder.universalgcodesender.model.GUIBackend]: Removing UGSEvent listener: RendererInputHandler
INFO [com.willwinder.ugs.nbm.visualizer.Visualizer2TopComponent]: Component closed, panel = AWT-GLJPanel[ drawableType null, chosenCaps null]
WARNING [org.openide.filesystems.Ordering]: Not all children in OptionsDialog/ marked with the position attribute: [UGS.instance], but some are: [Actions, Advanced, Appearance, Editor, Keywords, PreviewExamples, UGS, General.instance, Editor.instance, FontsAndColors.instance, Keymaps.instance, Appearance.instance, Advanced.instance]
INFO [com.willwinder.universalgcodesender.model.GUIBackend]: Setting gcode file.
INFO [com.willwinder.universalgcodesender.model.GUIBackend]: Start preprocessing
INFO [com.willwinder.universalgcodesender.model.GUIBackend]: Preprocessing /home/pi/share/MACUSA Before Smoothing/2 - 2 End Mill - Finishing.nc to /tmp/1656266331447-0/2 - 2 End Mill - Finishing.nc_ugs_1656266331448
INFO [com.willwinder.universalgcodesender.model.GUIBackend]: Took 260572ms to preprocess
INFO [com.willwinder.universalgcodesender.model.GUIBackend]: Getting processed gcode file.
INFO [null]: Last record repeated again.
WARNING [org.netbeans.core.TimableEventQueue]: too much time in AWT thread null
SEVERE [global]
java.lang.NullPointerException
	at com.willwinder.ugs.nbp.core.actions.OpenAction.actionPerformed(OpenAction.java:95)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
	at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:290)
	at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:289)
	at java.awt.Component.processMouseEvent(Component.java:6539)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
	at java.awt.Component.processEvent(Component.java:6304)
	at java.awt.Container.processEvent(Container.java:2239)
	at java.awt.Component.dispatchEventImpl(Component.java:4889)
	at java.awt.Container.dispatchEventImpl(Container.java:2297)
	at java.awt.Component.dispatchEvent(Component.java:4711)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4904)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4535)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4476)
	at java.awt.Container.dispatchEventImpl(Container.java:2283)
	at java.awt.Window.dispatchEventImpl(Window.java:2746)
	at java.awt.Component.dispatchEvent(Component.java:4711)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760)
	at java.awt.EventQueue.access$500(EventQueue.java:97)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.awt.EventQueue$3.run(EventQueue.java:703)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84)
	at java.awt.EventQueue$4.run(EventQueue.java:733)
	at java.awt.EventQueue$4.run(EventQueue.java:731)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:730)
	at org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:136)
[catch] at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
INFO [org.netbeans.core.ui.focus]: External Changes Refresh on focus gain disabled
INFO [com.willwinder.universalgcodesender.model.GUIBackend]: Adding UGSEvent listener: OutlineAction
INFO [com.willwinder.universalgcodesender.model.GUIBackend]: Getting processed gcode file.
INFO [null]: Last record repeated again.

加载后,我尝试打开可视化工具看看会发生什么。过了一会儿,可视化窗口打开了,但它从未真正显示渲染过的预览——它只是带有 CNC 铣刀位置的网格。我猜它用完了内存并放弃了。我没有在日志中看到任何关于它的信息。它输出一条消息“初始化 OpenGL 上下文”,仅此而已。

无论如何,在这些情况下,关闭可视化工具似乎是我的答案。

我想知道是否值得在底部的故障排除页面上添加一些关于禁用编辑器和/或可视化工具的内容,它讨论了增加可用内存的问题。