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 № 1Moż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