%EA%B0%80%20%EB%8D%B0%EC%9D%B4%ED%84%B0%20%EC%A0%84%EC%86%A1%EC%9D%84%20%EC%99%84%EB%A3%8C%ED%95%9C%20%EC%8B%9C%EA%B8%B0%20%EC%9D%B4%ED%95%B4.png)
사용자 공간에서 직렬 포트에 쓰는 것과 IO 핀 값을 동기화해야 합니다. (아직 커널 공간에서는 그렇게 할 수 없기 때문입니다.다른 문제). 내 코드(오류 검사 생략)는 다음과 같습니다.
char buf[3] = {'U','U','U'};
int fd = open("/dev/ttyS1", O_RDWR | O_NOCTTY); // supposed to be blocking
// fcntl(fd, F_SETFL, fcntl(fd, F_GETFL) & ~O_NONBLOCK); <-- makes no difference
FILE *f = fopen("/sys/class/gpio/gpio200/value", "w"); // the relevant IO
// set IO
fprintf(f, "1");
fflush(f);
// send data
write(fd, buf, sizeof(buf));
// unset IO
fprintf(f, "0");
fflush(f);
동작은 쓰기가 시작될 때 IO가 빠르게 1로 전환되었다가 다시 돌아오는 것입니다. 즉, write()
데이터가 실제로 전송되기 오래 전에 반환됩니다.
여기에 희망이 있습니까?
답변1
tty
사용해야 하는 기기 의 경우tcdrain()
파일 설명자에.