我有一个串口到USB设备,其中不止一个可以连接到电脑。我需要查询和检索设备连接到的COM端口列表。在Windows设备管理器中,您可以获得目前连接的设备的COM端口+友好名称。这个列表是动态的。如何从Java访问Windows设备管理器中的信息?
从注册表中读取did not work,因为存储的信息是陈旧和静态的,而不是动态的。
Devcon(来自微软)确实列出了设备连接的端口,但它不能在我的应用程序中使用,因为它不是可重新分配的。
任何想法或最好的解决方案?
我有一个串口到USB设备,其中不止一个可以连接到电脑。我需要查询和检索设备连接到的COM端口列表。在Windows设备管理器中,您可以获得目前连接的设备的COM端口+友好名称。这个列表是动态的。如何从Java访问Windows设备管理器中的信息?
从注册表中读取did not work,因为存储的信息是陈旧和静态的,而不是动态的。
Devcon(来自微软)确实列出了设备连接的端口,但它不能在我的应用程序中使用,因为它不是可重新分配的。
任何想法或最好的解决方案?
我正在查看Java Native Access,因为它提供了从纯Java代码访问Windows API的权限 - 无需处理JNI。我很担心LGPL许可证;它是否可以包含在商业产品中,但是从新闻组的几篇文章中可以看出,它可以是。 我在接下来的几周内试用后,我会回到这里。
您是否试过jUSB API或This example?
我希望这会帮助你。
感谢您的链接。我去了正义网站。看起来像弃用软件 - 自2001年以来没有任何更新。第二个链接是文件系统,而我并不是。 – likejiujitsu 2013-03-15 20:45:36
似乎你仍然对此感兴趣,所以我会尝试一些我的自我然后我会让你知道.. :) – Patriks 2013-03-16 04:55:51
几周前我不得不解决类似的问题。我来到了Jawin-Project,它提供了使用WMI查询所需的一切。它已经很老了,但如果你按照文档的话,它就像一个魅力。一个不错的德国演练可以在codegods blog找到。对我来说,它并没有解决所有问题(我有一些非常具体的事情来找出有关目标设备),我最终创建了一个自己的JNI (Java Native Interface)类和DLL在C中结合了Windows API。
我希望这是您搜索的内容。
谢谢。您访问过哪些Windows API部件以获取有关连接哪些设备的信息? – likejiujitsu 2013-03-19 16:19:51
JNA似乎会更容易,但是LGPL https://github.com/twall/jna。我不确定它是否可以用于商业产品。 – likejiujitsu 2013-03-19 16:27:38
2005年,我考虑了Jawin的另一个项目,它很难使用 - 它假定了Windows API和内部知识。在邮件列表上很难得到任何回应,并且似乎被放弃。最后,我使用了Vitaly Shelest的Java-COM桥接器NJawin,它似乎也被最终放弃了。但对于8年后的这个项目,我相信一定有更好的选择。对我而言,只有在更好的选项失败的情况下,JNI才能在C中调用DLL。 – likejiujitsu 2013-03-22 14:30:02
使用JNA(https://github.com/twall/jna)并看看下面的页面。这可能是一个有用的观点。
http://www.digitalinferno.com/wiki/Wiki.jsp?page=JNAPrintDevices
您知道如何读取和写入COM端口吗?在这里检查:http://www.java-samples.com/showtutorial.php?tutorialid=11(使用javax.comm包)。那么你可以简单地遍历所有的端口来找到你正在寻找的端口,不是吗? – Sebastian 2013-03-15 02:10:46
@塞巴斯蒂安我不知道你是否仔细阅读了这个问题。 “...检索设备连接到的COM端口列表。” – likejiujitsu 2013-03-15 15:48:25
我给你一个很好的解决方法 – Sebastian 2013-03-16 10:32:28