참고: 시리얼 통신에서 overrun이란, 데이터가 전부 전송되지 않았는데, 다시 쓰려고 할때 발생하는 에러입니다.
시리얼인터페이스의 속도는 아무리 빨라도, 대부분의 컴퓨터의 버스 및 CPU속도를 당연히, 능가할 수 없지요.
시리얼인터페이스는 송신요청받은 바이트에 대해 shift연산을 수행해서 1비트씩 순차적으로 전송합니다.
이때 특정 바이트가 전부 전송이 되지 않았을때(예를들어, 한 3비트정도 전송되었다고 가정),
다시 전송을 요청하게되면 Overrun이 발생하게 됩니다.
이를 방지하려면, 시리얼 포트에 쓸 수 있는가? (Writable한가?)를 검사해서
전송하도록 프로그램을 코딩해야합니다.
검사방법은 당연히, polling과 event에 기반한 방법이 있을 수 있고, 일단 후자인, select()등으로 검사해서 write하도록 수정해보세요.
* 이곳 게시판에 이에 대한 많은 자료가 있는것으로 알고 있습니다. 검색해보시고, 시도하세요.
참고: 시리얼 통신에서 overrun이란, 데이터가 전부 전송되지 않았
참고: 시리얼 통신에서 overrun이란, 데이터가 전부 전송되지 않았는데, 다시 쓰려고 할때 발생하는 에러입니다.
시리얼인터페이스의 속도는 아무리 빨라도, 대부분의 컴퓨터의 버스 및 CPU속도를 당연히, 능가할 수 없지요.
시리얼인터페이스는 송신요청받은 바이트에 대해 shift연산을 수행해서 1비트씩 순차적으로 전송합니다.
이때 특정 바이트가 전부 전송이 되지 않았을때(예를들어, 한 3비트정도 전송되었다고 가정),
다시 전송을 요청하게되면 Overrun이 발생하게 됩니다.
이를 방지하려면, 시리얼 포트에 쓸 수 있는가? (Writable한가?)를 검사해서
전송하도록 프로그램을 코딩해야합니다.
검사방법은 당연히, polling과 event에 기반한 방법이 있을 수 있고, 일단 후자인, select()등으로 검사해서 write하도록 수정해보세요.
* 이곳 게시판에 이에 대한 많은 자료가 있는것으로 알고 있습니다. 검색해보시고, 시도하세요.
------------------ P.S. --------------
지식은 오픈해서 검증받아야 산지식이된다고 동네 아저씨가 그러더라.
댓글 달기