직렬 입력을 폴링하는 방법은 무엇입니까?

직렬 입력을 폴링하는 방법은 무엇입니까?

그래서 설정된 프레임 속도(10fps 등)로 정수를 전송하는 장치가 있습니다. USB 케이블을 통해 내 Linux 시스템(ubuntu 20.04)에 연결되어 ttyACM0으로 인식됩니다. 이 개발자를 캡처하고 수신된 입력을 볼 수 있습니다.

그러나 내가 원하는 것은 장치를 폴링하는 함수/스크립트를 c 또는 bash에 작성하는 것입니다. 따라서 이상적으로는 99%의 시간 동안 새로운 입력을 받으면 이를 읽습니다. 그렇지 않은 경우 아무것도 반환되지 않지만 폴링하여 프레임 정수 중 하나를 받은 경우 값이 반환됩니다.

이 문제를 해결하는 가장 좋은 방법은 무엇입니까? 프레임이 수신될 때마다 콜백이 트리거되도록 이벤트 중심 접근 방식이 더 좋고 정확하지 않습니까?

답변1

문자 그대로 설명하셨네요poll시스템 호출/libc 래퍼 함수. C/C++에서 직접 사용하거나 다음을 통해 사용할 수 있습니다.select기준 치수파이썬에서. poll시간 초과 0을 사용합니다 .

pollBash에는 or 기능이 없습니다 select. 당신이 하고 있는 일은 실제로 쉘 스크립팅의 아이디어를 따르지 않습니다. (이것이 제가 위에서 Python을 언급한 이유입니다. 많은 사용 사례에서 이는 쉘 스크립트만큼 간단하므로 C++ 또는 C에 의존하지 않고도 이러한 종류의 데이터 처리를 훨씬 쉽게 만듭니다. C++ 또는 C에서 데이터 작업) - 올바른 자동 라이프사이클, 유형 안전성, 실제 컨테이너 유형 및 C++의 더 나은 흐름 제어가 여러분의 삶을 더 쉽고 안전하게 만들어줍니다).

관련 정보