2010-04-14 21:10:13 +0000 2010-04-14 21:10:13 +0000
33
33

我如何知道哪个/dev/ttyS*是我的串口?

我有一台笔记本,只有一个串口。

我进入。

/dev

目录,发现:

ttyS0
ttyS1
ttyS2
ttyS3

我怎么知道这些 “ttyS "中哪个是我的串口?

答案 (5)

34
34
34
2010-04-14 21:24:54 +0000

我想是这个命令。

dmesg | grep tty

在我自己的Linux盒子上运行这个命令(它只有一个串口)会产生一条ttyS0输出线. 你自己试试,你会明白我的意思。

14
14
14
2016-06-30 15:45:47 +0000

查看在/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也是如此。

7
7
7
2014-12-20 13:55:13 +0000

如果你需要用编程方式读取dmesg的输出可能会很麻烦,相反,/dev/serial/by-id文件夹中有以设备的可识别数据命名的sym链接,并指向它们所连接的特定的/dev/tty/*。

我不知道这是不是一些特殊的udev规则,是发行版特有的,但在Ubuntu中很好用,如果能用,请告诉我。

6
6
6
2010-04-14 21:17:04 +0000

ttyS03分别对应COM14。它们通常拥有相同的硬件资源,而且不一定能检测到,所以它们总是存在。

1
1
1
2016-09-12 15:19:53 +0000

还有一个命令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