사용하지 않는 직렬 핀(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);

존재하다스택 오버플로포트를 올바르게 설정하는 방법에 대한 몇 가지 조언을 찾을 수 있습니다.

관련 정보