1

我正在使用 rxtx api 通过 com 端口从 GPS 设备读取数据。现在我通过读取配置文件并查找列出的端口来找到正确的 com 端口。我遇到的问题是,如果拔下设备,com 端口可能会改变,那么用户必须知道更改配置文件。我在 c# 中编写了一个与此类似的应用程序,并且能够列出 windows 设备名称而不是 com 端口,并且我循环浏览了 com 端口,直到设备名称与配置文件中的名称匹配。使用该方法,即使正在使用的 com 端口发生更改,配置文件中的任何内容也不必更改。有没有办法用 rxtx api 做到这一点?

提前致谢!

4

3 回答 3

1

如果有人有兴趣...

我在 C# 中创建了一个监视套接字的 Windows 服务。如果客户端连接到该套接字,则服务会收集端口名称和该端口上的设备 ID,并通过 com 端口以字符串形式发送数据,然后客户端可以解析字符串以获取所需的数据。

在我的情况正在传递的字符串是: “ACPI \ PNP0501 * PNP0501,COM1,PCI \ VEN_8086&DEV_29B7&SUBSYS_02111028&REV_02 PCI \ VEN_8086&DEV_29B7&SUBSYS_02111028 PCI \ VEN_8086&DEV_29B7&CC_070002 PCI \ VEN_8086&DEV_29B7&CC_0700,COM3,USB \ Vid_067b&Pid_2303&Rev_0400 USB \ Vid_067b&Pid_2303,COM5”

当我解析它时,我可以看到 ACPI\PNP0501 *PNP0501 是 COM 1 的设备 ID,COM​​3 有三个设备 ID,COM​​5 上有两个设备 ID。

这可能不是处理这个问题的最佳方法,但它足以满足我的需求,并且它使我免于 JNI。:)

于 2009-05-27T11:52:42.687 回答
0

CommPortIdentifier.getPortIdentifiers列出了系统中可供 Javacomm API 使用的所有端口。遍历它们以找到您的设备连接到的端口。

于 2009-05-20T06:31:51.780 回答
0

如果您想在 COM 端口上获取与设备关联的名称(特别是如果安装了驱动程序来提供它),您将不得不使用一些可怕的 Java->Native 接口来与 Windows 对话收集此信息的 API。C# 很好,因为这些信息被收集并提供给您,但在 Java 中,您必须执行此额外步骤。

Windows 函数发现可能会证明是有用的。我不确定究竟是什么 API 提供了这个功能。

于 2009-05-20T15:43:42.143 回答