为什么在 RS232 端口上切换 RTS 引脚时没有得到任何输出差异?

为什么在 RS232 端口上切换 RTS 引脚时没有得到任何输出差异?

我试图通过控制 RS232 信号的 RTS 或 DTR 引脚来打开/关闭输出或切换继电器等。我用 C 创建了一个脚本,用于打开/关闭 DTR 或 RTS 标志,但我的串行端口到终端适配器的输出没有任何差异(见下图):

在此输入图像描述

我的RS232的结构如下:

在此输入图像描述

如图所示,RTS 信号位于引脚 8 上,当我将其标记为“打开”时,我在引脚 1(接地)和引脚 8(RTS)之间进行测量,得到 3V。当我将其切换回关闭状态时,它仍保持在 3V,因此当我切换 DTR 或 RTS 时没有任何变化。

有谁知道我做错了什么?

更新

我已经尝试了下面的代码(我认为它与@Vincent Achard 的答案相匹配)。这不起作用,当我在引脚 1(接地)和引脚 6(5V 输出)之间进行测量时,运行脚本时仍保持 5V。另外,当我在引脚 1(接地)和 ping 8(RTS)之间进行测量时,运行脚本时电压仍为 2.8V。有人看到这段代码有什么错误吗?

在此输入图像描述

提前致谢!

答案1

串行接口上​​的 DTR 和 RST 引脚的作用与 GPIO 不同:它们的电平不会保持高电平或低电平。

我可以通过修改内核 tty 驱动程序来覆盖此行为,以获得永久的非默认状态:

文件:drivers/tty/tty_port.c

在里面

function tty_port_shutdown() 

代替

tty_port_lower_dtr_rts(port);

经过

tty_port_raise_dtr_rts(port); 

也许存在一些更简单的解决方案???

相关内容