【问题标题】:How do I get Java to use the serial port in Linux?如何让 Java 在 Linux 中使用串口?
【发布时间】:2009-03-12 13:10:18
【问题描述】:

我们使用一个通过串行端口管理密码键盘的 java 应用程序。 这在带有 Sun Comm.jar、提供的 dll 和属性文件的 Windows 上完美运行。

现在我们正尝试在 Linux 上使用这个解决方案(实际上它确实可以在该领域的各种其他版本的 linux 上运行) - 使用 Ubuntu 服务器模式。

经过多次尝试——鲜血、汗水和几乎眼泪,我们得到了这样的场景:

Java 版本 1.4.2_17 Linux - Ubuntu Comm libs - 由 sun 提供并指定默认驱动程序的 Comm3

外部通讯测试显示通讯端口:/dev/ttyS0 和 /dev/ttyS1 但是java应用程序说无法打开端口/dev/ttyS1

(使用 RXRT 文件会产生无效端口错误)

有没有人能够在 linux 上使用 java 1.4.2 进行串口通信并找到我可以在我的场景中应用的解决方案?

非常感谢

菲尔

【问题讨论】:

  • 你确定java进程有权限打开/dev/ttyS[01]?
  • 错误是什么?我同意 Eugene 的观点,可能是权限
  • 这个问题有什么解决办法吗?我也有同样的错误。

标签: java linux serial-port


【解决方案1】:

我知道这是一个老问题,但我已经创建了一个 Java 包和本机库来允许串行端口读写,目前仅在同步模式下。

它是开源的,可在 GitHub 上获得:

j232 - Java 源代码

libj232 - j232 的原生库。

维基页面是here

请注意,这是一个仅限 Linux 的包和库。

【讨论】:

    【解决方案2】:

    确保您使用的是有权访问串行端口的用户。某些发行版将串口放在 uucp 组中,因此请确保用户属于该组。

    【讨论】:

      【解决方案3】:

      我已经有一段时间没有这样做了。我记得您不能只将 /dev/ttyS0 作​​为文件打开并对其进行 I/O。

      我记得 Sun IO jar 也有同样的问题。

      我记得解决方案是在 C 中创建一个小型命令行程序,将标准输入回显到串行端口,将串行端口回显到标准输出。然后,我从我的 java 进程中启动了这个程序。我没有代码,但是网上有很多关于写入 linux 串行端口的 c 程序的示例。

      【讨论】:

      • hmmm,我已经为在这方面寻求帮助的新西兰人提供了一个解决方案。但我需要等到明天(提前 11 小时),看看他们能不能到任何地方。然后我会把我的发现放在这里。谢谢人
      【解决方案4】:

      多年来,我们一直在 Windows 和 Linux 上使用 SerialIO 库进行 Java 串行通信,并取得了很好的成果(不,我不为他们工作 :-)):

      http://serialio.com/products/serialport/serialport.php

      不过,这些库不会自动检测 Linux 上的可用串行端口 - 您必须手动配置它们。

      【讨论】:

      • 嗨,托尼,我正在尝试在 Ubuntu 中配置 SerialIO。我为我的 ubuntu 64 位正确加载了本机库,但是当我尝试打开一个端口时,我得到 javax.comm.NoSuchPortException: /dev/ttyUSB0: not found in port list。但是该设备在那里,并且没有被任何其他应用程序使用。任何帮助将不胜感激。也许我可以提出一个你可以回答的问题?谢谢!
      • @DavidHofmann Oooof ...自从我从事这些工作以来已经有几年了 - 我什至不确定我是否还有代码:-(。我确实记得那个确切的问题,我 认为我必须手动将 /dev/tty/USB0: 添加到我 认为 将 USB 端口映射到串行端口的配置文件中。恐怕没有多大帮助:- (。我会四处寻找,看看我是否可以挖掘出原始代码。
      【解决方案5】:

      我们没有太大变化, 使用的库中没有任何内容。 但是在串口对象上移除 EventListener 的使用解决了这个问题。

      这实际上允许我们的代码在 linux(jre1.4.2、slackware 和 Suns Comm3 驱动程序)上运行,而这在 windows 上不是问题 - 奇怪。

      菲尔

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-16
        • 2016-12-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-06-11
        相关资源
        最近更新 更多