我有一个USB设备作为虚拟串口。我想让它在Linux上运行。连接设备后,Linux usb-to-serial驱动程序和tty驱动程序会找到它,并显示设备节点 / dev / ttyUSBx 。可以将几个相同的设备连接到系统。我编写Java代码,必须通过 RXTX库与设备进行通信。
所以我想知道,哪个设备对应于特定的tty节点。如何在Java中获取此信息?我认为我必须创建具有必要功能的JNI,但我不理解C代码的动作链。任何人都可以帮忙找到方法吗?
答案 0 :(得分:0)
您可以直接从Java执行shell命令。
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