시리얼 통신 프로그램시 수신버퍼를 초기화 하려면 어떻게 하나요?
안녕하세요.
보통 리눅스 에서 시리얼 통신할 때 옵션을 아래와 같이 하는데요.
화면에서 처리속도가 느려지는 현상이 보이더라구요. 시리얼 통신 케이블을 접속을 빼도 화면에서는
계속 읽어 드리더라구요. 그래서 임시로 쌓아두는 버퍼를 초기화 설정을 하려면 어떤것을 설정해야하나요?
close() 하고 open()를 다시 하면 버퍼가 초기화가 되는 것 같습니다. win32 는 보니 PurgeComm() 가 있더라구요.
즐거운 코딩되세요.
fd = open("/dev/ttyS0", O_RDWR | O_NOCTTY | O_NONBLOCK );
if (fd <0) {
perror(MODEMDEVICE);
exit(-1);
}
tcgetattr(fd,&oldtio); // 현재 설정을 oldtio에 저장
bzero(&newtio, sizeof(newtio));
newtio.c_cflag = BAUDRATE | CRTSCTS | CS8 | CLOCAL | CREAD;
newtio.c_iflag = IGNPAR;
newtio.c_oflag = 0;
/* set input mode (non-canonical<비동기화>, no echo<화면에 다시 보이지 않음>,...) */
newtio.c_lflag = 0;
newtio.c_cc[VTIME] = 0; // 문자 사이의 timer를 disable
newtio.c_cc[VMIN] = 1; // 최소 1 문자 받을 때까진 blocking
tcflush(fd, TCIFLUSH);
tcsetattr(fd,TCSANOW,&newtio);
댓글 달기