Имам USB устройство, което работи като виртуален сериен порт. Искам да го накарам да работи на Linux. Когато устройството беше прикачено, Linux драйверите за USB и серийни драйвери го намират, а устройството възел / Сътрудничество / ttyUSBx появява се. Няколко идентични устройства могат да бъдат прикрепени към системата. Пиша Java код, който ще трябва да комуникира с устройства чрез RXTX библиотека.
Така че искам да знам кое устройство съответстваконкретния tty възел. Как мога да получа тази информация в Java? Мисля, че аз трябва да се създаде JNI с необходимата функционалност, но аз не разбирам действия верига от код C. Може ли някой да помогне да намери пътя?
Отговори:
0 за отговор № 1Можете да изпълнявате команди на shell директно от Java.
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();
...
По този начин получавате подробности за свързването на възел на устройство в USB дърво. Например получавате:
/sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1:1.0/ttyUSB0
След това получи сериен номер на устройството чрез изпълнение
cat /sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/serial
уникално идентифициране на конкретно устройство чрез серийния му номер като ftE2MLXP