/ / Jak określić numer tty - java, linux

Jak określić numer tty - java, linux

Mam urządzenie USB, które działa jako wirtualny port szeregowy. Chcę, żeby działało na Linuksie. Po podłączeniu urządzenia sterowniki Linux usb-to-serial i sterowniki tty znajdują go, a węzeł urządzenia / dev / ttyUSBx pojawia się. Do systemu można podłączyć kilka identycznych urządzeń. Piszę kod Java, który będzie musiał komunikować się z urządzeniami za pośrednictwem Biblioteka RXTX.

Chcę wiedzieć, które urządzenie odpowiadakonkretny węzeł tty. Jak mogę uzyskać te informacje w Javie? Myślę, że muszę stworzyć JNI z niezbędną funkcjonalnością, ale nie rozumiem łańcucha działań kodu C. Czy ktoś może pomóc znaleźć drogę?

Odpowiedzi:

0 dla odpowiedzi № 1

Możesz wykonywać polecenia powłoki bezpośrednio z Javy.

String[] command = new String[]{"/bin/sh", "-c", "find /sys/devices -name ttyUSB0 | grep -v "tty/tty"";
Process child = Runtime.getRuntime().exec(command);
BufferedReader br = new BufferedReader(new InputStreamReader(child.getInputStream()));
String line = input.readLine();
...

W ten sposób otrzymasz szczegóły połączenia węzła urządzenia w drzewie USB. Na przykład dostajesz:

/sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1:1.0/ttyUSB0

Następnie uzyskaj numer seryjny urządzenia, wykonując

cat /sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/serial

jednoznacznie zidentyfikować konkretne urządzenie według jego numeru seryjnego ftE2MLXP