【问题标题】:Javax.comm API on 64-bit Windows64 位 Windows 上的 Javax.comm API
【发布时间】:2011-04-26 23:04:57
【问题描述】:

我正在使用 javax.comm API 来帮助我的程序通过串行端口与硬件通信。我使用的是 Windows 7 和 NetBeans IDE 9。

我使用通用 Java 程序来检查我的 PC 上的可用端口。该程序编译并运行没有错误。然而它什么也没返回。

如何在 Windows 上使用 javax.comm API?看来 win32com.dll 不适用于 64 位操作系统。

【问题讨论】:

    标签: java windows-7 serial-port javax.comm


    【解决方案1】:

    这就是我让它工作的方式。
    我已经在我的 Windows 7 64 位机器上使用 JDK 1.6(32 位)对其进行了测试。

    1. 安装 32 位 JDK。
    2. 将“win32com.dll”复制到 JDK_HOME\jre\bin。
    3. 将“javax.comm.properties”复制到 JDK_HOME\jre\lib。
    4. 将“comm.jar”复制到 JDK_HOME\jre\lib\ext。

    现在运行你的程序,它应该可以工作了。

    【讨论】:

      【解决方案2】:

      RXTX 的最新 2.2pre 版本包括 64 位窗口的二进制文件。我认为最新的 RXTX 信息源已更改为:http://rxtx.qbang.org 而不是 http://www.rxtx.org

      RXTX 库曾一度包含对使用 javax.comm api 的直接支持。我不确定它是否仍然存在,但使用“本机”RXTX 包装的主要变化主要只是包名称的变化。

      【讨论】:

      • 你是说rxtx包和javax.comm有同样的类和方法吗?我不确定我是否可以使用与 javax.comm 上相同的程序。
      • 在旧版本的 RXTX 中,是的。您可以使用 Java COMM API 的 javax.comm 包和类,而 RXTX 是一个简单的插入式实现替代品。在较新版本的 RXTX 中,您需要将导入的包从“javax.comm.*”更改为“gnu.io.*”。除此之外,类和 API 可能 99% 相同。在此处比较两个 API:rxtx.qbang.org/wiki/index.php/Development
      【解决方案3】:

      win32com.dll 似乎不适用于 64 位操作系统

      我认为这是正确的。事实上,根据相关下载页面,Oracle 不再支持适用于任何 Windows 平台的javax.comm API。

      但是,我发现 this page 具有 64 位构建的 DLL 等等。

      编辑

      通过一项令人震惊的研究(即关注链接并阅读资料),我找到了最新 RXTX 的 download page,它声称拥有适用于各种平台的二进制文件。如果您的平台不存在,请尝试从源代码构建。如果这不起作用,请考虑投入努力使其发挥作用。

      【讨论】:

      【解决方案4】:

      我已将 RXTX 库集成到我早期的一些项目中,并且在 Windows 下使用 comm 端口时发现了这个错误,因此您可能需要先检查一下,然后再进行一些严肃的应用程序设计。 通信工作正常,从来没有任何问题,但是一旦您打开端口,您将无法关闭它并重新打开,如果您使用提供的关闭端口的方法,您的应用程序就会挂起,无一例外。后来我在网上发现了用户描述的相同行为,但从未真正找到解决此问题的方法。 同样,这可能会帮助您节省一些时间,请先检查一下。

      最新版本,即http://rxtx.qbang.org/pub/rxtx/rxtx-2.1-7-bins-r2.zip,不再存在此问题。不幸的是,我认为它仅适用于 Windows,它仍然存在于 Linux 二进制文件中,我还没有在 mac 上尝试过。

      【讨论】:

        【解决方案5】:

        你看过RXTX 吗?我认为它仍然处于活动状态。

        【讨论】:

        • 嗨,彼得,我有 RXTX,但我在如何使用它时遇到了问题。我希望我能得到一些使用 RXTX 的示例代码
        • 这里都解释了rxtx.qbang.org/wiki/index.php/Using_RXTX,你看了吗?
        【解决方案6】:

        我遇到了这个问题……在 64 位机器上……运行 Windows 7

        在 jdk 1.4 中开发的遗留应用程序,用于 32 位窗口...并使用 win32 comm api 二进制文件

        我尝试了 64 位的 RXTX 二进制文件,我能够在某种程度上与我的设备通信......但是......还有其他问题,因为我的应用程序引用了内部使用 comm 的 jpos 库版本-api(在某些 Serial...Listener 类中有 import javax.comm.*...)....

        我安装了 32 位 jdk 并按照此处的指示为 32 位窗口设置了 comm-api 二进制文件...setup comm api on windows

        后来一切都好

        【讨论】:

          【解决方案7】:

          您可能对我编写的替代库感兴趣:http://code.google.com/p/jperipheral/

          【讨论】:

            猜你喜欢
            • 2011-03-15
            • 2013-03-15
            • 2012-05-07
            • 2019-04-11
            • 1970-01-01
            • 1970-01-01
            • 2018-01-25
            • 2015-05-01
            • 1970-01-01
            相关资源
            最近更新 更多