Enlace del dispositivo serie y el número de serie en el sistema Linux

3.7 Vinculación del dispositivo serie y el número de serie en el sistema Linux

3.7.1 Origen del problema

En el proceso de desarrollo del coche ROS, debe utilizar el módulo de puerto serie de comunicación ROS, el módulo de puerto serie lidar, el módulo de puerto serie IMU, etc. Para evitar que el número de puerto serie de estos dispositivos cambie cada vez que enciende el dispositivo, debe vincular el número de puerto serie al dispositivo serie Fijo; para identificar mejor el puerto serie, también podemos establecer un nombre estático para el número de puerto serie; para utilizar mejor el puerto serie, también podemos configurar los permisos del puerto serie.

Una vez configurado, durará toda la vida.

3.7.2 Principio

En el sistema Linux, aunque a cada puerto fijo se le puede asignar un ttyUSB * diferente debido a la diferencia de tiempo de inicio del dispositivo externo, para cada puerto fijo hay KERNELS, idProduct, idVendor fijos y los KERNELS de cada puerto son diferentes. No es el mísmo.

Por lo tanto, siempre que arreglemos la posición de instalación del dispositivo serie, aún podemos resolver este problema a partir de la naturaleza física del puerto.

3.7.3 Método

Paso 1: ¿Cómo consultar KERNELS, idProduct, idVendor de cada puerto?

Aquí necesitas usar el siguiente comando

udevadm info -a -p $(udevadm info -q path -n /dev/ttyUSB0)

Y cuando un dispositivo de puerto serie se inserta de forma independiente cada vez , el número de puerto serie es siempre / dev / ttyUSB0, si no está seguro, puede utilizar el siguiente comando para consultar

ls /dev | grep ttyUSB

Use el primer comando, la ventana imprimirá un montón de información del dispositivo, solo necesitamos KERNELS, idProduct, idVendor, deslizamos hacia abajo para encontrar la parte similar a la figura a continuación para encontrar la información del puerto.

imagen-20200920220927095

Nota : al consultar la información del puerto, inserte el dispositivo serie por separado.

Paso 2: Cree su propio archivo 99 - *. Rules en el directorio /etc/udev/rules.d/

Por ejemplo, para crear el archivo 99-robot-usb.rules aquí, use el siguiente comando

sudo vim /etc/udev/rules.d/99-robot-usb.rules

Complete el siguiente contenido, guarde, complete según la información de su propio dispositivo

KERNELS=="3-2", ATTRS{
    
    idVendor}=="1a86", ATTRS{
    
    idProduct}=="7523", SYMLINK+="robot",MODE:="0777"

Explicación de lo anterior

==”:比较键、值,若等于,则该条件满足;
“+=”:为一个表示多个条目的键赋值。
“:=”:对一个键赋值,并拒绝之后所有对该键的改动。目的是防止后面的规则文件对该键赋值。
Paso 3: reinicie y verifique si la configuración surte efecto

Reiniciar

sudo reboot

Espere el arranque, verifique el puerto

ll /dev | grep ttyUSB

Se imprime la siguiente información y la configuración se realiza correctamente

lrwxrwxrwx   1 root root           7 Sep 20 22:30 robot -> ttyUSB0
crwxrwxrwx   1 root dialout 188,   0 Sep 20 22:30 ttyUSB0

Más tarde, cuando usamos el puerto en esa ubicación física, su número de puerto serie se fija en / dev / robot y tiene permisos de lectura, escritura y ejecución.

Precauciones:

Lo anterior es solo el proceso de configuración de un puerto y, en la mayoría de los casos, hay varios dispositivos. Eres inteligente, debes saber inferir otras cosas.

Cada vez que inserta un dispositivo serie de forma independiente, obtenga su valor KERNELS, idProduct, idVendor y regístrelo; cree su propio archivo de reglas 99 - *. En el directorio /etc/udev/rules.d/ y complete el Información y el nombre de la asignación que necesita; luego reinicie.

Enlace anterior, haga clic para visitar.

Artículo anterior : Construcción de un automóvil ROS y redacción de un paquete de funciones de inicio
Serie de artículos : Construcción de un robot ROS desde cero

Si sientes que mi artículo es más adecuado para ti, hazme caso, dale me gusta y darte una sorpresa diferente.

Proyecto de diseño export-20200810-205521
Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/zhao_ke_xue/article/details/108700080
Recomendado
Clasificación