Je pense que c'est cette commande :
dmesg | grep tty
L'exécuter sur ma propre machine Linux (qui n'a qu'un seul port série) produit une seule ligne de sortie ttyS0. Essayez par vous-même, vous verrez ce que je veux dire.
Voir quels UART ont été détectés dans /proc/tty/driver/serial
. Une ligne avec uart:unknown
signifie :rien détecté (et probablement inexistant).
# cat /proc/tty/driver/serial
serinfo:1.0 driver revision:
0: uart:16550A port:000003F8 irq:4 tx:0 rx:0
1: uart:16550A port:000002F8 irq:3 tx:111780 rx:1321 RTS|DTR|DSR
2: uart:unknown port:000003E8 irq:4
3: uart:unknown port:000002E8 irq:3
Si quelque chose est connecté et pilote les lignes CTS, DSR ou CD (ce sont des lignes d'entrée), vous pouvez même être sûr qu'il y a réellement quelque chose... Il en va de même pour le rx-byte-count.
Si vous avez besoin de le faire par programme, la lecture de la sortie de dmesg peut être gênante, à la place, le dossier /dev/serial/by-id a des liens symboliques qui sont nommés d'après des données identifiables de votre appareil et pointent vers le /dev/tty* spécifique qu'ils sont connectés.
Je ne sais pas s'il s'agit d'une règle udev spéciale spécifique à la distribution, mais cela fonctionne bien dans Ubuntu, faites-moi savoir si cela fonctionne.