문제

직렬 포트에서 2-4 바이트 패킷으로 제공되는 스트리밍 데이터 (9600 Baud)를 그래프해야합니다. 그래프 전에 패킷을 처리해야합니다. 현재 각 전체 패킷에 대한 이벤트를 제기하고 있으며, 이는 그래프 양식에 응답 성 문제가 발생합니다.

이 문제에 대한 최상의 솔루션은 다음과 같습니다.

  • 시간이 정해진 간격으로 이벤트에서 버퍼 데이터 및 버퍼링 된 데이터를 올리십시오 (즉, 500 밀리 초)
  • 폴링시 버퍼링 된 데이터/빈 버퍼에 대한 버퍼 구축 및 객체 폴링을 인스턴스화하십시오.
  • 다른 (?)
도움이 되었습니까?

해결책

나는 분명히 업데이트 속도를 제한 할 것입니다. 이러한 응용 분야의 경우 각 300ms가 일반적으로 충분합니다.

이를 바탕으로 우수한 구현은 직렬 포트를 읽고 버퍼에 추가하는 작업자 스레드입니다. UI 스레드는 타이머를 사용하여 데이터를 쿼리하고 디스플레이를 업데이트 할 수 있습니다.

별도의 스레드를 사용하면 작업자 스레드가 더 높은 우선 순위로 실행될 수 있으므로로드 스파이크가 디스플레이 업데이트를 지연시킬 수 있지만 데이터가 손실되지 않습니다.

한 가지 추가 요령은 고정 타이머를 사용하지 않지만 업데이트가 완료된 후 타이머를 다시 시작하는 것입니다. 따라서 시스템 부하가 높은 업데이트에 상당한 시간이 걸리면 업데이트가 느려져 효과적으로 부하가 줄어 듭니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top