리눅스에서 시리얼 통신으로 read를 넌블럭하는 방법이있나요!?
글쓴이: 콩수니 / 작성시간: 목, 2012/07/19 - 8:37오후
안녕하세요~
리눅스에서 센서장치에 시리얼통신으로 값을 받는데요~
이 센서 장치가 저녁이 되면 전기가 나가서 꺼집니다..
그래서 센서 값이 안받아지는데요
요놈의 프로그램은 값을 받겠다고 끝까지 대기 상태에서 영원히 머물고 있습니다.센서가 켜져도요...
아마도 시리얼 통신 연결 설정하는 부분을 수정하면 될것같은데..관련 레퍼런스 찾아봐도 안보여영.ㅠ
memset(&newtio,0,sizeof(newtio));
newtio.c_iflag = IGNPAR; //no parity
newtio.c_oflag = 0;
newtio.c_cflag = CS8 | CLOCAL | CREAD;
newtio.c_cflag |=B9600;
newtio.c_lflag = 0;
newtio.c_cc[VTIME] = vtime;
newtio.c_cc[VMIN] = vmin;
요기 부분을 수정하면 되지 않을까 싶습니다.
VTIME과 VMIM은 각각 20과 30을 주었는데요.
이부분은 2초후를 경과 하면서 read 데이터가 30byte가 될때까지 블럭 시키는 부분인데요
이조건이 or가 아니라 and라서 두조건이 만족해야 블럭이 풀리고 메시지가 넘어오네요
원하는건...or 가 되면 딱 좋은데.!?!?
방법이 있을꺼라고 생각됩니다
조언 부탁드립니다.
Forums:
O_NONBLOCK 을 이용해 보세요.
사용법은 찾아서 해보시길 ...
감솨합니다.
감솨합니다.
^_^
devband
댓글 달기