리소스를 소모하지 않고 직렬 포트에서 데이터를 읽는 방법은 무엇입니까?

리소스를 소모하지 않고 직렬 포트에서 데이터를 읽는 방법은 무엇입니까?

우리 상사는 자신이 사용하는 프로그램에 대한 모니터링 응용 프로그램을 만들어야 합니다. 그들의 비즈니스 요구 때문에 나는 할 수 있습니다.아니요모든 유형의 가상 직렬 포트를 사용하십시오. /dev/ttyUSB0, 애플리케이션에 들어오고 나가는 데이터~ 해야 하다/dev/ttyUSB0에 연결합니다.

나는 데이터 전송을 중단하지 않고 직렬 포트에 들어오고 나가는 것을 얻을 수 있도록 socat에서 만든 가상 직렬 포트를 활용하는 설계에 대해 논의했습니다. 그러나 디자인은 거부되었습니다. 그는 Windows에서 Putty처럼 리소스를 소비하지 않고 "포트 미러링" 또는 "정보 읽기"라는 방법을 통해 이 작업을 수행할 것을 제안했습니다.

어떻게 해야 할지, 이 문제를 어떻게 해결해야 할지 모르겠습니다.

답변1

가장 쉬운 방법은 아마도 하드웨어에서 모니터링을 수행하는 것입니다. 그러나 소프트웨어에서는 tty의 이름을 pty로 바꿀 수 있다고 생각합니다! /dev파일 이름은 마술적이지 않습니다. 이는 드라이버를 번호로 지칭하는 친근한 방법입니다. Pty(또는 Unix 도메인 소켓)를 생성하고, 실제 tty(/dev/ttyUSB0)의 이름을 바꾸고 /dev/magicserial, 새 엔드포인트의 이름을 실제 tty의 이름으로 바꿉니다. 그러면 당신은 완벽하게 제어할 수 있습니다! Magicserial과 엔드포인트 사이의 모든 데이터를 복사하는 루프를 실행하는 데몬을 작성 select하면 원하는 모든 것을 모니터링할 수 있습니다. 간단하지는 않지만 작동해야 합니다.

이것은Pty 튜토리얼 예.

관련 정보