Penso che sia questo comando:
dmesg | grep tty
Eseguendolo sulla mia macchina Linux (che ha solo 1 porta seriale) produce una singola riga di output ttyS0. Provalo da solo, capirai cosa intendo.
Scopri quali UART sono stati rilevati in /proc/tty/driver/serial
. Una riga con uart:unknown
significa:niente rilevato (e probabilmente non esistente).
# 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
Se qualcosa è connesso e guida le linee CTS, DSR o CD (queste sono linee di input) puoi anche essere abbastanza sicuro che ci sia effettivamente qualcosa... Lo stesso vale per il conteggio rx-byte.
Se hai bisogno di farlo a livello di codice, leggere l'output da dmesg può essere problematico, invece la cartella /dev/serial/by-id ha collegamenti simbolici che prendono il nome da dati identificabili del tuo dispositivo e puntano allo specifico /dev/tty* che sono collegati.
Non sono sicuro che si tratti di una regola udev speciale specifica della distribuzione, ma funziona bene in Ubuntu, fammi sapere se funziona.