Answers:
我认为这是此命令:
dmesg | grep tty
在我自己的Linux机器(只有1个串行端口)上运行该机器,将产生一条ttyS0输出行。自己尝试,您会明白我的意思。
tty
即可获取tty的名称。我认为这就是OP的意思,因为他们没有提出“哪个串口getty
正在运行?”这一问题。
查看在中检测到哪些UART /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
如果连接了东西并驱动CTS,DSR或CD线(这些是输入线),您甚至可以确定确实存在某些东西……rx-byte-count也是如此。
如果您需要以编程方式执行此操作,则从dmesg中读取输出可能会很麻烦,而是文件夹/ dev / serial / by-id包含以设备的可识别数据命名的符号链接,并指向特定的/ dev / tty *。连接到。
我不确定这是否是一些特定于发行版的特殊udev规则,但是它在Ubuntu中效果很好,请让我知道它是否有效。
ttyS0
通过分别3
对应于COM1
通过4
。它们通常具有相同的硬件资源,并且并非始终可检测到,因此它们始终存在。
setserial
将ttyS0使用的资源映射到您的串行端口。linux.die.net/man/8/setserial 但这通常不是必需的,因为COM4以外的任何东西通常都具有足够的辅助硬件,以使Linux能够检测到它并适当地添加串行设备。
还有一个命令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