설정된 시리얼 통신정보 얻어오는 방법

rma8806의 이미지

설정된 시리얼 통신정보 얻어오는 방법

보드에 리눅스를 올리고, 시리얼로 제어를 하려고 합니다.

그런데, 보드의 터미널 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 );

}

도와주세요 ㅠㅠ

beta의 이미지

tcsetattr tcgetattr 한 셋입니다.

#include

int tcgetattr(int fildes, struct termios *termios_p);

발 담갔다. 이제 익숙해 지는길만이..

rma8806의 이미지

생각해보면 set있으면 get도 보통 존제 할건데, 생각을 못했네요. ^^;

좋은 정보 얻어갑니다.