2012-09-01 2 views
0

리눅스에서 가상 직렬 포트의 데이터를 읽었습니다 (연결된 장치는 xbee 모듈입니다).linux에서 ttyUSB0과 같은 가상 직렬 포트에 대한 IRQ가 있습니까?

현재 포트의 버퍼를 검사하는 스레드로 읽기가 수행됩니다. 그러나 많은 장치의 경우 이것은 좋지 않습니다. 하나의 포트 데이터가 매 ms마다 그리고 매 초마다 올 수 있기 때문에 CPU에 부담이됩니다.

인터럽트와 같은 것이 있는지 알고 싶습니다. 새 데이터를 사용할 수있을 때만 en 이벤트가 실행됩니다 (이 주체가 마이크로 컨트롤러에서 작동한다는 것을 알고 있습니다).

C++로 만드는 방법은 무엇입니까?

내 정보가 부족하기 때문에이 정보를 어떻게 사용하는지 모르겠습니다. 다음과 같은 경우 :

while(1){ 

    int n= PollComport(comport_number, buf, 4095); 
    if(n>0){ 
    //make somemthing with the new data 
    } 
} 

while 루프를 제거하고 싶습니다. epoll_wait은 어디에서 어떻게 사용합니까?

+0

'PollComport'를 정확히 원하는 기능으로 대체 할 수 있다면 그 기능은 무엇을 정확하게합니까? –

답변

2

당신의 문제가 아닙니다. OS가 그렇게합니다. 블로킹 읽기 또는 일종의 I/O 멀티플렉싱 (예 : select 또는 epoll_wait) 만 사용하십시오. 당신이해야 할 특별한 것은 없습니다.

+0

질문이 업데이트되었습니다. –

+0

차단 의미론을 원하면 '| O_NDELAY'를 OpenComport에서 가져옵니다. –

+0

나는 무엇을 찾고 있었습니까? 핵심 단어는 직렬 포트 다이버를 기반으로합니다 : http://sourceforge.net/projects/qspd/ –

관련 문제