Linux2010.04.02 16:18
console로 열린 터미널에서 일부의 속성만을 변경해서 사용중이었는데
다른건 전송이 되는데 0x11 데이터가 제대로 받아지지 않는 문제가 발생했다.

일단 엔터 치기 전에는 입력이 받아지지 않는건
'캐노니컬 모드(canonical mode)'로 인한 것이기 때문에 ~ICANON 으로 해결을 했지만

0x11 은 DC1(Data Control 1 - XON) 으로 캐노니컬과는 별개이기 때문에 0x11 데이터가 손실되었다.
터미널은 워낙 내용이 방대해서.. 간단하게 해결책만 제시하자면

ffmpeg의 소스중 일부를 인용
 712                 new_set.c_iflag &= ~(IGNBRK|BRKINT|PARMRK|ISTRIP
 713                                       |INLCR|IGNCR|ICRNL|IXON);
 714                 new_set.c_oflag |= OPOST;
 715                 new_set.c_lflag &= ~(ECHO|ECHONL|ICANON|IEXTEN);
 716                 new_set.c_cflag &= ~(CSIZE|PARENB);
 717                 new_set.c_cflag |= CS8;
 718                 new_set.c_cc[VMIN] = 1;
 719                 new_set.c_cc[VTIME] = 0;


       IXON   Enable XON/XOFF flow control on output.
       IXOFF  Enable XON/XOFF flow control on input.

[링크 : http://linux.die.net/man/3/tcgetattr]

결론 : 아마도 이랬을 것입니다
Posted by 구차니

댓글을 달아 주세요