我使用的是嵌入式Linux平台,内核是2.6。我正在使用 stty 命令来配置 ttyS* 高级。问题是当我想打开硬件流控制时:
stty -F /dev/ttySA0 crtscts
它无法与其他设备通信(也启用了流量控制 - 已选中)。我发现在 /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
而在具有相同硬件的其他平台上(以及硬件流控制工作的地方),有类似的内容:
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
所以区别在于“CTS|DSR|CD|RI”与“DSR|CD|RI”。这个“DSR|CD|RI”可能是我无法使用硬件流控制的问题吗?
答案1
有两个可能的问题:
一是电缆不正确。如果没有正确传递硬件流控制信号,硬件流控制将不起作用。
另一种是软件一端或另一端配置错误。应在两端的软件中启用硬件流控制。并且两端的软件必须打开各自的端口。