Files
airborne_CO2/Source/MainAcqThread.h
xin e7cd1e93a6 优化气体传感器数据解析和消息传递
- 使用union解析CO2/H2O数据,解决大小端问题
- 添加LINECOMMEND/LINEDATASHOW消息类型区分
- 添加WorkingState/SavingDate原子变量
- 修正气体传感器部分逻辑
2026-03-04 10:22:51 +08:00

79 lines
1.8 KiB
C++

#pragma once
#include <iostream>
#include <fstream>
#include <atomic>
#include "dji_typedef.h"
#include "dji_core.h"
#include "pch.h"
#include "VehicleController.h"
#include "IrisSensor_WDA_P0.h"
#include "IrisSensor_Gas_P0.h"
#include "DataFileManager.h"
#include "MainConfigParser.h"
using namespace ZZ_DATA_DEF::DJI;
using namespace ZZ_DATA_DEF::CO2_GAS_SENSOR;
using namespace ZZ_DATA_DEF::UA_SENSOR;
using namespace ZZ_DATA_DEF::MainConfig;
#define WADCALI 2;
#define GASGALI 3;
#define NORMAL 1;
class CMainAcqThread :public QObject
{
Q_OBJECT
public:
CMainAcqThread(QObject* parent = nullptr);
~CMainAcqThread();
private:
QTime lastTime;
QTimer m_clsCapTimer;
int iFlagIsPathGenerated;
MiscControls m_struMiscCtrls;
M300RTKSettings m_struM300RTKSs;
SensorPort m_struSensorPort;
M300RTKDataFrame m_struM300RTKDataFrame;
GSDataFrame m_struGSDataFrame;
UASDataFrame m_struUASDataFrame;
double m_dRotationMatrix[9];
float m_fTempWindVecX, m_fTempWindVecY, m_fTempWindVecZ;
float m_fTempFixedWindVecX, m_fTempFixedWindVecY, m_fTempFixedWindVecZ;
public:
atomic<int> m_iFlagCaptureStatus;
private:
MainConfigParser m_ctrlConfigParser;
VehicleController m_ctrlVehicle;
DataFileManager m_ctrlData;
IrisSensor_Gas_P0 m_ctrlGasSensor;
IrisSensor_WDA_P0 m_ctrlWindSensor;
public:
int SetupContext();
int StartUp();
private:
int SetupMessagePipe();
int GetData();
int WindSensorCorrection();
int QuaternionToRotationMatrix();
int ConvertWindData();
int RotateWindVec();
int FormFixedWindData();
signals:
void Signal_UpdateVehicleMessage(QString qstrMessage,int linid);
void SendCommand(QString Worker, QString Command);
public slots:
void OnTestTimer();
int OnTimerCapture();
int Slot_StartCapture();
int Slot_StopCapture();
void GetCommand(QString Worker, QString Command);
};