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 字节计数也是如此。
如果您需要以编程方式读取 dmesg 的输出可能会很麻烦,取而代之的是文件夹 /dev/serial/by-id 具有符号链接,这些链接以您设备的可识别数据命名并指向特定的 /dev/tty* 它们连接到。
我不确定这是否是一些特定于发行版的特殊 udev 规则,但它在 Ubuntu 中运行良好,请告诉我它是否有效。