據(jù)采集終端)
C 數(shù)據(jù)采集上位機項目——TCP 自定義協(xié)議、多線程與實時波形顯示這是一個面向數(shù)據(jù)采集設(shè)備的 Windows 上位機程序主要接收下位機持續(xù)上傳的ADC、PWM 和 IMU 數(shù)據(jù)并完成協(xié)議解析、實時波形顯示、數(shù)據(jù)記錄以及異常通信診斷。項目采用C Winsock2實現(xiàn) TCP Server上位機監(jiān)聽端口等待采集設(shè)備連接。由于 TCP 本身是字節(jié)流一次recv()并不一定對應(yīng)一條完整數(shù)據(jù)幀因此程序使用接收緩存持續(xù)累積數(shù)據(jù)并根據(jù)協(xié)議幀頭、數(shù)據(jù)長度和幀尾進行拆包處理實際通信中可能出現(xiàn)的半包、粘包以及異常字節(jié)。數(shù)據(jù)解析后通過ImGui ImPlot實時顯示多通道 ADC、PWM 和 IMU 波形。網(wǎng)絡(luò)接收、數(shù)據(jù)處理以及文件保存采用多線程方式進行并使用mutex、atomic、condition_variable等機制處理線程間的數(shù)據(jù)同步。項目同時支持 CSV 導出以及原始報文/協(xié)議日志查看方便進行設(shè)備聯(lián)調(diào)和通信問題定位。主要技術(shù)C / Winsock2 / std::thread / ImGui / ImPlot / TCP Socket / CMake這個項目主要讓我理解了TCP收流 → 緩存拆包 → 二進制協(xié)議解析 → 多線程處理 → 實時數(shù)據(jù)顯示和數(shù)據(jù)保存這一類高速采集上位機的基本架構(gòu)。項目演示視頻https://www.bilibili.com/video/BV1vzu36mE7W?vd_sourcea0c4d0f9507718fa963636d070891154