[질문]시리얼통신 송신부분에 대하여...

neverdie의 이미지

시리얼통신을 하고 있습니다.

송/수신 메시지 포맷은 다른 프로토콜처럼 헤더같은게 없는 특이한 형태입니다.

윈도우 컴퓨터 : 장치 시뮬레이터
리눅스 컴퓨터 : 프로토콜 구현 클라이언트

//장치초기화부분
newtio.c_cflag     	= B19200 | CS8 | PARENB | CLOCAL | CREAD;
newtio.c_lflag     	= 0;
newtio.c_oflag     	= 0;
newtio.c_cc[VMIN]  	= 1;
newtio.c_cc[VTIME] 	= 0; 

시뮬레이터가 보내주는 데이터는 나름대로 파싱을 해서 구현을 했습니다. 근데 송신부분이 문제입니다.

write( m_iFD, &response, 1 );

각 명령어에 대한 분기는 함수포인터를 이용해서 처리했고 각 함수안에서 장치 시뮬레이터로 1byte 데이타를 보내는데...

시뮬레이터에서 1byte씩 잘 읽다가 2byte씩 읽고... 제 멋대로 입니다.

데이타를 보낸 후 특정시간이 지난후 다음 데이타를 보내도록 해야하나요?

fromdj의 이미지

write 한다음에
flush 를 해보시면 어떨까요

^^ be cool ~
http://fromdj.pe.kr

neverdie의 이미지

답변 감사합니다.. ^^

tcflush를 해보았지만... 결과는 똑같습니다.

안녕하세요~ ^^