如何读出未使用的串行引脚(RTS、CTS等)?

如何读出未使用的串行引脚(RTS、CTS等)?

我有一个 RS-232 通信接口。我需要这个接口来进行简单的通信(没有奇偶校验位或流量控制 → TX、RX 和接地),但现在我有相当多的 4 个引脚未使用(RTS、DTR、DCD/DSR、CTS),并且想知道我是否可以滥用这些引脚来进行某些操作其他信号,为此我需要一种读取这些引脚的方法。那么如何在基于 Linux 的嵌入式系统上做到这一点呢?

seterial报告接口处于16550AUART 模式并根据https://en.wikipedia.org/wiki/16550_UART: “用于控制外部调制解调器的握手线,可由软件控制。”

您还需要了解什么吗?

答案1

RTS 和 DTR 是输出引脚 - 您可以对其进行设置。

DCD和CTS是输入引脚,只能读取。

默认情况下,设备可能设置为硬件握手。您可以使用以下命令更改此设置tcsetattr(参见 CRTSCTS)。然后就可以使用TIOCMBISioctl来设置RTS和DTR

好的参考资料是:

上面的内容可能是以 Linux 为中心的。

要更加 POSIX 然后看POSIX 操作系统串行编程指南

我从指南中摘录了这个示例:

#include <unistd.h>
#include <termios.h>

int fd;
int status;

ioctl(fd, TIOCMGET, &status);

status &= ~TIOCM_DTR;

ioctl(fd, TIOCMSET, status);

堆栈溢出您可以找到一些有关如何正确设置端口的意见。

相关内容