RXTX не работает в Ubuntu

Наконец удалось прочитать из rxtx в Windows, но теперь я просто не могу заставить его работать в Ubuntu. Я получаю библиотеки rxtx с помощью apt-get, но когда я запускаю приложение, я ничего не вижу, попробовал пару блоков try-catch и я даже не получаю исключений, и поскольку отладка на основе Ubuntu пока невозможна, я не могу точно определить проблему. (Ubuntu 12.04 64 бит).

import gnu.io.*;
import java.io.*;
import javax.swing.JOptionPane;

public class ReadComPort {

    public static void main(String[] s) {
        readcomport();
    }

    public static String readcomport() {
        String value = null;

        try {
            // CommPortIdentifier portIdentifier = CommPortIdentifier
            // .getPortIdentifier("COM1");

            // String comportidentifier = "COM1"; //*win
            String comportidentifier = "/dev/ttyS0";

            CommPortIdentifier portIdentifier = null;
            portIdentifier = CommPortIdentifier.getPortIdentifier(comportidentifier);

            if (portIdentifier.isCurrentlyOwned()) {
                JOptionPane.showMessageDialog(null, "port in use");
            } else {

                SerialPort serialPort = (SerialPort) portIdentifier.open("ReadComPort", 500);
                JOptionPane.showMessageDialog(null, serialPort.getBaudRate());

                serialPort.setSerialPortParams(serialPort.getBaudRate(), SerialPort.DATABITS_8, SerialPort.STOPBITS_1,
                        SerialPort.PARITY_NONE);
                // serialPort.setFlowControlMode(SerialPort.FLOWCONTROL_RTSCTS_IN | SerialPort.FLOWCONTROL_RTSCTS_OUT);
                serialPort.setDTR(true);
                serialPort.setRTS(true);

                InputStream mInputFromPort = serialPort.getInputStream();

                Thread.sleep(500);
                byte mBytesIn[] = new byte[32];
                mInputFromPort.read(mBytesIn);

                value = new String(mBytesIn);

                mInputFromPort.close();
                serialPort.close();
            }
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null, "Exception : " + ex.getMessage());

        }

        return value;

    }
}

person Sin5k4    schedule 16.05.2012    source источник
comment
Вы добавили библиотеку rxtx в путь к классам. Я обнаружил, что вы не импортировали соответствующий класс в ваш java-файл.   -  person Mohamed Jameel    schedule 16.05.2012
comment
Файл RXTXcomm.jar добавлен в путь сборки...   -  person Sin5k4    schedule 17.05.2012


Ответы (2)


Проверьте, находится ли файл конфигурации javax.comm.properties в пути к классам. У меня были бесконечные проблемы с RXTX из-за этого файла - он просто молча терпит неудачу.

person mcfinnigan    schedule 16.05.2012
comment
эээ, не могу найти... Где он обычно находится? - person Sin5k4; 16.05.2012
comment
ах. Тогда скорее всего в этом дело. Проверьте здесь: pradnyanaik. wordpress.com/2009/04/07/ — вам, вероятно, потребуется найти где-нибудь пакет javax-comm, содержащий файл свойств - person mcfinnigan; 16.05.2012
comment
ОК, нашел файл rar, который содержит 3 файла, и один из них — файл .properties. Как его добавить? Из меню пути сборки/настройки пути сборки? - person Sin5k4; 16.05.2012
comment
Я полагаю, добавьте его в качестве ресурса проекта. - person mcfinnigan; 16.05.2012
comment
Пытался добавить его в ресурсы и в мои папки usr/jdk/... и все равно ничего, мэм :/ - person Sin5k4; 17.05.2012
comment
Теперь я получаю ошибку gnu.io.nosuchportexception. По крайней мере, он подает некоторые признаки жизни :) - person Sin5k4; 17.05.2012
comment
ха. да, это немного здоровее. Теперь вам, вероятно, просто нужно убедиться, что последовательные порты доступны пользователю, под которым работает ваш процесс :) - person mcfinnigan; 17.05.2012
comment
Обнаружена ошибка java.lang.UnsatisfiedLinkError: gnu.io.RXTXCommDriver.nativeGetVersion()Ljava/lang/String; при загрузке драйвера gnu.io.RXTXCommDriver grrrrrrrrr, серьезно, кто-нибудь здесь заставил эту штуку rxtx работать? - person Sin5k4; 17.05.2012
comment
Вы преуспели в своей проблеме? Я работаю над той же проблемой почти неделю. - person gkiko; 18.03.2014

Вчера у меня была та же проблема, и я нашел это:

String serialPortID = "/dev/ttyAMA0";
System.setProperty("gnu.io.rxtx.SerialPorts", serialPortID);

То есть вам нужно установить системное свойство gnu.io.rxtx.SerialPorts, и значением должно быть имя порта, который вы хотите открыть.

person Vidar S. Ramdal    schedule 12.11.2012
comment
Не могли бы вы указать, как установить системное свойство gnu.io.rxtx.SerialPorts? - person gkiko; 18.03.2014
comment
Вот что я делаю в коде: System.setProperty("gnu.io.rxtx.SerialPorts", serialPortID); - person Vidar S. Ramdal; 18.03.2014