我怎么知道哪个 /dev/ttyS* 是我的串口?

siv*_*udh 33 linux serial-port

我有一台只有一个串口的笔记本电脑。

我进入:

/dev 
Run Code Online (Sandbox Code Playgroud)

目录,我发现:

ttyS0
ttyS1
ttyS2
ttyS3
Run Code Online (Sandbox Code Playgroud)

我怎么知道哪些“ttyS”指的是我的串口?

siv*_*udh 36

我认为是这个命令:

dmesg | grep tty
Run Code Online (Sandbox Code Playgroud)

在我自己的 Linux 机器(只有 1 个串行端口)上运行它会产生一个 ttyS0 输出线。自己尝试一下,你就会明白我的意思。


Rob*_*mer 15

查看在/proc/tty/driver/serial. 一条线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
Run Code Online (Sandbox Code Playgroud)

如果连接了某些东西并驱动了 CTS、DSR 或 CD 线(这些是输入线),您甚至可以非常确定确实存在某些东西……对于 rx 字节计数也是如此。


san*_*tiz 8

如果您需要以编程方式读取 dmesg 的输出可能会很麻烦,取而代之的是文件夹 /dev/serial/by-id 具有符号链接,这些链接以您设备的可识别数据命名并指向特定的 /dev/tty* 它们连接到。

我不确定这是否是一些特定于发行版的特殊 udev 规则,但它在 Ubuntu 中运行良好,请告诉我它是否有效。

  • 作为记录,/dev/serial 默认情况下不会出现在 Ubuntu 18.04 (Bionic) 中(不知道以前的版本) (2认同)

Ign*_*ams 7

ttyS0through分别3对应于COM1through 4。它们通常具有相同的硬件资源并且并不总是可检测到的,因此它们始终存在。