J'ai un ordinateur portable qui n'a qu'un seul port série.
Je suis allé dans:
/dev
répertoire, et j'ai trouvé:
ttyS0
ttyS1
ttyS2
ttyS3
Comment savoir lequel de ces "ttyS" fait référence à mon port série?
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 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 pas existant).
# 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 (il s'agit de lignes d'entrée), vous pouvez même être presque sûr qu'il y a réellement quelque chose ... Il en va de même pour le nombre d'octets rx.
Si vous devez effectuer cette opération par programme, la lecture de la sortie de dmesg peut s'avérer gênante. Au lieu de cela, le dossier/dev/serial/by-id contient des liens sym qui portent le nom de données identifiables de votre périphérique et pointent vers le/dev/tty * spécifique. sont connectés à.
Je ne suis pas sûr qu'il s'agisse d'une règle particulière d'udev spécifique à la distribution, mais cela fonctionne bien dans Ubuntu. Faites-moi savoir si cela fonctionne.
ttyS0
à 3
correspondent à COM1
à 4
, respectivement. Ils ont généralement les mêmes ressources matérielles et ne sont pas toujours détectables. Ils existent donc toujours.
Il y a aussi la commande setserial
qui utilise /proc/tty/driver/serial
pour obtenir ses données.
# setserial -g /dev/ttyS[0123]
/dev/ttyS0, UART: 16550A, Port: 0x03f8, IRQ: 4
/dev/ttyS1, UART: 16550A, Port: 0x02f8, IRQ: 3
/dev/ttyS2, UART: unknown, Port: 0x03e8, IRQ: 4
/dev/ttyS3, UART: unknown, Port: 0x02e8, IRQ: 3