RS-232 통신 인터페이스가 있습니다. 간단한 통신(패리티 비트 없음 또는 흐름 제어 → TX, RX 및 접지)을 위해 이 인터페이스가 필요하지만 지금은 사용하지 않는 4핀(RTS, DTR, DCD/DSR, CTS)이 꽤 많이 있어서 제가 할 수 있는지 궁금합니다. 이 핀을 남용하여 다른 신호를 수행하려면 이 핀을 읽을 수 있는 방법이 필요합니다. 그렇다면 Linux 기반 임베디드 시스템에서 이를 어떻게 수행합니까?
seterial
인터페이스가 16550A
UART 모드에 있고 다음을 기반으로 함을 보고합니다.https://en.wikipedia.org/wiki/16550_UART:
"소프트웨어로 제어할 수 있는 외부 모뎀을 제어하는 데 사용되는 핸드쉐이킹 라인입니다."
그 밖에 알아야 할 사항이 있나요?
답변1
RTS와 DTR은 출력 핀이므로 설정할 수 있습니다.
DCD와 CTS는 입력 핀이며 읽기만 가능합니다.
기본적으로 장치는 하드웨어 핸드셰이크에 대해 설정될 수 있습니다. 다음 명령을 사용하여 이 설정을 변경할 수 있습니다.tcsetattr
(CRTSCTS 참조). 그런 다음 TIOCMBIS
ioctl을 사용하여 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);
존재하다스택 오버플로포트를 올바르게 설정하는 방법에 대한 몇 가지 조언을 찾을 수 있습니다.