설정된 시리얼 통신정보 얻어오는 방법
설정된 시리얼 통신정보 얻어오는 방법
보드에 리눅스를 올리고, 시리얼로 제어를 하려고 합니다.
그런데, 보드의 터미널 stdout 또한 시리얼로 잡혀 있습니다.
시스템이 시작 될 때 터미널이, 시리얼 에서 데이터를 읽어 올때 문자단위로 읽고 \n이 나올때 까지 읽도록 시리얼통신 규칙을 설정 해두었더라고요..
그래서 제어 프로그램이 시리얼을 열 때, 터미널이 설정 해놓은 시리얼 termios 값을 변경 시켜서 소켓 처럼 사용 하게 만들고
프로그램이 종료 될 때, 어딘가에 저장 해 둔 원래 터미널이 설정한 시리얼 termios값으로 되돌려놓으려고(그대로 종료하면 터미널이 먹동이 되더라고요...) 하는데,
현제 터미널에 설정 되어 있는 termios값을 얻어오는 방법을 모르겠습니다.
void CSerialDriver::Init()
{// 시리얼 통신에서 통신 방식 설정..
struct termios newtio;
memset(&newtio, 0, sizeof(newtio));
newtio.c_iflag = IGNPAR; // non-parity
newtio.c_oflag = 0;
newtio.c_cflag = CS8 | CLOCAL | CREAD; // NO-rts/cts
newtio.c_cflag |= B115200;
newtio.c_lflag = 0;
newtio.c_cc[VTIME] = 10; // timeout 0.1초 단위
newtio.c_cc[VMIN] = 1; // 최소 n 문자 받을 때까진 대기
tcflush (this->m_hdivce, TCIFLUSH );
tcsetattr(this->m_hdivce, TCSANOW, &newtio );
}
도와주세요 ㅠㅠ
tcsetattr tcgetattr 한 셋입니다.
tcsetattr tcgetattr 한 셋입니다.
#include
int tcgetattr(int fildes, struct termios *termios_p);
발 담갔다. 이제 익숙해 지는길만이..
get 함수가 있었네요..
생각해보면 set있으면 get도 보통 존제 할건데, 생각을 못했네요. ^^;
좋은 정보 얻어갑니다.
댓글 달기