Tengo un dispositivo USB que funciona como un puerto serie virtual. Quiero que funcione en Linux. Cuando se conectó el dispositivo, los controladores de Linux usb a serie y los controladores tty lo encuentran, y el nodo del dispositivo / dev / ttyUSBx aparece Se pueden conectar varios dispositivos idénticos al sistema. Escribo el código de Java, que tendrá que comunicarse con los dispositivos a través de Biblioteca RXTX.
Así que quiero saber, a qué dispositivo correspondeel nodo tty particular. ¿Cómo puedo obtener esta información en Java? Creo que tengo que crear JNI con la funcionalidad necesaria, pero no entiendo la cadena de acciones del código C. ¿Alguien puede ayudar a encontrar el camino?
Respuestas
0 para la respuesta № 1Puede ejecutar comandos de shell directamente desde 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();
...
De esta manera obtendrá detalles de la conexión del nodo del dispositivo en el árbol USB. Por ejemplo obtienes:
/sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1:1.0/ttyUSB0
Luego obtenga el número de serie del dispositivo ejecutando
cat /sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/serial
para identificar de forma única un dispositivo específico por su número de serie como ftE2MLXP