低级串行配置?

chr*_*ris 5 embedded tty serial-port

我使用的是嵌入式 Linux 平台,内核是 2.6。我正在使用 stty 命令来配置 ttyS* 高级别的。问题是当我想打开硬件流控制时:

stty -F /dev/ttySA0 crtscts
Run Code Online (Sandbox Code Playgroud)

它无法与其他设备通信(也启用了流量控制 - 已选中)。我发现在 /proc/tty/driver/sc16is7x2(这是串行设备)中有:

serinfo:1.0 driver revision:
0: uart:sc16is752 port:00000001 irq:53 tx:155 rx:0 DSR|CD|RI
1: uart:sc16is752 port:00000002 irq:53 tx:10 rx:0 DSR|CD|RI
Run Code Online (Sandbox Code Playgroud)

而在具有相同硬件(以及硬件流控制工作的地方)的另一个平台上,有类似的东西:

serinfo:1.0 driver revision:
0: uart:sc16is752 port:00000001 irq:53 tx:155 rx:0 CTS|DSR|CD|RI
1: uart:sc16is752 port:00000002 irq:53 tx:10 rx:0 CTS|DSR|CD|RI
Run Code Online (Sandbox Code Playgroud)

所以区别在于“CTS|DSR|CD|RI”与“DSR|CD|RI”。这个“DSR|CD|RI”会不会是我无法使用硬件流控制的问题?

Dav*_*rtz 2

有两个可能的问题:

一是电缆不正确。如果没有正确传递硬件流控制信号,硬件流控制将不起作用。

另一种是软件一端或另一端配置错误。应在两端的软件中启用硬件流控制。并且两端的软件必须打开各自的端口。