Hoe weet ik welke /dev/ttyS* mijn seriële poort is?
Ik heb een laptop die maar één seriële poort heeft.
Ik ging in:
/dev
directory, en ik vond:
ttyS0
ttyS1
ttyS2
ttyS3
Hoe weet ik welke van die “ttyS” verwijst naar mijn seriële poort?
Ik heb een laptop die maar één seriële poort heeft.
Ik ging in:
/dev
directory, en ik vond:
ttyS0
ttyS1
ttyS2
ttyS3
Hoe weet ik welke van die “ttyS” verwijst naar mijn seriële poort?
Kijk welke UART’s werden gedetecteerd in /proc/tty/driver/serial
. Een lijn met uart:unknown
betekent: niets gedetecteerd (en waarschijnlijk niet bestaand).
# 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
Als er iets is aangesloten en de lijnen CTS, DSR of CD aanstuurt (dit zijn ingangslijnen) kun je er zelfs vrij zeker van zijn dat er daadwerkelijk iets is… Hetzelfde geldt voor de rx-byte-count.
Als u dit programmatisch moet doen kan het lezen van de uitvoer van dmesg lastig zijn, in plaats daarvan heeft de map /dev/serial/by-id sym links die genoemd zijn naar identificeerbare gegevens van uw apparaat en wijzen naar de specifieke /dev/tty* waarmee ze verbonden zijn.
Ik weet niet zeker of dit een speciale udev regel is die distributiespecifiek is, maar het werkt goed in Ubuntu, laat het me weten als het werkt.
ttyS0
tot en met 3
komen overeen met respectievelijk COM1
tot en met 4
. Ze hebben meestal dezelfde hardwarebronnen en zijn niet altijd detecteerbaar, dus ze bestaan altijd.
Er is ook het commando setserial
dat /proc/tty/driver/serial
gebruikt om zijn gegevens te verkrijgen.
# 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