开源改变世界!!

Visualize Windows 不适用于 Raspbian / RaspberryPi #47

推推 grbl 2年前 (2023-01-25) 248次浏览
关闭
derFrickler 打开了这个问题 2013 年 2 月 14 日 · 21条评论
关闭

Visualize Windows 不适用于 Raspbian / RaspberryPi#47

derFrickler 打开了这个问题 2013 年 2 月 14 日 · 21条评论

注释

Visualize Windows 不适用于 Raspbian / RaspberryPi #47

刚刚尝试在我运行 raspbian 的 RaspberryPi 上运行新的 Visualizer Window 在
这里发现了一些问题。

首先,还需要 2 个用于 arm 平台的库,可以在 Processing 项目中找到:

gluegen-rt-natives-linux-armv6hf.jar
jogl-all-natives-linux-armv6hf.jar

添加此库后,UniversalGcodeSender 将编译并启动。

然后,如果我尝试通过 Visualize 按钮打开 Visualizer Windows,我会得到以下异常:

线程“AWT-EventQueue-0”中的异常 java.lang.ClassCastException:javax.media.nativewindow.DefaultGraphicsConfiguration 无法转换为 com.jogamp.nativewindow.awt.AWTGraphicsConfiguration
at javax.media.opengl.awt.GLCanvas.chooseGraphicsConfiguration(GLCanvas .java:1096)
在 javax.media.opengl.awt.GLCanvas.addNotify(GLCanvas.java:529)
在 java.awt.Container.addNotify(Container.java:2769)
在 javax.swing.JComponent.addNotify(JComponent. java:4734)
在 java.awt.Container.addNotify(Container.java:2769)
在 javax.swing.JComponent.addNotify(JComponent.java:4734)
在 java.awt.Container.addNotify(Container.java:2769)
在javax.swing.JComponent.addNotify(JComponent.java:4734)
在 javax.swing.JRootPane.addNotify(JRootPane.java:756)
在 java.awt.Container.addNotify(Container.java:2769)
在 java.awt.Window.addNotify(Window.java:770)
在 java.awt.Frame.addNotify(Frame.java:487)
在 java.awt。 Window.pack(Window.java:807)
在 com.willwinder.universalgcodesender.VisualizerWindow。(未知来源)
在 com.willwinder.universalgcodesender.MainWindow.visualizeButtonActionPerformed(未知来源)
在 com.willwinder.universalgcodesender.MainWindow.access$600(未知来源)
在 com.willwinder.universalgcodesender.MainWindow$8.actionPerformed(未知来源)
在 javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)

可能是 arm 平台上 jogl 的错误,我会尝试找出解决方法。

Visualize Windows 不适用于 Raspbian / RaspberryPi #47

刚刚确认 jogl 演示在 Raspberry 上运行良好

https://gist.github.com/xranby/55de4fd65bfadae26203

似乎是 GCodeSender 代码的问题…当我有时间时会尝试进入那个…

Visualize Windows 不适用于 Raspbian / RaspberryPi #47
所有者

感谢您查看这个。我也有兴趣找到一种方法来为 RP 包含 RXTX 库,但还没有弄清楚。

Visualize Windows 不适用于 Raspbian / RaspberryPi #47

嗯,那样就太好了。
如果我做对了,rxtx 库会将当前平台的匹配 librxtxSerial.so 复制到临时目录并从那里加载它。我认为您只需要将用于 armhf 的 librxtxSerial.so 添加到正确的 lib/natives 文件夹中。
问题是从哪里获得您的 RXTX 版本。raspbian中提供的比较新:

警告:RXTX 版本不匹配
Jar 版本 = RXTX-2.1-7
本机库版本 = RXTX-2.2pre2

Visualize Windows 不适用于 Raspbian / RaspberryPi #47

错了,不会那样工作。
将 armhf 的正确 librxtxSerial.so 复制到 /natives/armhf/ 目录
并在 build.xml 中创建一个新任务。那应该做的工作。

捆绑:OneJAR 正在准备 ${standalone.jar.name}-raspbian.jar

Visualize Windows 不适用于 Raspbian / RaspberryPi #47
将在接下来的几天尝试。

Visualize Windows 不适用于 Raspbian / RaspberryPi #47
所有者

lib 文件夹是我组织它们的方式,在 ant build.xml 中,它们被复制到导致名称冲突的同一位置。这就是为什么我使用单独的 32/64 位版本并且没有为 RP 添加新的 .so 的原因。

现在可以忽略 jar/native 不匹配警告(windows 构建一直不匹配),但无论如何应该在某个时候修复。

Visualize Windows 不适用于 Raspbian / RaspberryPi #47
所有者

build.xml 中有很多遗留目标,一体式构建以 -all 和 -all64 结尾

Visualize Windows 不适用于 Raspbian / RaspberryPi #47

是的,但为什么不为树莓派创建一个额外的目标,其中包含正确的 native-lib。
我刚刚通过邮件发送给你。

Visualize Windows 不适用于 Raspbian / RaspberryPi #47
所有者

我想我找到了一种将所有内容都集成到一个构建中的方法,适用于 windows/linux/macosx 和 RaspberryPi 的 32/64 位。

至于您在可视化窗口中发现的问题,看起来这里有一个解决方案:http:
//forum.jogamp.org/JME3-Unified-Renderer-Canvas-Use-Issue-td4028152.html#a4028168

使用 NEWT 而不是 AWT 的改变是我想做的事情,作为一种优化,所以这是一个很好的奖励。

Visualize Windows 不适用于 Raspbian / RaspberryPi #47

伟大的!
这已经在代码中了吗?

Visualize Windows 不适用于 Raspbian / RaspberryPi #47
所有者

Windows/linux/macosx 32/64 都在,RaspberryPi 所有需要更改的是将库添加到 /lib/natives/ 目录(不在文件夹中)。One-Jar 包仅限于从硬编码的文件夹名称中选择 windows/linux/macosx 本机库,但允许一个不在文件夹中的“默认”(可能是一个错误,但我愿意利用它)。

编辑:RP 还需要将可视化窗口更改为 NEWT,这还没有完成。

Visualize Windows 不适用于 Raspbian / RaspberryPi #47

尝试快速将 Visualizer 窗口转换为 NWT,更改编译正常并且似乎向前推进,但是存在未找到 arm jar 的问题,我确实将它们添加到 /lib 内的 jar 文件中……无法确定如何修复 jar 路径。这是所有更改后的例外情况(虽然不多)

[JarClassLoader] 信息:findResource() 找到:代码库 lib/gluegen-rt.jar 中的调用者为空的“com/jogamp/common/os/Platform.class”捕获的
FileNotFoundException:JAR 条目 lib/gluegen-rt-natives-linux- armv6.jar!/ 在 /home/pi/UGS/UniversalGcodeSender.jar 中找不到,而 TempJarCache.bootstrapNativeLib() of jar:file:/home/pi/UGS/UniversalGcodeSender%20.jar!/lib/gluegen-rt- natives-linux-armv6.jar!/ (file:/home/pi/UGS/UniversalGcodeSender%20.jar!/lib/ + gluegen-rt-natives-linux-armv6.jar)
[JarClassLoader] 信息:找到 findResource() : “jogamp/nativewindow/NWJNILibLoader.class” for caller null in codebase lib/jogl-all.jar
捕获 FileNotFoundException:JAR 条目 lib/jogl-all-natives-linux-armv6.jar!/ 在 /home/pi/UGS/UniversalGcodeSender .jar 中找不到,而 addNativeJarLibsImpl(classFromJavaJar 类 jogamp.nativewindow.NWJNILibLoader,classJarURL jar:文件: /home/pi/UGS/UniversalGcodeSender%20.jar!/lib/jogl-all.jar!/jogamp/nativewindow/NWJNILibLoader.class, nativeJarBaseName jogl-all): jogl-all-natives-linux-armv6.jar + 文件:/home/pi/UGS/UniversalGcodeSender%20.jar!/lib/ -> jar:文件:/home/pi/UGS/UniversalGcodeSender%20.jar!/lib/jogl-all-natives-linux-armv6.jar !/
[JarClassLoader] INFO: findResource() found: “jogamp/nativewindow/NWJNILibLoader.class” for caller null in codebase lib/jogl-all.jar
捕获 IOException: TempJarCache: addNativeLibs: jar:file:/home/pi/UGS/UniversalGcodeSender%20.jar!/lib/jogl-all-natives-linux-armv6.jar!/,之前的加载尝试失败,而 addNativeJarLibsImpl(classFromJavaJar类 jogamp.nativewindow.NWJNILibLoader,classJarURL jar:file:/home/pi/UGS/UniversalGcodeSender%20.jar!/lib/jogl-all.jar!/jogamp/nativewindow/NWJNILibLoader.class, nativeJarBaseName jogl-all): jogl -all-natives-linux-armv6.jar + 文件:/home/pi/UGS/UniversalGcodeSender%20.jar!/lib/ -> jar:文件:/home/pi/UGS/UniversalGcodeSender%20.jar!/lib /jogl-all-natives-linux-armv6.jar!/
[JarClassLoader] 信息:findResource() 发现:代码库 lib/jogl-all.jar 中调用者为空的“jogamp/nativewindow/NWJNILibLoader.class”
捕获 IOException: TempJarCache: addNativeLibs: jar:file:/home/pi/UGS/UniversalGcodeSender%20.jar!/lib/jogl-all-natives-linux-armv6.jar!/,之前的加载尝试失败,而 addNativeJarLibsImpl(classFromJavaJar类 jogamp.nativewindow.NWJNILibLoader,classJarURL jar:file:/home/pi/UGS/UniversalGcodeSender%20.jar!/lib/jogl-all.jar!/jogamp/nativewindow/NWJNILibLoader.class, nativeJarBaseName jogl-all): jogl -all-natives-linux-armv6.jar + 文件:/home/pi/UGS/UniversalGcodeSender%20.jar!/lib/ -> jar:文件:/home/pi/UGS/UniversalGcodeSender%20.jar!/lib /jogl-all-natives-linux-armv6.jar!/
BCM.Display initIDs ok
BCM.Screen initIDs ok
BCM.Window initIDs ok
线程“AWT-EventQueue-0”中的异常 java.lang.IllegalArgumentException:java.lang.IllegalArgumentException:尚未支持本机窗口类型 .bcm.vc.iv(自定义),平台报告本机窗口类型:.bcm.vc.iv
在 jogamp.nativewindow.NativeWindowFactoryImpl.getAWTNativeWindow(NativeWindowFactoryImpl.java:99)
在 jogamp.nativewindow.NativeWindowFactoryImpl.getNativeWindowImpl(NativeWindowFactoryImpl.java:65)
在 javax.media.nativewindow.NativeWindowFactory.getNativeWindow(NativeWindowFactory.java:477)
在 jogamp。 newt.awt.NewtFactoryAWT.getNativeWindow(NewtFactoryAWT.java:70)
在 com.jogamp.newt.awt.NewtCanvasAWT.reparentWindow(NewtCanvasAWT.java:428)
在 com.jogamp.newt.awt.NewtCanvasAWT.addNotify(NewtCanvasAWT.java: 391)
在 java.awt.Container.addNotify(Container.java:2769)
在 javax.swing.JComponent.addNotify(JComponent.java:4748)
在 java.awt.Container.addNotify(Container.java:2769)
在 javax.swing。 JComponent.addNotify(JComponent.java:4748)
在 java.awt.Container.addNotify(Container.java:2769)
在 javax.swing.JComponent.addNotify(JComponent.java:4748)
在 javax.swing.JRootPane.addNotify(JRootPane ) .java:757)
在 java.awt.Container.addNotify(Container.java:2769)
在 java.awt.Window.addNotify(Window.java:770)
在 java.awt.Frame.addNotify(Frame.java:487)
在 java.awt.Window.pack(Window.java:807)
在 com.willwinder.universalgcodesender.visualizer.VisualizerWindow.(VisualizerWindow.java:105)
在 com.willwinder.universalgcodesender.MainWindow.visualizeButtonActionPerformed(MainWindow.java:1187)
在 com.willwinder.universalgcodesender.MainWindow.access$700(MainWindow.java:62)
在 com.willwinder.universalgcodesender.MainWindow$9.actionPerformed(MainWindow.java :336)
在 javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)

Visualize Windows 不适用于 Raspbian / RaspberryPi #47
所有者

@samitray你在构建一个 UGS 包吗?我想知道 .jar 文件是否缺少本机库。

Visualize Windows 不适用于 Raspbian / RaspberryPi #47
所有者

@samitray另外,我没有使用本地 jar,当捆绑在 One-Jar 包中时,我无法让它们工作(得到与此处相同的错误)。/lib/natives/arm/ 目录中的二进制文件应包含所需的一切。我最终修补了 One-Jar 以查找那个 arm 目录,而不是修补 JOGL。

有关该问题的详细信息,请访问:http: //forum.jogamp.org/ZipException-when-loading-native-jars-td4027387.html

Visualize Windows 不适用于 Raspbian / RaspberryPi #47

将尝试修补 oneJar,但是进一步阅读 jogamp 论坛上的 NWT 问题让我相信可视化工具可能仍然无法工作,因为(必须查找链接)只有全帧缓冲区可以使用 xterminal 的任何东西在 Rpi 上尚不支持,但是我再试一次,让你知道。

Visualize Windows 不适用于 Raspbian / RaspberryPi #47

似乎在修复 RPi 上的“可视化”方面没有任何进展(四年内)。我会向愿意解决此问题的人捐赠一个 RPi 我还会向该项目捐赠 $$$ 以查看此问题是否得到解决!

Visualize Windows 不适用于 Raspbian / RaspberryPi #47

我会同意的

Visualize Windows 不适用于 Raspbian / RaspberryPi #47

将来有机会看到可视化工具在 RPI 上工作吗?

Visualize Windows 不适用于 Raspbian / RaspberryPi #47
三层石 评论了 2018 年 1 月 31 日  

@winder很想看到可视化工具也固定在 RPi 上!

Visualize Windows 不适用于 Raspbian / RaspberryPi #47

你好,请问RP – UGS -Plattform “visulize Window” Problem有解决的结果吗?我刚刚构建了一个 CNC 铣床(UGS 平台、Raspberry PI、带 GRBL 的 Arduino)。我可以在锉刀上使用 UGS,但在窗口中看不到铣削进度。只有当我连接而不是 RP 我的 windows-Notebook 时,visulize 窗口才能工作。

Visualize Windows 不适用于 Raspbian / RaspberryPi #47
佩洛维茨 评论了 2018 年 12 月 16 日 通过电子邮件
Visualize Windows 不适用于 Raspbian / RaspberryPi #47
合作者

终于让这个工作了。请参阅这些说明以使其在此处工作:https ://github.com/winder/Universal-G-Code-Sender/wiki/Raspberry-Pi