2013-03-12 69 views
10

我有一个串口到USB设备,其中不止一个可以连接到电脑。我需要查询和检索设备连接到的COM端口列表。在Windows设备管理器中,您可以获得目前连接的设备的COM端口+友好名称。这个列表是动态的。如何从Java访问Windows设备管理器中的信息?

从注册表中读取did not work,因为存储的信息是陈旧和静态的,而不是动态的。

Devcon(来自微软)确实列出了设备连接的端口,但它不能在我的应用程序中使用,因为它不是可重新分配的。

任何想法或最好的解决方案?

+1

您知道如何读取和写入COM端口吗?在这里检查:http://www.java-samples.com/showtutorial.php?tutorialid=11(使用javax.comm包)。那么你可以简单地遍历所有的端口来找到你正在寻找的端口,不是吗? – Sebastian 2013-03-15 02:10:46

+0

@塞巴斯蒂安我不知道你是否仔细阅读了这个问题。 “...检索设备连接到的COM端口列表。” – likejiujitsu 2013-03-15 15:48:25

+0

我给你一个很好的解决方法 – Sebastian 2013-03-16 10:32:28

回答

0

我正在查看Java Native Access,因为它提供了从纯Java代码访问Windows API的权限 - 无需处理JNI。我很担心LGPL许可证;它是否可以包含在商业产品中,但是从新闻组的几篇文章中可以看出,它可以是。 我在接下来的几周内试用后,我会回到这里。

+0

你是否设法让它与JNA合作?能分享你的经验吗?我试图编写一个程序检测驱动器插入(热插拔),我想知道如果JNA可以有任何帮助。 TNX! – Martijn 2013-08-29 19:50:52

+0

这适用于Windows https://www.digitalinferno.com/wiki/Wiki.jsp?page=JNAPrintDevices(还不知道什么牌照) – ZiglioUK 2015-06-30 04:08:12

1

您是否试过jUSB APIThis example

我希望这会帮助你。

+0

感谢您的链接。我去了正义网站。看起来像弃用软件 - 自2001年以来没有任何更新。第二个链接是文件系统,而我并不是。 – likejiujitsu 2013-03-15 20:45:36

+0

似乎你仍然对此感兴趣,所以我会尝试一些我的自我然后我会让你知道.. :) – Patriks 2013-03-16 04:55:51

3

几周前我不得不解决类似的问题。我来到了Jawin-Project,它提供了使用WMI查询所需的一切。它已经很老了,但如果你按照文档的话,它就像一个魅力。一个不错的德国演练可以在codegods blog找到。对我来说,它并没有解决所有问题(我有一些非常具体的事情来找出有关目标设备),我最终创建了一个自己的JNI (Java Native Interface)类和DLL在C中结合了Windows API。

我希望这是您搜索的内容。

+0

谢谢。您访问过哪些Windows API部件以获取有关连接哪些设备的信息? – likejiujitsu 2013-03-19 16:19:51

+0

JNA似乎会更容易,但是LGPL https://github.com/twall/jna。我不确定它是否可以用于商业产品。 – likejiujitsu 2013-03-19 16:27:38

+0

2005年,我考虑了Jawin的另一个项目,它很难使用 - 它假定了Windows API和内部知识。在邮件列表上很难得到任何回应,并且似乎被放弃。最后,我使用了Vitaly Shelest的Java-COM桥接器NJawin,它似乎也被最终放弃了。但对于8年后的这个项目,我相信一定有更好的选择。对我而言,只有在更好的选项失败的情况下,JNI才能在C中调用DLL。 – likejiujitsu 2013-03-22 14:30:02

相关问题