33
33
我如何知道哪个/dev/ttyS*是我的串口?
我有一台笔记本,只有一个串口。
我进入。
/dev
目录,发现:
ttyS0
ttyS1
ttyS2
ttyS3
我怎么知道这些 “ttyS "中哪个是我的串口?
我有一台笔记本,只有一个串口。
我进入。
/dev
目录,发现:
ttyS0
ttyS1
ttyS2
ttyS3
我怎么知道这些 “ttyS "中哪个是我的串口?
查看在/proc/tty/driver/serial
中检测到哪些UART。带uart:unknown
的线表示:没有检测到任何东西(很可能不存在)。
# 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
如果有东西连接并驱动CTS、DSR或CD线(这些是输入线),你甚至可以非常确定确实有东西存在……。rx-byte-count也是如此。
如果你需要用编程方式读取dmesg的输出可能会很麻烦,相反,/dev/serial/by-id文件夹中有以设备的可识别数据命名的sym链接,并指向它们所连接的特定的/dev/tty/*。
我不知道这是不是一些特殊的udev规则,是发行版特有的,但在Ubuntu中很好用,如果能用,请告诉我。
ttyS0
到3
分别对应COM1
到4
。它们通常拥有相同的硬件资源,而且不一定能检测到,所以它们总是存在。
还有一个命令setserial
,它使用/proc/tty/driver/serial
来获取它的数据。
# 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