【问题标题】:RXTX can't list port on ubuntuRXTX 无法在 ubuntu 上列出端口
【发布时间】:2013-03-20 19:49:10
【问题描述】:

我正在尝试运行简单的代码:

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;
import gnu.io.CommPortIdentifier; 
import gnu.io.SerialPort;
import gnu.io.SerialPortEvent; 
import gnu.io.SerialPortEventListener; 
import java.util.Enumeration;


public class SerialTest implements SerialPortEventListener {
SerialPort serialPort;
private BufferedReader input;
private OutputStream output;
private static final int TIME_OUT = 2000;
private static final int DATA_RATE = 9600;

public void initialize() {
CommPortIdentifier portId = null;
Enumeration portEnum = CommPortIdentifier.getPortIdentifiers();
while (portEnum.hasMoreElements()) {
CommPortIdentifier currPortId = (CommPortIdentifier) portEnum.nextElement();
System.out.println( "a " + currPortId.getName());
}
}

public synchronized void close() {
//...
}

public synchronized void serialEvent(SerialPortEvent oEvent) {
// ...
}

public static void main(String[] args) throws Exception {
SerialTest main = new SerialTest();
main.initialize();
}
}

它应该列出我系统中可用的 COM 端口。我正在尝试 3.2.0-39-generic #62-Ubuntu x86_64 x86_64 x86_64 GNU/Linux 和 Java 1.6

首先我从 apt-get 存储库安装了 RXTX,但经过一些麻烦后,我从源代码安装它,但它仍然无法正常工作。我在所有 ttyS* 上都设置了 chmod 777 以确保这与权限无关。
我尝试this 并没有帮助。

【问题讨论】:

    标签: java ubuntu serial-port rxtx


    【解决方案1】:

    您的类路径中也需要有 .so 文件。

    您可以从http://rxtx.qbang.org/wiki/index.php/Download 下载预构建的二进制文件,遗憾的是它们仅提供 32 位版本。

    如果您使用 Eclipse,您只需将 .so 文件放在项目的根目录中,它应该可以工作。如果这不起作用,您可以尝试设置 java.library.path VM 参数。相关说明可在How to set the java.library.path from Eclipse 获得

    【讨论】:

    • rxtx.qbang.org/wiki/index.php/Download -link failed :( 请上传新链接
    • 我正在使用带有 Xubuntu 14.04 - 64 位的计算机。我下载了 rxtx-2.1.-7-bins-r2.zip 然后解压。然后,我将 librxtxSerial.so 从 x86 和 64 位目录中放入,并将其复制到 jar 尝试使用 RXTX 所在的目录中。尽管如此,我仍然遇到 java-library-path 问题。
    【解决方案2】:

    我找到了 librxtxSerial.so library 的 64 位版本。我已经测试过了,它可以工作。

    下载此文件并将其复制到/usr/lib folder

    【讨论】: