C#에서 스트리밍 데이터를 그래프하는 방법
-
06-07-2019 - |
문제
직렬 포트에서 2-4 바이트 패킷으로 제공되는 스트리밍 데이터 (9600 Baud)를 그래프해야합니다. 그래프 전에 패킷을 처리해야합니다. 현재 각 전체 패킷에 대한 이벤트를 제기하고 있으며, 이는 그래프 양식에 응답 성 문제가 발생합니다.
이 문제에 대한 최상의 솔루션은 다음과 같습니다.
- 시간이 정해진 간격으로 이벤트에서 버퍼 데이터 및 버퍼링 된 데이터를 올리십시오 (즉, 500 밀리 초)
- 폴링시 버퍼링 된 데이터/빈 버퍼에 대한 버퍼 구축 및 객체 폴링을 인스턴스화하십시오.
- 다른 (?)
해결책
나는 분명히 업데이트 속도를 제한 할 것입니다. 이러한 응용 분야의 경우 각 300ms가 일반적으로 충분합니다.
이를 바탕으로 우수한 구현은 직렬 포트를 읽고 버퍼에 추가하는 작업자 스레드입니다. UI 스레드는 타이머를 사용하여 데이터를 쿼리하고 디스플레이를 업데이트 할 수 있습니다.
별도의 스레드를 사용하면 작업자 스레드가 더 높은 우선 순위로 실행될 수 있으므로로드 스파이크가 디스플레이 업데이트를 지연시킬 수 있지만 데이터가 손실되지 않습니다.
한 가지 추가 요령은 고정 타이머를 사용하지 않지만 업데이트가 완료된 후 타이머를 다시 시작하는 것입니다. 따라서 시스템 부하가 높은 업데이트에 상당한 시간이 걸리면 업데이트가 느려져 효과적으로 부하가 줄어 듭니다.
제휴하지 않습니다 StackOverflow