프로그램을 다음과 같은 구조로 작성하였습니다.

비 동기 프로그래밍으로 진행하면 쉬웠을 법도 한데...
이 때 잘 개념을 모르는 상태라 동기로 진행했습니다.

 

중요한 것은 필요한 데이터 Set이 2개라는 점 입니다.

1. 우리가 보고있는 화면에 업데이트 시키는 용도(10ms)
2. 모든 데이터를 빠짐없이 받아 .csv로 Save하기 위한 용도(2ms)

 

2ms 통신으로 데이터를 계속 받아오기에는 너무 주기가 짧아서
10ms로 데이터를 받아오되, 두개의 세트를 파싱하여
각각 처리하자고 생각했습니다.

C++에서는 공유하는 string변수에 2ms마다 데이터를 쌓고
10ms주기로 공유하는 변수에 접근해 가져다써서 합치는 방식이였고,
"뮤텍스"개념으로 동시접근을 방지했습니다.

이때 C++에서 데이터의 크기를 고려하여 링버퍼로 구현해서
데이터를 관리했습니다.

 

Python에서는 계속해서 Plotting이 되지 않도록
UI처럼 "Data 수신시작"과 "Plot On"을 나누었는데

수신시작이 눌리면 데이터를 교환하고,
Plot이 눌리지 않으면 데이터를 버리는 식으로 구현했습니다.

+ Recent posts