Compare commits
4 Commits
742b0a1e5a
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| c0f974fd4c | |||
| c2cad64f17 | |||
| e7cd1e93a6 | |||
| 82608bfa0a |
@ -86,50 +86,114 @@ int IrisSensor_Gas_P0::RecvData_Chk(/*std::string sRecv*/)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
union Union16 {
|
||||||
|
short s16; // 有符号短整型 (处理正负)
|
||||||
|
unsigned short u16; // 无符号短整型
|
||||||
|
unsigned char b[2]; // 字节数组
|
||||||
|
};
|
||||||
|
// 用于处理4字节(32位)数据
|
||||||
|
union Union32 {
|
||||||
|
int s32; // 有符号长整型
|
||||||
|
unsigned int u32; // 无符号长整型
|
||||||
|
unsigned char b[4]; // 字节数组
|
||||||
|
};
|
||||||
|
|
||||||
int IrisSensor_Gas_P0::ParseMeasuredData_Chk()
|
int IrisSensor_Gas_P0::ParseMeasuredData_Chk()
|
||||||
{
|
{
|
||||||
if (m_sRecv.size()!=0x1f+4)
|
// 如果长度不匹配(0x1f + 4 = 35)
|
||||||
|
if (m_sRecv.size() != 35)
|
||||||
{
|
{
|
||||||
qDebug() << "Err:Sensor_Gas ParseData Failed,Incorrect Data Length.Exit Code:1";
|
qDebug() << "Err:Sensor_Gas ParseData Failed, Incorrect Data Length. Exit Code:1";
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
unsigned char uc12, uc13, uc14, uc15, uc16,uc17,uc18,uc19,uc28,uc29,uc30,uc31,uc32, uc33;
|
|
||||||
char aaaa[34];
|
|
||||||
memcpy(aaaa,m_sRecv.c_str(),m_sRecv.size());
|
|
||||||
|
|
||||||
uc32 = m_sRecv[32];
|
Union16 u16;
|
||||||
uc33 = m_sRecv[33];
|
Union32 u32;
|
||||||
m_fTPTemperature = (uc32 * 256 + uc33) / 100;
|
|
||||||
|
|
||||||
uc30 = m_sRecv[30];
|
// 1. 解析温度 (Index 32, 33) - 假设是 short (16-bit)
|
||||||
uc31 = m_sRecv[31];
|
// 大端转小端:高位 index[32] 放在 b[1],低位 index[33] 放在 b[0]
|
||||||
m_fPB = (uc30 * 256 + uc31) / 10;
|
u16.b[1] = static_cast<unsigned char>(m_sRecv[32]);
|
||||||
|
u16.b[0] = static_cast<unsigned char>(m_sRecv[33]);
|
||||||
|
m_fTPTemperature = u16.s16 / 100.0f; // 直接使用 s16 即可自动处理正负
|
||||||
|
|
||||||
uc28 = m_sRecv[28];
|
// 2. 解析 PB (Index 30, 31)
|
||||||
uc29 = m_sRecv[29];
|
u16.b[1] = static_cast<unsigned char>(m_sRecv[30]);
|
||||||
m_fPB = (uc28 * 256 + uc29) / 10;
|
u16.b[0] = static_cast<unsigned char>(m_sRecv[31]);
|
||||||
|
// 注意:你原代码里这里和下面都赋值给了 m_fPB,是否其中一个是别的变量?
|
||||||
|
float fPB_1 = u16.s16 / 10.0f;
|
||||||
|
|
||||||
uc16 = m_sRecv[16];
|
// 3. 解析 PB (Index 28, 29)
|
||||||
uc17 = m_sRecv[17];
|
u16.b[1] = static_cast<unsigned char>(m_sRecv[28]);
|
||||||
uc18 = m_sRecv[18];
|
u16.b[0] = static_cast<unsigned char>(m_sRecv[29]);
|
||||||
uc19 = m_sRecv[19];
|
m_fPB = u16.s16 / 10.0f;
|
||||||
m_ulCO2 = uc16*256*256*256 + uc17*256*256 + uc18*256 + uc19;
|
|
||||||
|
|
||||||
uc12 = m_sRecv[12];
|
// 4. 解析 CO2 (Index 16-19) - 32位
|
||||||
uc13 = m_sRecv[13];
|
u32.b[3] = static_cast<unsigned char>(m_sRecv[16]);
|
||||||
uc14 = m_sRecv[14];
|
u32.b[2] = static_cast<unsigned char>(m_sRecv[17]);
|
||||||
uc15 = m_sRecv[15];
|
u32.b[1] = static_cast<unsigned char>(m_sRecv[18]);
|
||||||
m_ulH2O = uc12 * 256 * 256 * 256 + uc13 * 256 * 256 + uc14 * 256 + uc15;
|
u32.b[0] = static_cast<unsigned char>(m_sRecv[19]);
|
||||||
|
m_ulCO2 = u32.s32; // 如果 CO2 是正数,s32 和 u32 一样;如果有负数,s32 会正确解释补码
|
||||||
|
|
||||||
|
// 5. 解析 H2O (Index 12-15) - 32位
|
||||||
return 0;
|
u32.b[3] = static_cast<unsigned char>(m_sRecv[12]);
|
||||||
}
|
u32.b[2] = static_cast<unsigned char>(m_sRecv[13]);
|
||||||
|
u32.b[1] = static_cast<unsigned char>(m_sRecv[14]);
|
||||||
|
u32.b[0] = static_cast<unsigned char>(m_sRecv[15]);
|
||||||
|
m_ulH2O = u32.s32;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// int IrisSensor_Gas_P0::ParseMeasuredData_Chk()
|
||||||
|
// {
|
||||||
|
// if (m_sRecv.size()!=0x1f+4)
|
||||||
|
// {
|
||||||
|
// qDebug() << "Err:Sensor_Gas ParseData Failed,Incorrect Data Length.Exit Code:1";
|
||||||
|
// return 1;
|
||||||
|
// }
|
||||||
|
// else
|
||||||
|
// {
|
||||||
|
// unsigned char uc12, uc13, uc14, uc15, uc16,uc17,uc18,uc19,uc28,uc29,uc30,uc31,uc32, uc33;
|
||||||
|
// char aaaa[34];
|
||||||
|
// memcpy(aaaa,m_sRecv.c_str(),m_sRecv.size());
|
||||||
|
//
|
||||||
|
// uc32 = m_sRecv[32];
|
||||||
|
// uc33 = m_sRecv[33];
|
||||||
|
// m_fTPTemperature = (uc32 * 256 + uc33) / 100;
|
||||||
|
//
|
||||||
|
// uc30 = m_sRecv[30];
|
||||||
|
// uc31 = m_sRecv[31];
|
||||||
|
// m_fPB = (uc30 * 256 + uc31) / 10;
|
||||||
|
//
|
||||||
|
// uc28 = m_sRecv[28];
|
||||||
|
// uc29 = m_sRecv[29];
|
||||||
|
// m_fPB = (uc28 * 256 + uc29) / 10;
|
||||||
|
//
|
||||||
|
// uc16 = m_sRecv[16];
|
||||||
|
// uc17 = m_sRecv[17];
|
||||||
|
// uc18 = m_sRecv[18];
|
||||||
|
// uc19 = m_sRecv[19];
|
||||||
|
// m_ulCO2 = uc16*256*256*256 + uc17*256*256 + uc18*256 + uc19;
|
||||||
|
//
|
||||||
|
// uc12 = m_sRecv[12];
|
||||||
|
// uc13 = m_sRecv[13];
|
||||||
|
// uc14 = m_sRecv[14];
|
||||||
|
// uc15 = m_sRecv[15];
|
||||||
|
// m_ulH2O = uc12 * 256 * 256 * 256 + uc13 * 256 * 256 + uc14 * 256 + uc15;
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// return 0;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// return 0;
|
||||||
|
// }
|
||||||
|
|
||||||
int IrisSensor_Gas_P0::Initialize(std::string ucPortNumber)
|
int IrisSensor_Gas_P0::Initialize(std::string ucPortNumber)
|
||||||
{
|
{
|
||||||
QString qstrPortName = QString::fromStdString(ucPortNumber);
|
QString qstrPortName = QString::fromStdString(ucPortNumber);
|
||||||
@ -167,7 +231,7 @@ int IrisSensor_Gas_P0::GetVersion()
|
|||||||
return 0;
|
return 0;
|
||||||
}// 02 01 09 F4
|
}// 02 01 09 F4
|
||||||
|
|
||||||
int IrisSensor_Gas_P0::GetMeasuredData(unsigned long &ulCO2, unsigned long &ulH2O, float &fTPTemperature, float &fPP, float &fPB)
|
int IrisSensor_Gas_P0::GetMeasuredData( double &ulCO2, double &ulH2O, float &fTPTemperature, float &fPP, float &fPB)
|
||||||
{
|
{
|
||||||
QByteArray qbSend;
|
QByteArray qbSend;
|
||||||
qbSend.append(0x02);
|
qbSend.append(0x02);
|
||||||
@ -184,11 +248,13 @@ int IrisSensor_Gas_P0::GetMeasuredData(unsigned long &ulCO2, unsigned long &ulH2
|
|||||||
|
|
||||||
ParseMeasuredData_Chk();
|
ParseMeasuredData_Chk();
|
||||||
|
|
||||||
ulCO2 = m_ulCO2*1.0;
|
ulCO2 = m_ulCO2*1.0/10;
|
||||||
ulH2O = m_ulH2O*1.0;
|
ulH2O = m_ulH2O*1.0/10;
|
||||||
fTPTemperature = m_fTPTemperature;
|
fTPTemperature = m_fTPTemperature;
|
||||||
fPP = m_fPP;
|
fPP = m_fPP;
|
||||||
fPB = m_fPB;
|
fPB = m_fPB;
|
||||||
|
ulCO2=ulCO2<0?0:ulCO2;
|
||||||
|
ulH2O=ulH2O<0?0:ulH2O;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -275,7 +341,7 @@ int IrisSensor_Gas_P0::ResetCalibration(char cChannel)
|
|||||||
|
|
||||||
qbSend.append(ucChksum);
|
qbSend.append(ucChksum);
|
||||||
|
|
||||||
|
SendData_Chk(qbSend.toStdString());
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -13,7 +13,7 @@ private:
|
|||||||
|
|
||||||
float m_fTPTemperature;
|
float m_fTPTemperature;
|
||||||
float m_fPP, m_fPB;
|
float m_fPP, m_fPB;
|
||||||
unsigned long m_ulCO2, m_ulH2O;
|
long m_ulCO2, m_ulH2O;
|
||||||
|
|
||||||
unsigned int uiSoftwareVersion, uiHardwareVersion;
|
unsigned int uiSoftwareVersion, uiHardwareVersion;
|
||||||
public:
|
public:
|
||||||
@ -25,7 +25,7 @@ private:
|
|||||||
public:
|
public:
|
||||||
int Initialize(std::string ucPortNumber);
|
int Initialize(std::string ucPortNumber);
|
||||||
int GetVersion();
|
int GetVersion();
|
||||||
int GetMeasuredData(unsigned long &ulCO2, unsigned long &ulH2O,float &fTPTemperature,float &fPP, float &fPB);
|
int GetMeasuredData(double &ulCO2, double &ulH2O,float &fTPTemperature,float &fPP, float &fPB);
|
||||||
int ZeroCalibration_N2();
|
int ZeroCalibration_N2();
|
||||||
int ZeroCalibration_Air();
|
int ZeroCalibration_Air();
|
||||||
int SpanCalibration(char cChannel, unsigned int uiPPM);
|
int SpanCalibration(char cChannel, unsigned int uiPPM);
|
||||||
|
|||||||
@ -58,6 +58,7 @@ int IrisSensor_WDA_P0::RecvData_NChk(/*std::string sRecv*/)
|
|||||||
}
|
}
|
||||||
|
|
||||||
iCounter = 0;
|
iCounter = 0;
|
||||||
|
// TODO: 需要确认传感器输出结束符格式 (CRLF/CR/LF) - 当前逻辑可能需要调整
|
||||||
while ((char)(qbData[qbData.size()-2]) != 0x0D && (char)(qbData[qbData.size() - 2]) != 0x0A)
|
while ((char)(qbData[qbData.size()-2]) != 0x0D && (char)(qbData[qbData.size() - 2]) != 0x0A)
|
||||||
{
|
{
|
||||||
m_pSerialPort->waitForReadyRead(50);
|
m_pSerialPort->waitForReadyRead(50);
|
||||||
@ -114,9 +115,18 @@ int IrisSensor_WDA_P0::ParseData_NChk()
|
|||||||
QString dataPart = qstrTemp.mid(iEqualSignIndex + 1);
|
QString dataPart = qstrTemp.mid(iEqualSignIndex + 1);
|
||||||
QStringList dataList = dataPart.split(',');
|
QStringList dataList = dataPart.split(',');
|
||||||
|
|
||||||
m_fWindSpeed = dataList[0].toFloat();
|
if (dataList.size() >= 6)
|
||||||
m_fWindDirection = dataList[1].toInt();
|
{
|
||||||
m_fWindTemp = dataList[5].toFloat();
|
m_fWindSpeed = dataList[0].toFloat();
|
||||||
|
m_fWindDirection = dataList[1].toInt();
|
||||||
|
m_fWindTemp = dataList[5].toFloat();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
qDebug() << "Err:Sensor_WDA ParseData Failed, insufficient data fields:" << dataList.size();
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
qDebug() << m_fWindSpeed;
|
qDebug() << m_fWindSpeed;
|
||||||
qDebug() << m_fWindDirection;
|
qDebug() << m_fWindDirection;
|
||||||
@ -127,7 +137,7 @@ int IrisSensor_WDA_P0::ParseData_NChk()
|
|||||||
}*/
|
}*/
|
||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
}
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -256,7 +256,7 @@ int VehicleController::SetupEnvironment_M300RTK()
|
|||||||
qDebug() << "VehicleController: Func DjiPlatform_RegHalUartHandler. Register hal uart handler error";
|
qDebug() << "VehicleController: Func DjiPlatform_RegHalUartHandler. Register hal uart handler error";
|
||||||
throw std::runtime_error("Register hal uart handler error.");
|
throw std::runtime_error("Register hal uart handler error.");
|
||||||
}
|
}
|
||||||
//<2F><><EFBFBD><EFBFBD>
|
//<2F><><EFBFBD><EFBFBD>
|
||||||
returnCode = DjiPlatform_RegHalNetworkHandler(&networkHandler);
|
returnCode = DjiPlatform_RegHalNetworkHandler(&networkHandler);
|
||||||
if (returnCode != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS) {
|
if (returnCode != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS) {
|
||||||
printf("register hal network handler error");
|
printf("register hal network handler error");
|
||||||
@ -270,6 +270,17 @@ int VehicleController::SetupEnvironment_M300RTK()
|
|||||||
return DJI_ERROR_SYSTEM_MODULE_CODE_SYSTEM_ERROR;
|
return DJI_ERROR_SYSTEM_MODULE_CODE_SYSTEM_ERROR;
|
||||||
}
|
}
|
||||||
}else {
|
}else {
|
||||||
|
// returnCode = DjiPlatform_RegHalNetworkHandler(&networkHandler);
|
||||||
|
// if (returnCode != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS) {
|
||||||
|
// printf("register hal network handler error");
|
||||||
|
// return DJI_ERROR_SYSTEM_MODULE_CODE_SYSTEM_ERROR;
|
||||||
|
// }
|
||||||
|
// // //Attention: if you want to use camera stream view function, please uncomment it.
|
||||||
|
// returnCode = DjiPlatform_RegSocketHandler(&socketHandler);
|
||||||
|
// if (returnCode != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS) {
|
||||||
|
// printf("register osal socket handler error");
|
||||||
|
// return DJI_ERROR_SYSTEM_MODULE_CODE_SYSTEM_ERROR;
|
||||||
|
// }
|
||||||
returnCode = DjiPlatform_RegHalUsbBulkHandler(&usbBulkHandler);
|
returnCode = DjiPlatform_RegHalUsbBulkHandler(&usbBulkHandler);
|
||||||
if (returnCode != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS) {
|
if (returnCode != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS) {
|
||||||
printf("register hal usb bulk handler error");
|
printf("register hal usb bulk handler error");
|
||||||
@ -363,15 +374,17 @@ int VehicleController::StartupPSDK_M300RTK()
|
|||||||
USER_LOG_ERROR("power management init error");
|
USER_LOG_ERROR("power management init error");
|
||||||
}
|
}
|
||||||
osalHandler->TaskSleepMs(5000);
|
osalHandler->TaskSleepMs(5000);
|
||||||
SetupWidget();//<2F>?<EFBFBD><C9BC>?<EFBFBD><DFBC><3E><><EFBFBD>
|
SetupWidget();//<2F>?<EFBFBD><C9BC>?<EFBFBD><DFBC><3E><><EFBFBD>
|
||||||
osalHandler->TaskSleepMs(5000);
|
osalHandler->TaskSleepMs(5000);
|
||||||
SetupMessagePipe();//widget<65><74>vehicle
|
SetupMessagePipe();//widget<65><74>vehicle
|
||||||
// SetupWaypointStatusCallback();
|
// SetupWaypointStatusCallback();
|
||||||
// InitSystemParams();//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<EFBFBD>?<EFBFBD><E4A3AC><EFBFBD><EFBFBD>???<CDB3>??<E4A3AC><C8BB>?<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>?<EFBFBD><C4A3><EFBFBD>?<EFBFBD>?<EFBFBD>??<CDAC><CAB1><EFBFBD><EFBFBD>5<EFBFBD><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
//InitSystemParams();//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?<EFBFBD>?<EFBFBD><E4A3AC><EFBFBD><EFBFBD>???<CDB3>??<E4A3AC><C8BB>?<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>?<EFBFBD><C4A3><EFBFBD>?<EFBFBD>?<EFBFBD>??<CDAC><CAB1><EFBFBD><EFBFBD>5<EFBFBD><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
SetupSubscriptions();//?<><CAB5><EFBFBD><EFBFBD>?<EFBFBD>?<EFBFBD><C4B6>?<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD>?<EFBFBD><CCAB><EFBFBD><EFBFBD>
|
//?<><CAB5><EFBFBD><EFBFBD>?<EFBFBD>?<EFBFBD><C4B6>?<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD>?<EFBFBD><CCAB><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
|
|
||||||
qDebug()<<"M300RTK PSDK Channel Started.";
|
qDebug()<<"M300RTK PSDK Channel Started.";
|
||||||
|
m_clsWidget.stratmessageflash();
|
||||||
|
SetupSubscriptions();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -463,7 +476,10 @@ int VehicleController::GetOneDataFrame(M300RTKDataFrame& M300RTKDataFrame)
|
|||||||
|
|
||||||
int VehicleController::SetupSubscriptions()
|
int VehicleController::SetupSubscriptions()
|
||||||
{
|
{
|
||||||
|
QString qstrInfo = QString("Waiting for airborn gps Time Valide");
|
||||||
|
emit Signal_UpdateVehicleMessage(qstrInfo, 0);
|
||||||
T_DjiReturnCode tDjiReturnCode;
|
T_DjiReturnCode tDjiReturnCode;
|
||||||
|
QString qstrWBackPath("/home/data/Settings/MainSettings.ini");
|
||||||
|
|
||||||
tDjiReturnCode = DjiFcSubscription_Init();
|
tDjiReturnCode = DjiFcSubscription_Init();
|
||||||
if (tDjiReturnCode != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
|
if (tDjiReturnCode != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
|
||||||
@ -476,10 +492,39 @@ int VehicleController::SetupSubscriptions()
|
|||||||
qDebug() << "init data subscription module finished.";
|
qDebug() << "init data subscription module finished.";
|
||||||
}
|
}
|
||||||
|
|
||||||
tDjiReturnCode = DjiFcSubscription_SubscribeTopic(DJI_FC_SUBSCRIPTION_TOPIC_HEIGHT_FUSION, DJI_DATA_SUBSCRIPTION_TOPIC_1_HZ, DjiTest_FcSubscriptionReceiveHeightCallback);
|
// Subscribe GPS related topics for time sync and homepoint altitude
|
||||||
|
tDjiReturnCode = DjiFcSubscription_SubscribeTopic(DJI_FC_SUBSCRIPTION_TOPIC_GPS_SIGNAL_LEVEL, DJI_DATA_SUBSCRIPTION_TOPIC_1_HZ, NULL);
|
||||||
if (tDjiReturnCode != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
|
if (tDjiReturnCode != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
|
||||||
{
|
{
|
||||||
|
qDebug() << "Subscribe topic GPS_SIGNAL_LEVEL error.";
|
||||||
|
return DJI_ERROR_SYSTEM_MODULE_CODE_UNKNOWN;
|
||||||
|
}
|
||||||
|
|
||||||
|
tDjiReturnCode = DjiFcSubscription_SubscribeTopic(DJI_FC_SUBSCRIPTION_TOPIC_GPS_DATE, DJI_DATA_SUBSCRIPTION_TOPIC_1_HZ, NULL);
|
||||||
|
if (tDjiReturnCode != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
|
||||||
|
{
|
||||||
|
qDebug() << "Subscribe topic GPS_DATE error.";
|
||||||
|
return DJI_ERROR_SYSTEM_MODULE_CODE_UNKNOWN;
|
||||||
|
}
|
||||||
|
|
||||||
|
tDjiReturnCode = DjiFcSubscription_SubscribeTopic(DJI_FC_SUBSCRIPTION_TOPIC_GPS_TIME, DJI_DATA_SUBSCRIPTION_TOPIC_1_HZ, NULL);
|
||||||
|
if (tDjiReturnCode != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
|
||||||
|
{
|
||||||
|
qDebug() << "Subscribe topic GPS_TIME error.";
|
||||||
|
return DJI_ERROR_SYSTEM_MODULE_CODE_UNKNOWN;
|
||||||
|
}
|
||||||
|
|
||||||
|
tDjiReturnCode = DjiFcSubscription_SubscribeTopic(DJI_FC_SUBSCRIPTION_TOPIC_ALTITUDE_OF_HOMEPOINT, DJI_DATA_SUBSCRIPTION_TOPIC_1_HZ, NULL);
|
||||||
|
if (tDjiReturnCode != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
|
||||||
|
{
|
||||||
|
qDebug() << "Subscribe topic ALTITUDE_OF_HOMEPOINT error.";
|
||||||
|
return DJI_ERROR_SYSTEM_MODULE_CODE_UNKNOWN;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Subscribe other flight data topics
|
||||||
|
tDjiReturnCode = DjiFcSubscription_SubscribeTopic(DJI_FC_SUBSCRIPTION_TOPIC_HEIGHT_FUSION, DJI_DATA_SUBSCRIPTION_TOPIC_1_HZ, DjiTest_FcSubscriptionReceiveHeightCallback);
|
||||||
|
if (tDjiReturnCode != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
|
||||||
|
{
|
||||||
qDebug() << "Subscribe topic DJI_FC_SUBSCRIPTION_TOPIC_HEIGHT_FUSION error.";
|
qDebug() << "Subscribe topic DJI_FC_SUBSCRIPTION_TOPIC_HEIGHT_FUSION error.";
|
||||||
return DJI_ERROR_SYSTEM_MODULE_CODE_UNKNOWN;
|
return DJI_ERROR_SYSTEM_MODULE_CODE_UNKNOWN;
|
||||||
}
|
}
|
||||||
@ -487,7 +532,6 @@ int VehicleController::SetupSubscriptions()
|
|||||||
tDjiReturnCode = DjiFcSubscription_SubscribeTopic(DJI_FC_SUBSCRIPTION_TOPIC_VELOCITY, DJI_DATA_SUBSCRIPTION_TOPIC_5_HZ, NULL);
|
tDjiReturnCode = DjiFcSubscription_SubscribeTopic(DJI_FC_SUBSCRIPTION_TOPIC_VELOCITY, DJI_DATA_SUBSCRIPTION_TOPIC_5_HZ, NULL);
|
||||||
if (tDjiReturnCode != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
|
if (tDjiReturnCode != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
|
||||||
{
|
{
|
||||||
|
|
||||||
qDebug() << "Subscribe topic DJI_FC_SUBSCRIPTION_TOPIC_VELOCITY error.";
|
qDebug() << "Subscribe topic DJI_FC_SUBSCRIPTION_TOPIC_VELOCITY error.";
|
||||||
return DJI_ERROR_SYSTEM_MODULE_CODE_UNKNOWN;
|
return DJI_ERROR_SYSTEM_MODULE_CODE_UNKNOWN;
|
||||||
}
|
}
|
||||||
@ -502,7 +546,6 @@ int VehicleController::SetupSubscriptions()
|
|||||||
tDjiReturnCode = DjiFcSubscription_SubscribeTopic(DJI_FC_SUBSCRIPTION_TOPIC_QUATERNION, DJI_DATA_SUBSCRIPTION_TOPIC_5_HZ, NULL);
|
tDjiReturnCode = DjiFcSubscription_SubscribeTopic(DJI_FC_SUBSCRIPTION_TOPIC_QUATERNION, DJI_DATA_SUBSCRIPTION_TOPIC_5_HZ, NULL);
|
||||||
if (tDjiReturnCode != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
|
if (tDjiReturnCode != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
|
||||||
{
|
{
|
||||||
|
|
||||||
qDebug() << "Subscribe topic DJI_FC_SUBSCRIPTION_TOPIC_QUATERNION error.";
|
qDebug() << "Subscribe topic DJI_FC_SUBSCRIPTION_TOPIC_QUATERNION error.";
|
||||||
return DJI_ERROR_SYSTEM_MODULE_CODE_UNKNOWN;
|
return DJI_ERROR_SYSTEM_MODULE_CODE_UNKNOWN;
|
||||||
}
|
}
|
||||||
@ -510,12 +553,89 @@ int VehicleController::SetupSubscriptions()
|
|||||||
tDjiReturnCode = DjiFcSubscription_SubscribeTopic(DJI_FC_SUBSCRIPTION_TOPIC_ALTITUDE_BAROMETER, DJI_DATA_SUBSCRIPTION_TOPIC_1_HZ, NULL);
|
tDjiReturnCode = DjiFcSubscription_SubscribeTopic(DJI_FC_SUBSCRIPTION_TOPIC_ALTITUDE_BAROMETER, DJI_DATA_SUBSCRIPTION_TOPIC_1_HZ, NULL);
|
||||||
if (tDjiReturnCode != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
|
if (tDjiReturnCode != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
|
||||||
{
|
{
|
||||||
|
|
||||||
qDebug() << "Subscribe topic DJI_FC_SUBSCRIPTION_TOPIC_ALTITUDE_BAROMETER error.";
|
qDebug() << "Subscribe topic DJI_FC_SUBSCRIPTION_TOPIC_ALTITUDE_BAROMETER error.";
|
||||||
return DJI_ERROR_SYSTEM_MODULE_CODE_UNKNOWN;
|
return DJI_ERROR_SYSTEM_MODULE_CODE_UNKNOWN;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Wait for GPS signal and sync system time
|
||||||
|
T_DjiOsalHandler* osalHandler = DjiPlatform_GetOsalHandler();
|
||||||
|
bool bStop = false;
|
||||||
|
#ifdef ZZ_FLAG_TEST
|
||||||
|
bStop = 1;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
T_DjiFcSubscriptionGpsSignalLevel tDjiGpsSignalLevel = { 0 };
|
||||||
|
T_DjiDataTimestamp tTimestamp = { 0 };
|
||||||
|
|
||||||
|
osalHandler->TaskSleepMs(5000);
|
||||||
|
QTime qtStart = QTime::currentTime();
|
||||||
|
int iRetryTime = 0;
|
||||||
|
|
||||||
|
while (!bStop)
|
||||||
|
{
|
||||||
|
if (iRetryTime > 60)
|
||||||
|
{
|
||||||
|
bStop = 1;
|
||||||
|
}
|
||||||
|
osalHandler->TaskSleepMs(2000);
|
||||||
|
DjiFcSubscription_GetLatestValueOfTopic(DJI_FC_SUBSCRIPTION_TOPIC_GPS_SIGNAL_LEVEL, (uint8_t*)&tDjiGpsSignalLevel, sizeof(T_DjiFcSubscriptionGpsSignalLevel), &tTimestamp);
|
||||||
|
qDebug() << "GPS_SIGNAL_LEVEL:" << tDjiGpsSignalLevel;
|
||||||
|
QTime qtElapsed = QTime::currentTime();
|
||||||
|
if (tDjiGpsSignalLevel > 1)
|
||||||
|
{
|
||||||
|
bStop = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
QString qstrInfo = QString("Warning:Weak GPS signal, Waiting....GPS_SIGNAL_LEVEL:%1, Elapsed time:%2").arg(tDjiGpsSignalLevel).arg(qtStart.msecsTo(qtElapsed));
|
||||||
|
emit Signal_UpdateVehicleMessage(qstrInfo, 0);
|
||||||
|
}
|
||||||
|
iRetryTime++;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Get GPS datetime and sync system time
|
||||||
|
T_DjiFcSubscriptionGpsDate tGpsDate = { 0 };
|
||||||
|
T_DjiFcSubscriptionGpsTime tGpsTime = { 0 };
|
||||||
|
T_DjiFcSubscriptionAltitudeOfHomePoint tAltOfHP = { 0 };
|
||||||
|
T_DjiFcSubscriptionGpsPosition tDjiGpsPosition = { 0 };
|
||||||
|
|
||||||
|
DjiFcSubscription_GetLatestValueOfTopic(DJI_FC_SUBSCRIPTION_TOPIC_GPS_DATE, (uint8_t*)&tGpsDate, sizeof(T_DjiFcSubscriptionGpsDate), &tTimestamp);
|
||||||
|
DjiFcSubscription_GetLatestValueOfTopic(DJI_FC_SUBSCRIPTION_TOPIC_GPS_TIME, (uint8_t*)&tGpsTime, sizeof(T_DjiFcSubscriptionGpsTime), &tTimestamp);
|
||||||
|
DjiFcSubscription_GetLatestValueOfTopic(DJI_FC_SUBSCRIPTION_TOPIC_ALTITUDE_OF_HOMEPOINT, (uint8_t*)&tAltOfHP, sizeof(T_DjiFcSubscriptionAltitudeOfHomePoint), &tTimestamp);
|
||||||
|
DjiFcSubscription_GetLatestValueOfTopic(DJI_FC_SUBSCRIPTION_TOPIC_GPS_POSITION, (uint8_t*)&tDjiGpsPosition, sizeof(T_DjiFcSubscriptionGpsPosition), &tTimestamp);
|
||||||
|
|
||||||
|
// Save homepoint altitude to config
|
||||||
|
m_fHeightOfHomePoint_BM = tAltOfHP;
|
||||||
|
float fHeightOfHomePoint_GPS = tDjiGpsPosition.z;
|
||||||
|
QSettings qsMainSettings(qstrWBackPath, QSettings::Format::IniFormat);
|
||||||
|
qsMainSettings.setValue(QString("WBACK/HeightOfHomePoint_BM"), QString("%1").arg(m_fHeightOfHomePoint_BM));
|
||||||
|
qsMainSettings.setValue(QString("WBACK/HeightOfHomePoint_GPS"), QString("%1").arg(fHeightOfHomePoint_GPS));
|
||||||
|
qDebug() << "HeightOfHomePoint_BM:" << m_fHeightOfHomePoint_BM;
|
||||||
|
qDebug() << "HeightOfHomePoint_GPS:" << fHeightOfHomePoint_GPS;
|
||||||
|
|
||||||
|
// Sync system time from GPS
|
||||||
|
QDateTime qdtDateTime;
|
||||||
|
QString qstrDate = QString::number(tGpsDate);
|
||||||
|
QString qstrTime = QString::number(tGpsTime);
|
||||||
|
if (qstrTime.length() == 5)
|
||||||
|
{
|
||||||
|
qstrTime = "0" + qstrTime;
|
||||||
|
}
|
||||||
|
QString qstrDateTime = qstrDate + qstrTime;
|
||||||
|
qdtDateTime = QDateTime::fromString(qstrDateTime, "yyyyMMddhhmmss");
|
||||||
|
|
||||||
|
if (qdtDateTime.isValid())
|
||||||
|
{
|
||||||
|
QString command = "date -s \"" + qdtDateTime.toString("yyyy-MM-dd hh:mm:ss") + "\"";
|
||||||
|
system(command.toLatin1().data());
|
||||||
|
|
||||||
|
time_t stdTime = qdtDateTime.toTime_t();
|
||||||
|
stime(&stdTime);
|
||||||
|
qDebug() << "System time synced from GPS:" << qdtDateTime.toString("yyyy-MM-dd hh:mm:ss");
|
||||||
|
}
|
||||||
|
qstrInfo = QString("begin system");
|
||||||
|
emit Signal_UpdateVehicleMessage(qstrInfo, 0);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -602,7 +722,7 @@ int VehicleController::SetupMessagePipe()
|
|||||||
int VehicleController::SetupWidget()
|
int VehicleController::SetupWidget()
|
||||||
{
|
{
|
||||||
m_clsWidget.SetUIFilePath("/home/DJI/Widget",100);
|
m_clsWidget.SetUIFilePath("/home/DJI/Widget",100);
|
||||||
// m_clsWidget.SetUIFilePath("/home/pi/airborn/configfile/DJI/Widget",100);
|
//m_clsWidget.SetUIFilePath("/home/pi/airborn/configfile/DJI/Widget",100);
|
||||||
|
|
||||||
|
|
||||||
m_clsWidget.SetSettings(m_struUIConfig);
|
m_clsWidget.SetSettings(m_struUIConfig);
|
||||||
@ -611,251 +731,6 @@ int VehicleController::SetupWidget()
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int VehicleController::InitSystemParams()
|
|
||||||
{
|
|
||||||
T_DjiReturnCode tDjiReturnCode;
|
|
||||||
QString qstrWBackPath("/home/data/Settings/MainSettings.ini");
|
|
||||||
|
|
||||||
|
|
||||||
///Init
|
|
||||||
tDjiReturnCode = DjiFcSubscription_Init();
|
|
||||||
if (tDjiReturnCode != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
|
|
||||||
{
|
|
||||||
qDebug() << "init data subscription module error.";
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
qDebug() << "InitSystemDateTime started.";
|
|
||||||
}
|
|
||||||
|
|
||||||
///SubscribeTopic GPS_SIGNAL_LEVEL
|
|
||||||
tDjiReturnCode = DjiFcSubscription_SubscribeTopic(DJI_FC_SUBSCRIPTION_TOPIC_GPS_SIGNAL_LEVEL, DJI_DATA_SUBSCRIPTION_TOPIC_1_HZ, NULL);
|
|
||||||
if (tDjiReturnCode != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
|
|
||||||
{
|
|
||||||
|
|
||||||
qDebug() << "Subscribe topic DJI_FC_SUBSCRIPTION_TOPIC_GPS_SIGNAL_LEVEL error.";
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
///SubscribeTopic GPS_DATE
|
|
||||||
tDjiReturnCode = DjiFcSubscription_SubscribeTopic(DJI_FC_SUBSCRIPTION_TOPIC_GPS_DATE, DJI_DATA_SUBSCRIPTION_TOPIC_1_HZ, NULL);
|
|
||||||
if (tDjiReturnCode != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
|
|
||||||
{
|
|
||||||
|
|
||||||
qDebug() << "Subscribe topic DJI_FC_SUBSCRIPTION_TOPIC_GPS_DATE error.";
|
|
||||||
return -2;
|
|
||||||
}
|
|
||||||
|
|
||||||
///SubscribeTopic GPS_TIME
|
|
||||||
tDjiReturnCode = DjiFcSubscription_SubscribeTopic(DJI_FC_SUBSCRIPTION_TOPIC_GPS_TIME, DJI_DATA_SUBSCRIPTION_TOPIC_1_HZ, NULL);
|
|
||||||
if (tDjiReturnCode != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
|
|
||||||
{
|
|
||||||
|
|
||||||
qDebug() << "Subscribe topic DJI_FC_SUBSCRIPTION_TOPIC_GPS_TIME error.";
|
|
||||||
return -3;
|
|
||||||
}
|
|
||||||
|
|
||||||
///SubscribeTopic ALTITUDE_OF_HOMEPOINT
|
|
||||||
tDjiReturnCode = DjiFcSubscription_SubscribeTopic(DJI_FC_SUBSCRIPTION_TOPIC_ALTITUDE_OF_HOMEPOINT, DJI_DATA_SUBSCRIPTION_TOPIC_1_HZ, NULL);
|
|
||||||
if (tDjiReturnCode != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
|
|
||||||
{
|
|
||||||
|
|
||||||
qDebug() << "Subscribe topic DJI_FC_SUBSCRIPTION_TOPIC_ALTITUDE_OF_HOMEPOINT error.";
|
|
||||||
return -4;
|
|
||||||
}
|
|
||||||
|
|
||||||
///SubscribeTopic DJI_FC_SUBSCRIPTION_TOPIC_GPS_POSITION
|
|
||||||
tDjiReturnCode = DjiFcSubscription_SubscribeTopic(DJI_FC_SUBSCRIPTION_TOPIC_GPS_POSITION, DJI_DATA_SUBSCRIPTION_TOPIC_1_HZ, NULL);
|
|
||||||
if (tDjiReturnCode != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
|
|
||||||
{
|
|
||||||
qDebug() << "Subscribe topic DJI_FC_SUBSCRIPTION_TOPIC_GPS_POSITION error.";
|
|
||||||
return -5;
|
|
||||||
}
|
|
||||||
|
|
||||||
///Make sure Gps avalible
|
|
||||||
T_DjiOsalHandler* osalHandler = DjiPlatform_GetOsalHandler();
|
|
||||||
bool bStop = false;
|
|
||||||
/////for test
|
|
||||||
#ifdef ZZ_FLAG_TEST
|
|
||||||
|
|
||||||
bStop = 1;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
T_DjiFcSubscriptionGpsSignalLevel tDjiGpsSignalLevel = { 0 };
|
|
||||||
T_DjiDataTimestamp tTimestamp = { 0 };
|
|
||||||
|
|
||||||
osalHandler->TaskSleepMs(5000);
|
|
||||||
QTime qtStart = QTime::currentTime();
|
|
||||||
|
|
||||||
int iRetryTime = 0;
|
|
||||||
|
|
||||||
while (!bStop)
|
|
||||||
{
|
|
||||||
if (iRetryTime>60)
|
|
||||||
{
|
|
||||||
bStop = 1;
|
|
||||||
}
|
|
||||||
osalHandler->TaskSleepMs(2000);
|
|
||||||
DjiFcSubscription_GetLatestValueOfTopic(DJI_FC_SUBSCRIPTION_TOPIC_GPS_SIGNAL_LEVEL, (uint8_t*)&tDjiGpsSignalLevel, sizeof(T_DjiFcSubscriptionGpsSignalLevel), &tTimestamp);
|
|
||||||
qDebug() << "DJI_FC_SUBSCRIPTION_TOPIC_GPS_SIGNAL_LEVEL" << tDjiGpsSignalLevel;
|
|
||||||
QTime qtElapsed = QTime::currentTime();
|
|
||||||
if (tDjiGpsSignalLevel>1)
|
|
||||||
{
|
|
||||||
bStop = 1;
|
|
||||||
//emit Signal_UpdatePSDKFloatMessage("");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
QString qstrInfo = QString("Warning:Weak GPS signal, Waiting....GPS_SIGNAL_LEVEL:%1, Elapsed time:%2").arg(tDjiGpsSignalLevel).arg(qtStart.msecsTo(qtElapsed));
|
|
||||||
emit Signal_UpdateVehicleMessage(qstrInfo);
|
|
||||||
}
|
|
||||||
|
|
||||||
iRetryTime++;
|
|
||||||
}
|
|
||||||
//osalHandler->TaskSleepMs(2000);
|
|
||||||
|
|
||||||
///Get GPS Datetime
|
|
||||||
T_DjiFcSubscriptionGpsDate tGpsDate = { 0 };
|
|
||||||
T_DjiFcSubscriptionGpsTime tGpsTime = { 0 };
|
|
||||||
///Get Other
|
|
||||||
T_DjiFcSubscriptionAltitudeOfHomePoint tAltOfHP = { 0 };
|
|
||||||
T_DjiFcSubscriptionGpsPosition tDjiGpsPosition = { 0 };
|
|
||||||
|
|
||||||
tDjiReturnCode = DjiFcSubscription_GetLatestValueOfTopic(DJI_FC_SUBSCRIPTION_TOPIC_GPS_DATE, (uint8_t*)&tGpsDate, sizeof(T_DjiFcSubscriptionGpsDate), &tTimestamp);
|
|
||||||
if (tDjiReturnCode != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
|
|
||||||
{
|
|
||||||
qDebug() << "DjiFcSubscription_GetLatestValueOfTopic module error,DJI_FC_SUBSCRIPTION_TOPIC_GPS_DATE.";
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
tDjiReturnCode = DjiFcSubscription_GetLatestValueOfTopic(DJI_FC_SUBSCRIPTION_TOPIC_GPS_TIME, (uint8_t*)&tGpsTime, sizeof(T_DjiFcSubscriptionGpsTime), &tTimestamp);
|
|
||||||
if (tDjiReturnCode != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
|
|
||||||
{
|
|
||||||
qDebug() << "DjiFcSubscription_GetLatestValueOfTopic module error,DJI_FC_SUBSCRIPTION_TOPIC_GPS_DATE.";
|
|
||||||
return -2;
|
|
||||||
}
|
|
||||||
|
|
||||||
tDjiReturnCode = DjiFcSubscription_GetLatestValueOfTopic(DJI_FC_SUBSCRIPTION_TOPIC_ALTITUDE_OF_HOMEPOINT, (uint8_t*)&tAltOfHP, sizeof(T_DjiFcSubscriptionAltitudeOfHomePoint), &tTimestamp);
|
|
||||||
if (tDjiReturnCode != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
|
|
||||||
{
|
|
||||||
qDebug() << "DjiFcSubscription_GetLatestValueOfTopic module error,DJI_FC_SUBSCRIPTION_TOPIC_ALTITUDE_OF_HOMEPOINT.";
|
|
||||||
return -3;
|
|
||||||
}
|
|
||||||
|
|
||||||
tDjiReturnCode = DjiFcSubscription_GetLatestValueOfTopic(DJI_FC_SUBSCRIPTION_TOPIC_GPS_POSITION, (uint8_t*)&tDjiGpsPosition, sizeof(T_DjiFcSubscriptionGpsPosition), &tTimestamp);
|
|
||||||
if (tDjiReturnCode != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
|
|
||||||
{
|
|
||||||
qDebug() << "DjiFcSubscription_GetLatestValueOfTopic error.DJI_FC_SUBSCRIPTION_TOPIC_VELOCITY";
|
|
||||||
return -4;
|
|
||||||
}
|
|
||||||
|
|
||||||
m_fHeightOfHomePoint_BM = tAltOfHP;
|
|
||||||
float fHeightOfHomePoint_GPS= tDjiGpsPosition.z;
|
|
||||||
QString qstrHeightOfHomePoint_BM = QString("%1").arg(m_fHeightOfHomePoint_BM);
|
|
||||||
QString qstrHeightOfHomePoint_GPS = QString("%1").arg(tDjiGpsPosition.z);
|
|
||||||
//////////////////////////////////////////////////////////////////////////write back AOHP
|
|
||||||
QSettings qsMainSettings(qstrWBackPath, QSettings::Format::IniFormat);
|
|
||||||
qsMainSettings.setValue(QString("WBACK/HeightOfHomePoint_BM"), qstrHeightOfHomePoint_BM);
|
|
||||||
qsMainSettings.setValue(QString("WBACK/HeightOfHomePoint_GPS"), qstrHeightOfHomePoint_GPS);
|
|
||||||
qDebug() << qstrHeightOfHomePoint_BM << m_fHeightOfHomePoint_BM;
|
|
||||||
qDebug() << qstrHeightOfHomePoint_GPS << tDjiGpsPosition.z;
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
//qDebug() << "Date" << tGpsDate << "Time" << tGpsTime;
|
|
||||||
|
|
||||||
QDateTime qdtDateTime;
|
|
||||||
QString qstrDate, qstrTime,qstrDateTime;
|
|
||||||
qstrDate = QString::number(tGpsDate);
|
|
||||||
qstrTime = QString::number(tGpsTime);
|
|
||||||
if (qstrTime.length()==5)
|
|
||||||
{
|
|
||||||
qstrTime = "0" + qstrTime/*+"000"*/;
|
|
||||||
}
|
|
||||||
// else
|
|
||||||
// {
|
|
||||||
// qstrTime= qstrTime + "000";
|
|
||||||
// }
|
|
||||||
// QDate qd;
|
|
||||||
// qd = QDate::fromString("20121022", "yyyyMMdd");
|
|
||||||
// QTime qt;
|
|
||||||
// qt.fromString(qstrTime,"hhmmsszzz");
|
|
||||||
qstrDateTime = qstrDate + qstrTime;
|
|
||||||
qdtDateTime = QDateTime::fromString(qstrDateTime, "yyyyMMddhhmmss");
|
|
||||||
QString command="date -s \""+qdtDateTime.toString("yyyy-MM-dd hh:mm:ss")+"\"";
|
|
||||||
system(command.toLatin1().data());
|
|
||||||
|
|
||||||
time_t stdTime = qdtDateTime.toTime_t();
|
|
||||||
|
|
||||||
if (qdtDateTime.isValid())
|
|
||||||
{
|
|
||||||
stime(&stdTime);
|
|
||||||
}
|
|
||||||
#ifndef ZZ_FLAG_TEST
|
|
||||||
//stime(&stdTime);
|
|
||||||
#else
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// qDebug() << qstrDate;
|
|
||||||
// qDebug() << qstrTime;
|
|
||||||
// qDebug() << qd.isValid();
|
|
||||||
// qDebug() << qd.toString("yyyyMMdd");
|
|
||||||
// qDebug() << qt.isValid();
|
|
||||||
// qDebug() << qt;
|
|
||||||
qDebug() <<"[GPS Time Check]" << qdtDateTime.isValid();
|
|
||||||
qDebug() <<"[GPS Time:]" << qstrDateTime << "####" << qdtDateTime.toString("yyyyMMddhhmmsszzz");
|
|
||||||
|
|
||||||
///UnSubscribeTopic
|
|
||||||
/*tDjiReturnCode = DjiFcSubscription_UnSubscribeTopic(DJI_FC_SUBSCRIPTION_TOPIC_GPS_SIGNAL_LEVEL);
|
|
||||||
if (tDjiReturnCode != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
|
|
||||||
{
|
|
||||||
qDebug() << "DjiFcSubscription_UnSubscribeTopic module error,DJI_FC_SUBSCRIPTION_TOPIC_GPS_SIGNAL_LEVEL.";
|
|
||||||
return -11;
|
|
||||||
}*/
|
|
||||||
|
|
||||||
tDjiReturnCode = DjiFcSubscription_UnSubscribeTopic(DJI_FC_SUBSCRIPTION_TOPIC_GPS_SIGNAL_LEVEL);
|
|
||||||
if (tDjiReturnCode != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
|
|
||||||
{
|
|
||||||
qDebug() << "DjiFcSubscription_UnSubscribeTopic module error,DJI_FC_SUBSCRIPTION_TOPIC_GPS_SIGNAL_LEVEL.";
|
|
||||||
return -11;
|
|
||||||
}
|
|
||||||
|
|
||||||
tDjiReturnCode = DjiFcSubscription_UnSubscribeTopic(DJI_FC_SUBSCRIPTION_TOPIC_GPS_DATE);
|
|
||||||
if (tDjiReturnCode != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
|
|
||||||
{
|
|
||||||
qDebug() << "DjiFcSubscription_UnSubscribeTopic module error,DJI_FC_SUBSCRIPTION_TOPIC_GPS_DATE.";
|
|
||||||
return -12;
|
|
||||||
}
|
|
||||||
|
|
||||||
tDjiReturnCode = DjiFcSubscription_UnSubscribeTopic(DJI_FC_SUBSCRIPTION_TOPIC_GPS_TIME);
|
|
||||||
if (tDjiReturnCode != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
|
|
||||||
{
|
|
||||||
qDebug() << "DjiFcSubscription_UnSubscribeTopic module error,DJI_FC_SUBSCRIPTION_TOPIC_GPS_TIME.";
|
|
||||||
return -13;
|
|
||||||
}
|
|
||||||
|
|
||||||
tDjiReturnCode = DjiFcSubscription_UnSubscribeTopic(DJI_FC_SUBSCRIPTION_TOPIC_ALTITUDE_OF_HOMEPOINT);
|
|
||||||
if (tDjiReturnCode != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
|
|
||||||
{
|
|
||||||
qDebug() << "DjiFcSubscription_UnSubscribeTopic module error,DJI_FC_SUBSCRIPTION_TOPIC_ALTITUDE_OF_HOMEPOINT.";
|
|
||||||
return -14;
|
|
||||||
}
|
|
||||||
|
|
||||||
tDjiReturnCode = DjiFcSubscription_UnSubscribeTopic(DJI_FC_SUBSCRIPTION_TOPIC_GPS_POSITION);
|
|
||||||
if (tDjiReturnCode != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
|
|
||||||
{
|
|
||||||
qDebug() << "DjiFcSubscription_UnSubscribeTopic module error,DJI_FC_SUBSCRIPTION_TOPIC_ALTITUDE_OF_HOMEPOINT.";
|
|
||||||
return -15;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int VehicleController::Slot_OnChangeCaptureMode(char cMode)
|
int VehicleController::Slot_OnChangeCaptureMode(char cMode)
|
||||||
{
|
{
|
||||||
//ZZ_Widget_M300RTK* test = qobject_cast<ZZ_Widget_M300RTK*>(sender());
|
//ZZ_Widget_M300RTK* test = qobject_cast<ZZ_Widget_M300RTK*>(sender());
|
||||||
|
|||||||
@ -70,7 +70,7 @@ private:
|
|||||||
int SetupWidget();
|
int SetupWidget();
|
||||||
///
|
///
|
||||||
public:///for test
|
public:///for test
|
||||||
int InitSystemParams();
|
// int InitSystemParams();
|
||||||
int SetupSubscriptions();
|
int SetupSubscriptions();
|
||||||
///
|
///
|
||||||
public:///for test
|
public:///for test
|
||||||
@ -84,7 +84,7 @@ signals:
|
|||||||
int Signal_StartCapture();
|
int Signal_StartCapture();
|
||||||
int Signal_StopCapture();
|
int Signal_StopCapture();
|
||||||
|
|
||||||
void Signal_UpdateVehicleMessage(QString qstrMessage);
|
void Signal_UpdateVehicleMessage(QString qstrMessage,int lineid);
|
||||||
public slots:
|
public slots:
|
||||||
int Slot_OnChangeCaptureMode(char cMode);
|
int Slot_OnChangeCaptureMode(char cMode);
|
||||||
///for test
|
///for test
|
||||||
|
|||||||
@ -1,391 +1,455 @@
|
|||||||
#include "Widget_M300RTK.h"
|
#include "Widget_M300RTK.h"
|
||||||
enum AireType
|
#define RLX_LINENUMBER 0
|
||||||
{
|
|
||||||
Aire_Aire = 1,
|
enum AireType {
|
||||||
Aire_N2=0,
|
Aire_Aire = 1,
|
||||||
|
Aire_N2 = 0,
|
||||||
|
Aire_NONE=2,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum Target_Gas {
|
enum Target_Gas {
|
||||||
Target_CO2 = 0,
|
Target_CO2 = 0,
|
||||||
Target_H2O = 1,
|
Target_H2O = 1,
|
||||||
|
Target_NONE=2,
|
||||||
};
|
};
|
||||||
|
|
||||||
int32_t CuttrentGasValue = 0;
|
int32_t CuttrentGasValue = 0;
|
||||||
|
int32_t passwordforsetting = 0;
|
||||||
int32_t ZZ_Widget_M300RTK::m_siDjiWidgetValueBtn = 0;
|
int32_t ZZ_Widget_M300RTK::m_siDjiWidgetValueBtn = 0;
|
||||||
int32_t ZZ_Widget_M300RTK::m_siDjiWidgetValueList_CaptureMode = 1;
|
int32_t ZZ_Widget_M300RTK::m_siDjiWidgetValueList_CaptureMode = 1;
|
||||||
int32_t ZZ_Widget_M300RTK::m_siDjiWidgetValueList_DecisionHeight = 1;
|
int32_t ZZ_Widget_M300RTK::m_siDjiWidgetValueList_DecisionHeight = 1;
|
||||||
int32_t ZZ_Widget_M300RTK::m_siDjiWidgetValueList_SamplingRate = 0;
|
int32_t ZZ_Widget_M300RTK::m_siDjiWidgetValueList_SamplingRate = 0;
|
||||||
AireType CurrentAireType = Aire_Aire;
|
AireType CurrentAireType = Aire_NONE;
|
||||||
Target_Gas CurrentTargetGas = Target_CO2;
|
Target_Gas CurrentTargetGas = Target_NONE;
|
||||||
float NowTempreature = 0;
|
float NowTempreature = 0;
|
||||||
bool isnowsystemWorking = false;
|
bool isnowsystemWorking = false;
|
||||||
|
QStringList Strforshow;
|
||||||
|
QStringList StrforshowCurrent;
|
||||||
|
QStringList StrforshowLast;
|
||||||
|
vector<int> indexforshow;
|
||||||
|
|
||||||
ZZ_Widget_M300RTK::ZZ_Widget_M300RTK(QObject* parent /*= nullptr*/)
|
ZZ_Widget_M300RTK::ZZ_Widget_M300RTK(QObject *parent /*= nullptr*/) {
|
||||||
{
|
m_iFlagIsVehicleCapturing = 0;
|
||||||
m_iFlagIsVehicleCapturing = 0;
|
Strforshow.append("");
|
||||||
|
Strforshow.append("");
|
||||||
|
Strforshow.append("");
|
||||||
|
Strforshow.append("");
|
||||||
|
Strforshow.append("");
|
||||||
|
// Strforshow.append("");
|
||||||
|
// Strforshow.append("");
|
||||||
|
StrforshowCurrent = Strforshow;
|
||||||
|
StrforshowLast = Strforshow;
|
||||||
|
indexforshow.resize(Strforshow.size());
|
||||||
|
for (int i = 0; i < indexforshow.size(); i++) {
|
||||||
|
indexforshow[i] = 0;
|
||||||
|
}
|
||||||
|
connect(&m_TimerForflash, &QTimer::timeout, this, &ZZ_Widget_M300RTK::Slot_flash_screen);
|
||||||
|
|
||||||
connect(this,&ZZ_Widget_M300RTK::Signal_UpdatePSDKFloatMessage,this,&ZZ_Widget_M300RTK::Slot_UpdatePSDKFloatMessage);
|
|
||||||
|
connect(this, &ZZ_Widget_M300RTK::Signal_UpdatePSDKFloatMessage, this,
|
||||||
|
&ZZ_Widget_M300RTK::Slot_UpdatePSDKFloatMessage);
|
||||||
|
m_bIsFlashOn = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
ZZ_Widget_M300RTK::~ZZ_Widget_M300RTK()
|
ZZ_Widget_M300RTK::~ZZ_Widget_M300RTK() {
|
||||||
{
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int ZZ_Widget_M300RTK::InitParam()
|
int ZZ_Widget_M300RTK::InitParam() {
|
||||||
{
|
return 0;
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int ZZ_Widget_M300RTK::SetUIFilePath(char* pcUIFilePath, uint16_t uiLength)
|
int ZZ_Widget_M300RTK::SetUIFilePath(char *pcUIFilePath, uint16_t uiLength) {
|
||||||
{
|
if (uiLength >= 256) {
|
||||||
if (uiLength>=256)
|
qDebug() << "ZZ_Widget_M300RTK: Func SetUIFilePath. File path is too long";
|
||||||
{
|
return 1;
|
||||||
qDebug() << "ZZ_Widget_M300RTK: Func SetUIFilePath. File path is too long";
|
}
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
QByteArray qbaTemp(pcUIFilePath);
|
QByteArray qbaTemp(pcUIFilePath);
|
||||||
m_qstrFilePath = qbaTemp;
|
m_qstrFilePath = qbaTemp;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int ZZ_Widget_M300RTK::UpdateCaptureStatus(int iStatus) {
|
||||||
int ZZ_Widget_M300RTK::UpdateCaptureStatus(int iStatus)
|
m_iFlagIsVehicleCapturing = iStatus;
|
||||||
{
|
|
||||||
m_iFlagIsVehicleCapturing = iStatus;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int ZZ_Widget_M300RTK::GetSettings(UIConfig &struUIConfig)
|
int ZZ_Widget_M300RTK::GetSettings(UIConfig &struUIConfig) {
|
||||||
{
|
struUIConfig.sDecisionHeight = m_siDjiWidgetValueList_DecisionHeight;
|
||||||
struUIConfig.sDecisionHeight = m_siDjiWidgetValueList_DecisionHeight;
|
struUIConfig.sCaptureMode = m_siDjiWidgetValueList_CaptureMode;
|
||||||
struUIConfig.sCaptureMode = m_siDjiWidgetValueList_CaptureMode;
|
struUIConfig.sSamplingRate = m_siDjiWidgetValueList_SamplingRate;
|
||||||
struUIConfig.sSamplingRate = m_siDjiWidgetValueList_SamplingRate;
|
return 0;
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int ZZ_Widget_M300RTK::SetSettings(UIConfig struUIConfig)
|
int ZZ_Widget_M300RTK::SetSettings(UIConfig struUIConfig) {
|
||||||
{
|
m_struUIConfig = struUIConfig;
|
||||||
m_struUIConfig = struUIConfig;
|
m_siDjiWidgetValueList_CaptureMode = struUIConfig.sCaptureMode;
|
||||||
m_siDjiWidgetValueList_CaptureMode = struUIConfig.sCaptureMode;
|
m_siDjiWidgetValueList_DecisionHeight = struUIConfig.sDecisionHeight;
|
||||||
m_siDjiWidgetValueList_DecisionHeight = struUIConfig.sDecisionHeight;
|
m_siDjiWidgetValueList_SamplingRate = struUIConfig.sSamplingRate;
|
||||||
m_siDjiWidgetValueList_SamplingRate = struUIConfig.sSamplingRate;
|
return 0;
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int ZZ_Widget_M300RTK::PreparteEnvironment()
|
void ZZ_Widget_M300RTK::stratmessageflash() {
|
||||||
{
|
|
||||||
|
|
||||||
|
|
||||||
T_DjiReturnCode djiStat;
|
m_TimerForflash.start(5000);
|
||||||
|
m_bIsFlashOn = true;
|
||||||
static const T_DjiWidgetHandlerListItem s_DjiWidgetHandlerList[] =
|
|
||||||
{
|
|
||||||
{0, DJI_WIDGET_TYPE_SWITCH, ZZ_Widget_M300RTK::OnUpdateWidgetValue, ZZ_Widget_M300RTK::OnLoadWidgetValue, this},
|
|
||||||
{1, DJI_WIDGET_TYPE_LIST, ZZ_Widget_M300RTK::OnUpdateWidgetValue, ZZ_Widget_M300RTK::OnLoadWidgetValue, this},
|
|
||||||
{2, DJI_WIDGET_TYPE_LIST, ZZ_Widget_M300RTK::OnUpdateWidgetValue, ZZ_Widget_M300RTK::OnLoadWidgetValue, this},
|
|
||||||
{3, DJI_WIDGET_TYPE_LIST, ZZ_Widget_M300RTK::OnUpdateWidgetValue, ZZ_Widget_M300RTK::OnLoadWidgetValue, this},
|
|
||||||
{4, DJI_WIDGET_TYPE_INT_INPUT_BOX, ZZ_Widget_M300RTK::OnUpdateWidgetValue, ZZ_Widget_M300RTK::OnLoadWidgetValue, this},
|
|
||||||
{5, DJI_WIDGET_TYPE_BUTTON, ZZ_Widget_M300RTK::OnUpdateWidgetValue, ZZ_Widget_M300RTK::OnLoadWidgetValue, this},
|
|
||||||
{6, DJI_WIDGET_TYPE_LIST, ZZ_Widget_M300RTK::OnUpdateWidgetValue, ZZ_Widget_M300RTK::OnLoadWidgetValue, this},
|
|
||||||
{7, DJI_WIDGET_TYPE_BUTTON, ZZ_Widget_M300RTK::OnUpdateWidgetValue, ZZ_Widget_M300RTK::OnLoadWidgetValue, this},
|
|
||||||
{8, DJI_WIDGET_TYPE_LIST, ZZ_Widget_M300RTK::OnUpdateWidgetValue, ZZ_Widget_M300RTK::OnLoadWidgetValue, this},
|
|
||||||
{9, DJI_WIDGET_TYPE_INT_INPUT_BOX, ZZ_Widget_M300RTK::OnUpdateWidgetValue, ZZ_Widget_M300RTK::OnLoadWidgetValue, this},
|
|
||||||
{10, DJI_WIDGET_TYPE_BUTTON, ZZ_Widget_M300RTK::OnUpdateWidgetValue, ZZ_Widget_M300RTK::OnLoadWidgetValue, this}
|
|
||||||
};
|
|
||||||
|
|
||||||
djiStat = DjiWidget_Init();
|
|
||||||
if (djiStat != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
|
|
||||||
{
|
|
||||||
qDebug() << "ZZ_Widget_M300RTK: Func DjiWidget_Init. Dji widget init error"<< djiStat;
|
|
||||||
//return djiStat;
|
|
||||||
}
|
|
||||||
|
|
||||||
djiStat = DjiWidget_RegDefaultUiConfigByDirPath(m_qstrFilePath.toLatin1());
|
|
||||||
if (djiStat != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
|
|
||||||
{
|
|
||||||
qDebug() << m_qstrFilePath.toLatin1();
|
|
||||||
qDebug() << "ZZ_Widget_M300RTK: Func DjiWidget_RegDefaultUiConfigByDirPath.Add default widget ui config error";
|
|
||||||
return djiStat;
|
|
||||||
}
|
|
||||||
|
|
||||||
djiStat = DjiWidget_RegHandlerList(s_DjiWidgetHandlerList, sizeof(s_DjiWidgetHandlerList) / sizeof(T_DjiWidgetHandlerListItem));
|
|
||||||
if (djiStat != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
|
|
||||||
{
|
|
||||||
qDebug() <<"ZZ_Widget_M300RTK: Func DjiWidget_RegHandlerList.Set widget handler list error";
|
|
||||||
return djiStat;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int ZZ_Widget_M300RTK::UploadResources()
|
int ZZ_Widget_M300RTK::PreparteEnvironment() {
|
||||||
|
T_DjiReturnCode djiStat;
|
||||||
|
|
||||||
|
static const T_DjiWidgetHandlerListItem s_DjiWidgetHandlerList[] =
|
||||||
|
{
|
||||||
|
{0, DJI_WIDGET_TYPE_SWITCH, ZZ_Widget_M300RTK::OnUpdateWidgetValue, ZZ_Widget_M300RTK::OnLoadWidgetValue, this},
|
||||||
|
{1, DJI_WIDGET_TYPE_LIST, ZZ_Widget_M300RTK::OnUpdateWidgetValue, ZZ_Widget_M300RTK::OnLoadWidgetValue, this},
|
||||||
|
{2, DJI_WIDGET_TYPE_LIST, ZZ_Widget_M300RTK::OnUpdateWidgetValue, ZZ_Widget_M300RTK::OnLoadWidgetValue, this},
|
||||||
|
{3, DJI_WIDGET_TYPE_LIST, ZZ_Widget_M300RTK::OnUpdateWidgetValue, ZZ_Widget_M300RTK::OnLoadWidgetValue, this},
|
||||||
{
|
{
|
||||||
return 0;
|
4, DJI_WIDGET_TYPE_INT_INPUT_BOX, ZZ_Widget_M300RTK::OnUpdateWidgetValue,
|
||||||
|
ZZ_Widget_M300RTK::OnLoadWidgetValue, this
|
||||||
|
},
|
||||||
|
{
|
||||||
|
5, DJI_WIDGET_TYPE_INT_INPUT_BOX, ZZ_Widget_M300RTK::OnUpdateWidgetValue,
|
||||||
|
ZZ_Widget_M300RTK::OnLoadWidgetValue, this
|
||||||
|
},
|
||||||
|
{6, DJI_WIDGET_TYPE_BUTTON, ZZ_Widget_M300RTK::OnUpdateWidgetValue, ZZ_Widget_M300RTK::OnLoadWidgetValue, this},
|
||||||
|
{7, DJI_WIDGET_TYPE_LIST, ZZ_Widget_M300RTK::OnUpdateWidgetValue, ZZ_Widget_M300RTK::OnLoadWidgetValue, this},
|
||||||
|
{8, DJI_WIDGET_TYPE_BUTTON, ZZ_Widget_M300RTK::OnUpdateWidgetValue, ZZ_Widget_M300RTK::OnLoadWidgetValue, this},
|
||||||
|
{9, DJI_WIDGET_TYPE_LIST, ZZ_Widget_M300RTK::OnUpdateWidgetValue, ZZ_Widget_M300RTK::OnLoadWidgetValue, this},
|
||||||
|
{
|
||||||
|
10, DJI_WIDGET_TYPE_INT_INPUT_BOX, ZZ_Widget_M300RTK::OnUpdateWidgetValue,
|
||||||
|
ZZ_Widget_M300RTK::OnLoadWidgetValue, this
|
||||||
|
},
|
||||||
|
{11, DJI_WIDGET_TYPE_BUTTON, ZZ_Widget_M300RTK::OnUpdateWidgetValue, ZZ_Widget_M300RTK::OnLoadWidgetValue, this}
|
||||||
|
};
|
||||||
|
|
||||||
|
djiStat = DjiWidget_Init();
|
||||||
|
if (djiStat != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS) {
|
||||||
|
qDebug() << "ZZ_Widget_M300RTK: Func DjiWidget_Init. Dji widget init error" << djiStat;
|
||||||
|
//return djiStat;
|
||||||
|
}
|
||||||
|
|
||||||
|
djiStat = DjiWidget_RegDefaultUiConfigByDirPath(m_qstrFilePath.toLatin1());
|
||||||
|
if (djiStat != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS) {
|
||||||
|
qDebug() << m_qstrFilePath.toLatin1();
|
||||||
|
qDebug() << "ZZ_Widget_M300RTK: Func DjiWidget_RegDefaultUiConfigByDirPath.Add default widget ui config error";
|
||||||
|
return djiStat;
|
||||||
|
}
|
||||||
|
|
||||||
|
djiStat = DjiWidget_RegHandlerList(s_DjiWidgetHandlerList,
|
||||||
|
sizeof(s_DjiWidgetHandlerList) / sizeof(T_DjiWidgetHandlerListItem));
|
||||||
|
if (djiStat != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS) {
|
||||||
|
qDebug() << "ZZ_Widget_M300RTK: Func DjiWidget_RegHandlerList.Set widget handler list error";
|
||||||
|
return djiStat;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ZZ_Widget_M300RTK::test_UpdatePSDKFloatMessage(QString qstrMessage)
|
int ZZ_Widget_M300RTK::UploadResources() {
|
||||||
{
|
return 0;
|
||||||
T_DjiReturnCode djiStat;
|
|
||||||
|
|
||||||
djiStat = DjiWidgetFloatingWindow_ShowMessage(qstrMessage.toLatin1());
|
|
||||||
if (djiStat != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
|
|
||||||
{
|
|
||||||
qDebug() << "ZZ_Widget_M300RTK: Func test_UpdatePSDKFloatMessage.Floating window show message error";
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
T_DjiReturnCode ZZ_Widget_M300RTK::OnUpdateWidgetValue(E_DjiWidgetType widgetType, uint32_t index, int32_t value, void* userData)
|
int ZZ_Widget_M300RTK::test_UpdatePSDKFloatMessage(QString qstrMessage) {
|
||||||
{
|
T_DjiReturnCode djiStat;
|
||||||
ZZ_Widget_M300RTK* pCaller = (ZZ_Widget_M300RTK*)userData;
|
|
||||||
|
djiStat = DjiWidgetFloatingWindow_ShowMessage(qstrMessage.toLatin1());
|
||||||
|
if (djiStat != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS) {
|
||||||
|
qDebug() << "ZZ_Widget_M300RTK: Func test_UpdatePSDKFloatMessage.Floating window show message error";
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
T_DjiReturnCode ZZ_Widget_M300RTK::OnUpdateWidgetValue(E_DjiWidgetType widgetType, uint32_t index, int32_t value,
|
||||||
|
void *userData) {
|
||||||
|
ZZ_Widget_M300RTK *pCaller = (ZZ_Widget_M300RTK *) userData;
|
||||||
|
|
||||||
|
|
||||||
if (pCaller->m_iFlagIsVehicleCapturing)
|
if (pCaller->m_iFlagIsVehicleCapturing) {
|
||||||
{
|
return DJI_ERROR_SYSTEM_MODULE_CODE_UNKNOWN;
|
||||||
return DJI_ERROR_SYSTEM_MODULE_CODE_UNKNOWN;
|
}
|
||||||
}
|
if (widgetType == DJI_WIDGET_TYPE_INT_INPUT_BOX) {
|
||||||
if (widgetType == DJI_WIDGET_TYPE_INT_INPUT_BOX) {
|
if (index == 5) {
|
||||||
if (index == 4)
|
qDebug() << "now tempreatrue is " << value;
|
||||||
{
|
NowTempreature = value;
|
||||||
qDebug()<<"now tempreatrue is "<<value;
|
}
|
||||||
NowTempreature=value;
|
if (index == 10) {
|
||||||
}
|
qDebug() << "now gas value is " << value;
|
||||||
if (index == 9)
|
CuttrentGasValue = value;
|
||||||
{
|
}
|
||||||
qDebug() << "now gas value is " << value;
|
if (index==4) {
|
||||||
CuttrentGasValue = value;
|
passwordforsetting = value;
|
||||||
}
|
qDebug() << "now password is " << passwordforsetting;
|
||||||
}
|
}
|
||||||
if (widgetType== DJI_WIDGET_TYPE_BUTTON) {
|
}
|
||||||
if (index==5)
|
if (widgetType == DJI_WIDGET_TYPE_BUTTON) {
|
||||||
{
|
if (passwordforsetting!=123456) {
|
||||||
//qDebug()<<"now value is "<<value;
|
pCaller->emit Signal_UpdatePSDKFloatMessage("wrong password",RLX_LINENUMBER);
|
||||||
|
return DJI_ERROR_SYSTEM_MODULE_CODE_UNKNOWN;
|
||||||
|
}
|
||||||
|
if (index == 6) {
|
||||||
|
//qDebug()<<"now value is "<<value;
|
||||||
|
|
||||||
|
|
||||||
|
if (value == 1) {
|
||||||
if (value==1)
|
if (isnowsystemWorking == true) return 0;
|
||||||
{
|
if (NowTempreature == 0) {
|
||||||
if (isnowsystemWorking==true) return 0;
|
pCaller->emit Signal_UpdatePSDKFloatMessage("please set correct temperature first",RLX_LINENUMBER);
|
||||||
if (NowTempreature==0) {
|
return DJI_ERROR_SYSTEM_MODULE_CODE_UNKNOWN;
|
||||||
pCaller->emit Signal_UpdatePSDKFloatMessage("please set correct temperature first");
|
}
|
||||||
|
isnowsystemWorking = true;
|
||||||
|
pCaller->emit Signal_UpdatePSDKFloatMessage(
|
||||||
|
"calibrating wind Sensor temperature:" + QString::number(NowTempreature * 1.0 / 10),RLX_LINENUMBER);
|
||||||
|
//qt 消息队列执行
|
||||||
|
pCaller->emit SendCommand("WDA", "StartCalibrate#" + QString::number(NowTempreature * 1.0 / 10));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (index == 8) {
|
||||||
|
if (value == 1) {
|
||||||
|
if (isnowsystemWorking == true) return 0;
|
||||||
|
isnowsystemWorking = true;
|
||||||
|
QString AiretypeStr;
|
||||||
|
if (CurrentAireType == Aire_Aire) {
|
||||||
|
AiretypeStr = "Air";
|
||||||
|
} else if (CurrentAireType == Aire_N2) {
|
||||||
|
AiretypeStr = "N2";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
pCaller->emit Signal_UpdatePSDKFloatMessage("please select correct aire type first",RLX_LINENUMBER);
|
||||||
|
isnowsystemWorking = false;
|
||||||
|
return DJI_ERROR_SYSTEM_MODULE_CODE_UNKNOWN;
|
||||||
|
}
|
||||||
|
qDebug() << "start gas sensor zero calibrate with " + AiretypeStr;
|
||||||
|
pCaller->emit Signal_UpdatePSDKFloatMessage("ZeroCalibrate with " + AiretypeStr,RLX_LINENUMBER);
|
||||||
|
QCoreApplication::processEvents();
|
||||||
|
pCaller->emit SendCommand("GAS", "ZeroCalibrate#" + AiretypeStr);
|
||||||
|
qDebug() << "---------------------------------------------";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (index == 11) {
|
||||||
|
if (value == 1) {
|
||||||
|
if (isnowsystemWorking == true) return 0;
|
||||||
|
isnowsystemWorking = true;
|
||||||
|
QString TargetGasStr;
|
||||||
|
if (CurrentTargetGas == Target_CO2) {
|
||||||
|
TargetGasStr = "CO2";
|
||||||
|
} else if (CurrentTargetGas==Target_H2O) {
|
||||||
|
TargetGasStr = "H2O";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
pCaller->emit Signal_UpdatePSDKFloatMessage("please select correct target gas first",RLX_LINENUMBER);
|
||||||
|
isnowsystemWorking = false;
|
||||||
return DJI_ERROR_SYSTEM_MODULE_CODE_UNKNOWN;
|
return DJI_ERROR_SYSTEM_MODULE_CODE_UNKNOWN;
|
||||||
}
|
}
|
||||||
isnowsystemWorking= true;
|
//确保当前气体值不为0
|
||||||
pCaller->emit Signal_UpdatePSDKFloatMessage("calibrating wind Sensor temperature:"+QString::number(NowTempreature*1.0/10));
|
if (CuttrentGasValue == 0) {
|
||||||
pCaller->emit SendCommand("WDA", "StartCalibrate#"+QString::number(NowTempreature*1.0/10));
|
pCaller->emit Signal_UpdatePSDKFloatMessage("please set correct gas value first",RLX_LINENUMBER);
|
||||||
|
isnowsystemWorking = false;
|
||||||
|
return DJI_ERROR_SYSTEM_MODULE_CODE_UNKNOWN;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
qDebug() << "start gas sensor span calibrate with " + TargetGasStr + " value is " + QString::number(
|
||||||
}
|
CuttrentGasValue);
|
||||||
if (index==7) {
|
pCaller->emit Signal_UpdatePSDKFloatMessage(
|
||||||
if (value==1)
|
TargetGasStr + " Span Calibrating gas value is " + QString::number(CuttrentGasValue),
|
||||||
{
|
RLX_LINENUMBER);
|
||||||
if (isnowsystemWorking==true) return 0;
|
pCaller->emit SendCommand(
|
||||||
isnowsystemWorking= true;
|
"GAS", "SpanCalibrate#" + TargetGasStr + "#" + QString::number(CuttrentGasValue));
|
||||||
QString AiretypeStr;
|
}
|
||||||
if (CurrentAireType==Aire_Aire) {
|
}
|
||||||
AiretypeStr="Air";
|
}
|
||||||
}
|
|
||||||
else {
|
|
||||||
AiretypeStr="N2";
|
|
||||||
}
|
|
||||||
qDebug()<<"start gas sensor zero calibrate with "+AiretypeStr;
|
|
||||||
pCaller->emit Signal_UpdatePSDKFloatMessage("ZeroCalibrate with "+AiretypeStr);
|
|
||||||
pCaller->emit SendCommand("GAS", "ZeroCalibrate#"+AiretypeStr);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (index==10) {
|
|
||||||
if (value==1)
|
|
||||||
{
|
|
||||||
if (isnowsystemWorking==true) return 0;
|
|
||||||
isnowsystemWorking= true;
|
|
||||||
QString TargetGasStr;
|
|
||||||
if (CurrentTargetGas==Target_CO2) {
|
|
||||||
TargetGasStr="CO2";
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
TargetGasStr="H2O";
|
|
||||||
}
|
|
||||||
//确保当前气体值不为0
|
|
||||||
if (CuttrentGasValue==0) {
|
|
||||||
pCaller->emit Signal_UpdatePSDKFloatMessage("please set correct gas value first");
|
|
||||||
isnowsystemWorking=false;
|
|
||||||
return DJI_ERROR_SYSTEM_MODULE_CODE_UNKNOWN;
|
|
||||||
}
|
|
||||||
|
|
||||||
qDebug()<<"start gas sensor span calibrate with "+TargetGasStr+" value is "+QString::number(CuttrentGasValue);
|
|
||||||
pCaller->emit Signal_UpdatePSDKFloatMessage(TargetGasStr+" Span Calibrating gas value is "+QString::number(CuttrentGasValue));
|
|
||||||
pCaller->emit SendCommand("GAS", "SpanCalibrate#"+TargetGasStr+"#"+QString::number(CuttrentGasValue));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
if (widgetType == DJI_WIDGET_TYPE_SWITCH) {
|
||||||
|
if (ZZ_Widget_M300RTK::m_siDjiWidgetValueList_CaptureMode == 0) {
|
||||||
|
pCaller->emit Signal_UpdatePSDKFloatMessage("Automatic capture mode.Please don't use this function",
|
||||||
|
RLX_LINENUMBER);
|
||||||
|
return DJI_ERROR_SYSTEM_MODULE_CODE_UNKNOWN;
|
||||||
|
} else {
|
||||||
|
if (value == 1) {
|
||||||
|
if (isnowsystemWorking == true) {
|
||||||
|
// ZZ_Widget_M300RTK::m_siDjiWidgetValueBtn = !value;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
isnowsystemWorking = true;
|
||||||
|
pCaller->emit Signal_UpdatePSDKFloatMessage("start capture",RLX_LINENUMBER);
|
||||||
|
pCaller->emit Signal_StartCapture();
|
||||||
|
} else {
|
||||||
|
if (isnowsystemWorking == false) {
|
||||||
|
// ZZ_Widget_M300RTK::m_siDjiWidgetValueBtn = !value;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
isnowsystemWorking = false;
|
||||||
|
pCaller->emit Signal_UpdatePSDKFloatMessage("capture stopped",RLX_LINENUMBER);
|
||||||
|
pCaller->emit Signal_StopCapture();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ZZ_Widget_M300RTK::m_siDjiWidgetValueBtn = value;
|
||||||
|
|
||||||
|
///for test
|
||||||
|
QString qstrTest;
|
||||||
|
qDebug() << "OnUpdateWidgetValue " << "widgetType " << widgetType << "index " << index << "value " << value;
|
||||||
|
qstrTest = QString("index:%1,value:%2").arg(index, value);
|
||||||
|
//pCaller->test_UpdatePSDKFloatMessage(qstrTest);
|
||||||
|
//qstrTest = "12345";
|
||||||
|
//pCaller->emit Signal_UpdatePSDKFloatMessage(qstrTest);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (widgetType == DJI_WIDGET_TYPE_LIST) {
|
||||||
if (widgetType == DJI_WIDGET_TYPE_SWITCH )
|
if (index == 1) {
|
||||||
{
|
pCaller->emit Signal_UpdateCaptureMode((char) value);
|
||||||
if (ZZ_Widget_M300RTK::m_siDjiWidgetValueList_CaptureMode==0)
|
ZZ_Widget_M300RTK::m_siDjiWidgetValueList_CaptureMode = value;
|
||||||
{
|
} else if (index == 2) {
|
||||||
pCaller->emit Signal_UpdatePSDKFloatMessage("Automatic capture mode.Please don't use this function");
|
ZZ_Widget_M300RTK::m_siDjiWidgetValueList_DecisionHeight = value;
|
||||||
return DJI_ERROR_SYSTEM_MODULE_CODE_UNKNOWN;
|
} else if (index == 3) {
|
||||||
}
|
ZZ_Widget_M300RTK::m_siDjiWidgetValueList_SamplingRate = value;
|
||||||
else
|
} else if (index == 7) {
|
||||||
{
|
CurrentAireType = (AireType) value;
|
||||||
|
} else if (index == 9) {
|
||||||
if (value==1)
|
CurrentTargetGas = (Target_Gas) value;
|
||||||
{
|
}
|
||||||
if (isnowsystemWorking==true) {
|
|
||||||
// ZZ_Widget_M300RTK::m_siDjiWidgetValueBtn = !value;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
isnowsystemWorking= true;
|
|
||||||
pCaller->emit Signal_UpdatePSDKFloatMessage("start capture");
|
|
||||||
pCaller->emit Signal_StartCapture();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (isnowsystemWorking==false) {
|
|
||||||
// ZZ_Widget_M300RTK::m_siDjiWidgetValueBtn = !value;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
isnowsystemWorking= false;
|
|
||||||
pCaller->emit Signal_UpdatePSDKFloatMessage("capture stopped");
|
|
||||||
pCaller->emit Signal_StopCapture();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
ZZ_Widget_M300RTK::m_siDjiWidgetValueBtn = value;
|
|
||||||
|
|
||||||
///for test
|
|
||||||
QString qstrTest;
|
|
||||||
qDebug() << "OnUpdateWidgetValue " << "widgetType " << widgetType << "index " << index << "value " << value;
|
|
||||||
qstrTest = QString("index:%1,value:%2").arg(index, value);
|
|
||||||
//pCaller->test_UpdatePSDKFloatMessage(qstrTest);
|
|
||||||
//qstrTest = "12345";
|
|
||||||
//pCaller->emit Signal_UpdatePSDKFloatMessage(qstrTest);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
if (widgetType == DJI_WIDGET_TYPE_LIST )
|
|
||||||
{
|
|
||||||
if (index==1)
|
|
||||||
{
|
|
||||||
pCaller->emit Signal_UpdateCaptureMode((char)value);
|
|
||||||
ZZ_Widget_M300RTK::m_siDjiWidgetValueList_CaptureMode = value;
|
|
||||||
}
|
|
||||||
else if (index == 2)
|
|
||||||
{
|
|
||||||
ZZ_Widget_M300RTK::m_siDjiWidgetValueList_DecisionHeight = value;
|
|
||||||
}
|
|
||||||
else if (index == 3)
|
|
||||||
{
|
|
||||||
ZZ_Widget_M300RTK::m_siDjiWidgetValueList_SamplingRate = value;
|
|
||||||
}
|
|
||||||
else if (index==6)
|
|
||||||
{
|
|
||||||
CurrentAireType = (AireType)value;
|
|
||||||
}
|
|
||||||
else if (index==8)
|
|
||||||
{
|
|
||||||
CurrentTargetGas = (Target_Gas)value;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef ZZ_FLAG_TEST
|
#ifdef ZZ_FLAG_TEST
|
||||||
qDebug() << "OnUpdateWidgetValue " << "widgetType " << widgetType << "index " << index << "value " << value;
|
qDebug() << "OnUpdateWidgetValue " << "widgetType " << widgetType << "index " << index << "value " << value;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
return DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
|
return DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
T_DjiReturnCode ZZ_Widget_M300RTK::OnLoadWidgetValue(E_DjiWidgetType widgetType, uint32_t index, int32_t* value, void* userData)
|
T_DjiReturnCode ZZ_Widget_M300RTK::OnLoadWidgetValue(E_DjiWidgetType widgetType, uint32_t index, int32_t *value,
|
||||||
{
|
void *userData) {
|
||||||
|
if (widgetType == DJI_WIDGET_TYPE_SWITCH) {
|
||||||
|
//qDebug() << "OnLoadWidgetValue " << "widgetType " << widgetType << "index " << index << "value " << value;
|
||||||
|
|
||||||
if (widgetType == DJI_WIDGET_TYPE_SWITCH)
|
*value = ZZ_Widget_M300RTK::m_siDjiWidgetValueBtn;
|
||||||
{
|
}
|
||||||
//qDebug() << "OnLoadWidgetValue " << "widgetType " << widgetType << "index " << index << "value " << value;
|
|
||||||
|
|
||||||
*value= ZZ_Widget_M300RTK::m_siDjiWidgetValueBtn;
|
if (widgetType == DJI_WIDGET_TYPE_LIST) {
|
||||||
}
|
//qDebug() << "OnLoadWidgetValue " << "widgetType " << widgetType << "index " << index << "value " << value;
|
||||||
|
if (index == 1) {
|
||||||
if (widgetType == DJI_WIDGET_TYPE_LIST)
|
*value = ZZ_Widget_M300RTK::m_siDjiWidgetValueList_CaptureMode;
|
||||||
{
|
} else if (index == 2) {
|
||||||
//qDebug() << "OnLoadWidgetValue " << "widgetType " << widgetType << "index " << index << "value " << value;
|
*value = ZZ_Widget_M300RTK::m_siDjiWidgetValueList_DecisionHeight;
|
||||||
if (index == 1)
|
} else if (index == 3) {
|
||||||
{
|
*value = ZZ_Widget_M300RTK::m_siDjiWidgetValueList_SamplingRate;
|
||||||
*value = ZZ_Widget_M300RTK::m_siDjiWidgetValueList_CaptureMode;
|
} else if (index == 7) {
|
||||||
|
*value = (int32_t) CurrentAireType;
|
||||||
|
} else if (index == 9) {
|
||||||
|
*value = (int32_t) CurrentTargetGas;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (widgetType == DJI_WIDGET_TYPE_INT_INPUT_BOX) {
|
||||||
|
if (index==4) {
|
||||||
|
*value = passwordforsetting;
|
||||||
}
|
}
|
||||||
else if (index == 2)
|
if (index == 5) {
|
||||||
{
|
*value = NowTempreature;
|
||||||
*value = ZZ_Widget_M300RTK::m_siDjiWidgetValueList_DecisionHeight;
|
}
|
||||||
}
|
if (index == 10) {
|
||||||
else if (index == 3)
|
*value = CuttrentGasValue;
|
||||||
{
|
}
|
||||||
*value = ZZ_Widget_M300RTK::m_siDjiWidgetValueList_SamplingRate;
|
}
|
||||||
}
|
|
||||||
else if (index == 6)
|
|
||||||
{
|
|
||||||
*value = (int32_t)CurrentAireType;
|
|
||||||
} else if (index == 8)
|
|
||||||
{
|
|
||||||
*value = (int32_t)CurrentTargetGas;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
if (widgetType==DJI_WIDGET_TYPE_INT_INPUT_BOX)
|
|
||||||
{
|
|
||||||
if (index == 4)
|
|
||||||
{
|
|
||||||
*value = NowTempreature;
|
|
||||||
}
|
|
||||||
if (index == 9)
|
|
||||||
{
|
|
||||||
*value = CuttrentGasValue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
return DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
|
return DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ZZ_Widget_M300RTK::Slot_UpdatePSDKFloatMessage(QString qstrMessage)
|
int ZZ_Widget_M300RTK::Slot_UpdatePSDKFloatMessage(QString qstrMessage, int lineid) {
|
||||||
{
|
T_DjiReturnCode djiStat;
|
||||||
T_DjiReturnCode djiStat;
|
Strforshow[lineid] = qstrMessage;
|
||||||
|
// qDebug() << "float message line " << lineid << " : " << qstrMessage;
|
||||||
|
Slot_flash_screen();
|
||||||
|
//
|
||||||
|
// QString strinone="";
|
||||||
|
// for (int i = 0; i < Strforshow.size(); i++) {
|
||||||
|
// strinone+=Strforshow[i]+"\r\n";
|
||||||
|
// }
|
||||||
|
// djiStat = DjiWidgetFloatingWindow_ShowMessage(strinone.toLatin1());
|
||||||
|
// if (djiStat != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
|
||||||
|
// {
|
||||||
|
// qDebug() << "ZZ_Widget_M300RTK: Func test_UpdatePSDKFloatMessage.Floating window show message error";
|
||||||
|
// }
|
||||||
|
|
||||||
djiStat = DjiWidgetFloatingWindow_ShowMessage(qstrMessage.toLatin1());
|
return 0;
|
||||||
if (djiStat != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS)
|
|
||||||
{
|
|
||||||
qDebug() << "ZZ_Widget_M300RTK: Func test_UpdatePSDKFloatMessage.Floating window show message error";
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ZZ_Widget_M300RTK::BackCommand(QString Worker, QString Command) {
|
void ZZ_Widget_M300RTK::BackCommand(QString Worker, QString Command) {
|
||||||
if (Worker=="WDA") {
|
if (Worker == "WDA") {
|
||||||
if (Command=="Finish") {
|
if (Command == "Finish") {
|
||||||
isnowsystemWorking= false;
|
isnowsystemWorking = false;
|
||||||
qDebug()<<"wind calibrate finished";
|
qDebug() << "wind calibrate finished";
|
||||||
emit Signal_UpdatePSDKFloatMessage("wind calibrate finished");
|
emit Signal_UpdatePSDKFloatMessage("wind calibrate finished",RLX_LINENUMBER);
|
||||||
}
|
}
|
||||||
}
|
} else if (Worker == "GAS") {
|
||||||
else if (Worker == "GAS") {
|
if (Command == "Finish") {
|
||||||
if (Command == "Finish") {
|
isnowsystemWorking = false;
|
||||||
isnowsystemWorking = false;
|
qDebug() << "gas zero calibrate finished";
|
||||||
qDebug() << "gas zero calibrate finished";
|
emit Signal_UpdatePSDKFloatMessage("gas zero calibrate finished",RLX_LINENUMBER);
|
||||||
emit Signal_UpdatePSDKFloatMessage("gas zero calibrate finished");
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ZZ_Widget_M300RTK::Slot_flash_screen() {
|
||||||
|
QString strinone = "";
|
||||||
|
// 获取当前日期时间
|
||||||
|
QDateTime QDateTime= QDateTime::currentDateTime();
|
||||||
|
Strforshow[Strforshow.size()-1]=QDateTime.toString("yyyy-MM-dd hh:mm:ss");
|
||||||
|
;
|
||||||
|
// QTime currentTime = QTime::currentTime();
|
||||||
|
// Strforshow.at(Strforshow.length())=currentTime.toString("hh:mm:ss");
|
||||||
|
// qDebug() << "Slot_flash_screen time:" << currentTime;
|
||||||
|
|
||||||
|
StrforshowCurrent = Strforshow;
|
||||||
|
//
|
||||||
|
|
||||||
|
QStringList strforsend;
|
||||||
|
|
||||||
|
|
||||||
|
if (StrforshowCurrent==StrforshowLast&&StrforshowCurrent.at(0).size()<25) {
|
||||||
|
//没有变化不需要更新
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
for (int i = 0; i < StrforshowCurrent.size(); i++) {
|
||||||
|
if (i==0) {
|
||||||
|
if (StrforshowCurrent.at(i) != StrforshowLast.at(i)) {
|
||||||
|
indexforshow[i] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (StrforshowCurrent.at(i).size() < 25 || i >= 1) {
|
||||||
|
//只有第一行需要滚动显示
|
||||||
|
|
||||||
|
strforsend.append(StrforshowCurrent.at(i));
|
||||||
|
indexforshow[i] = 0;
|
||||||
|
} else {
|
||||||
|
QString doublestr = StrforshowCurrent.at(i) + StrforshowCurrent.at(i);
|
||||||
|
QString strtemp = doublestr.mid(indexforshow[i], 30);
|
||||||
|
strforsend.append(strtemp);
|
||||||
|
if (indexforshow[i] >= StrforshowCurrent.at(i).size()) {
|
||||||
|
indexforshow[i] = 0;
|
||||||
|
} else
|
||||||
|
indexforshow[i]++;
|
||||||
|
}
|
||||||
|
}else {
|
||||||
|
strforsend.append(StrforshowCurrent.at(i));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < strforsend.size(); i++) {
|
||||||
|
strinone += strforsend[i] + "\r\n";
|
||||||
|
}
|
||||||
|
T_DjiReturnCode djiStat = DjiWidgetFloatingWindow_ShowMessage(strinone.toLatin1());
|
||||||
|
if (djiStat != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS) {
|
||||||
|
qDebug() << "ZZ_Widget_M300RTK: Func test_UpdatePSDKFloatMessage.Floating window show message error";
|
||||||
|
}
|
||||||
|
StrforshowLast = StrforshowCurrent;
|
||||||
|
|
||||||
|
}
|
||||||
|
|||||||
@ -17,11 +17,13 @@ public:
|
|||||||
public:
|
public:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
QTimer m_TimerForflash;
|
||||||
int m_iFlagIsVehicleCapturing;
|
int m_iFlagIsVehicleCapturing;
|
||||||
UIConfig m_struUIConfig;
|
UIConfig m_struUIConfig;
|
||||||
short m_sFlagCaptureMode;
|
short m_sFlagCaptureMode;
|
||||||
QString m_qstrFilePath;
|
QString m_qstrFilePath;
|
||||||
static int32_t m_siDjiWidgetValueBtn, m_siDjiWidgetValueList_CaptureMode, m_siDjiWidgetValueList_SamplingRate, m_siDjiWidgetValueList_DecisionHeight;
|
static int32_t m_siDjiWidgetValueBtn, m_siDjiWidgetValueList_CaptureMode, m_siDjiWidgetValueList_SamplingRate, m_siDjiWidgetValueList_DecisionHeight;
|
||||||
|
bool m_bIsFlashOn;
|
||||||
public:
|
public:
|
||||||
int PreparteEnvironment();
|
int PreparteEnvironment();
|
||||||
int SetUIFilePath(char* pcUIFilePath, uint16_t uiLength);
|
int SetUIFilePath(char* pcUIFilePath, uint16_t uiLength);
|
||||||
@ -29,20 +31,23 @@ public:
|
|||||||
|
|
||||||
int GetSettings(UIConfig &struUIConfig);
|
int GetSettings(UIConfig &struUIConfig);
|
||||||
int SetSettings(UIConfig struUIConfig);
|
int SetSettings(UIConfig struUIConfig);
|
||||||
|
void stratmessageflash();
|
||||||
//int UpdateCaptureStatus(int iStatus);
|
//int UpdateCaptureStatus(int iStatus);
|
||||||
private:
|
private:
|
||||||
int InitParam();
|
int InitParam();
|
||||||
int UploadResources();
|
int UploadResources();
|
||||||
int test_UpdatePSDKFloatMessage(QString qstrMessage);
|
int test_UpdatePSDKFloatMessage(QString qstrMessage);
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
static T_DjiReturnCode OnUpdateWidgetValue(E_DjiWidgetType widgetType, uint32_t index, int32_t value,void* userData);
|
static T_DjiReturnCode OnUpdateWidgetValue(E_DjiWidgetType widgetType, uint32_t index, int32_t value,void* userData);
|
||||||
static T_DjiReturnCode OnLoadWidgetValue (E_DjiWidgetType widgetType, uint32_t index, int32_t* value,void* userData);
|
static T_DjiReturnCode OnLoadWidgetValue (E_DjiWidgetType widgetType, uint32_t index, int32_t* value,void* userData);
|
||||||
public slots:
|
public slots:
|
||||||
int Slot_UpdatePSDKFloatMessage(QString qstrMessage);
|
int Slot_UpdatePSDKFloatMessage(QString qstrMessage,int lineid);
|
||||||
void BackCommand(QString Worker, QString Command);
|
void BackCommand(QString Worker, QString Command);
|
||||||
|
void Slot_flash_screen();
|
||||||
signals:
|
signals:
|
||||||
void Signal_UpdatePSDKFloatMessage(QString qstrMessage);
|
void Signal_UpdatePSDKFloatMessage(QString qstrMessage,int lineid);
|
||||||
///0:Auto 1:Manual
|
///0:Auto 1:Manual
|
||||||
void Signal_UpdateCaptureMode(char cMode);
|
void Signal_UpdateCaptureMode(char cMode);
|
||||||
|
|
||||||
|
|||||||
@ -2,13 +2,18 @@
|
|||||||
#include "unistd.h"
|
#include "unistd.h"
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
#include "hal_uart.h"
|
#include "hal_uart.h"
|
||||||
|
#define LINECOMMEND 0
|
||||||
|
#define LINEDATASHOW 1
|
||||||
|
std::atomic<int> WorkingState;
|
||||||
|
std::atomic<int> SavingDate;
|
||||||
CMainAcqThread::CMainAcqThread(QObject* parent /*= nullptr*/)
|
CMainAcqThread::CMainAcqThread(QObject* parent /*= nullptr*/)
|
||||||
{
|
{
|
||||||
m_iFlagCaptureStatus = 0;
|
m_iFlagCaptureStatus = 0;
|
||||||
iFlagIsPathGenerated = false;
|
iFlagIsPathGenerated = false;
|
||||||
|
|
||||||
m_clsCapTimer.setTimerType(Qt::PreciseTimer);
|
m_clsCapTimer.setTimerType(Qt::PreciseTimer);
|
||||||
|
WorkingState = 0;
|
||||||
|
SavingDate = 0;
|
||||||
|
|
||||||
#ifdef ZZ_FLAG_TEST
|
#ifdef ZZ_FLAG_TEST
|
||||||
//connect(&m_clsCapTimer, &QTimer::timeout, this, &CMainAcqThread::OnTestTimer);
|
//connect(&m_clsCapTimer, &QTimer::timeout, this, &CMainAcqThread::OnTestTimer);
|
||||||
@ -52,15 +57,16 @@ int CMainAcqThread::StartUp()
|
|||||||
|
|
||||||
m_ctrlVehicle.StartupPSDK_M300RTK();
|
m_ctrlVehicle.StartupPSDK_M300RTK();
|
||||||
QString qstrMessage = "Initializing sensors,Please wait...";
|
QString qstrMessage = "Initializing sensors,Please wait...";
|
||||||
emit Signal_UpdateVehicleMessage(qstrMessage);
|
emit Signal_UpdateVehicleMessage(qstrMessage,LINECOMMEND);
|
||||||
|
|
||||||
|
|
||||||
int iRes = m_ctrlGasSensor.Initialize(m_struSensorPort.qstrGasSensorPort.toStdString());
|
int iRes = m_ctrlGasSensor.Initialize(m_struSensorPort.qstrGasSensorPort.toStdString());
|
||||||
if (iRes!=0)
|
if (iRes!=0)
|
||||||
{
|
{
|
||||||
qstrMessage.clear();
|
qstrMessage.clear();
|
||||||
qstrMessage.append("Fatal Error!!! Gas sensor not connected.Please check.");
|
qstrMessage.append("Fatal Error!!! Gas sensor not connected.Please check.");
|
||||||
//qstrMessage = "Fatal Error!!! Gas sensor not connected.Please check.";
|
qstrMessage = "Fatal Error!!! Gas sensor not connected.Please check.";
|
||||||
emit Signal_UpdateVehicleMessage(qstrMessage);
|
emit Signal_UpdateVehicleMessage(qstrMessage,LINECOMMEND);
|
||||||
qDebug() << qstrMessage;
|
qDebug() << qstrMessage;
|
||||||
//return 1;
|
//return 1;
|
||||||
}
|
}
|
||||||
@ -69,28 +75,30 @@ int CMainAcqThread::StartUp()
|
|||||||
if (iRes != 0)
|
if (iRes != 0)
|
||||||
{
|
{
|
||||||
qstrMessage.append("Fatal Error!!! Wind sensor not connected.Please check.");
|
qstrMessage.append("Fatal Error!!! Wind sensor not connected.Please check.");
|
||||||
//qstrMessage = "Fatal Error!!! Wind sensor not connected.Please check.";
|
qstrMessage = "Fatal Error!!! Wind sensor not connected.Please check.";
|
||||||
emit Signal_UpdateVehicleMessage(qstrMessage);
|
emit Signal_UpdateVehicleMessage(qstrMessage,LINECOMMEND);
|
||||||
qDebug() << qstrMessage;
|
qDebug() << qstrMessage;
|
||||||
//return 2;
|
//return 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
qstrMessage.append("System ready.Waiting for signals");
|
qstrMessage.append("System ready.Waiting for signals");
|
||||||
//qstrMessage = "System ready.Waiting for signals";
|
// qstrMessage = "System ready.Waiting for signals";
|
||||||
emit Signal_UpdateVehicleMessage(qstrMessage);
|
// qstrMessage="123456789123456789123456789123456789123456789123456789123456789";
|
||||||
|
emit Signal_UpdateVehicleMessage(qstrMessage,LINECOMMEND);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int CMainAcqThread::SetupMessagePipe()
|
int CMainAcqThread::SetupMessagePipe()
|
||||||
{
|
{
|
||||||
connect(&m_ctrlVehicle, &VehicleController::Signal_StartCapture, this, &CMainAcqThread::Slot_StartCapture);
|
connect(&m_ctrlVehicle, &VehicleController::Signal_StartCapture, this, &CMainAcqThread::Slot_StartCapture);
|
||||||
connect(&m_ctrlVehicle.m_clsWidget,&ZZ_Widget_M300RTK::SendCommand,this,&CMainAcqThread::GetCommand);
|
connect(&m_ctrlVehicle.m_clsWidget,&ZZ_Widget_M300RTK::SendCommand,this,&CMainAcqThread::GetCommand,Qt::QueuedConnection);
|
||||||
connect(this, &CMainAcqThread::SendCommand, &m_ctrlVehicle.m_clsWidget, &ZZ_Widget_M300RTK::BackCommand);
|
connect(this, &CMainAcqThread::SendCommand, &m_ctrlVehicle.m_clsWidget, &ZZ_Widget_M300RTK::BackCommand);
|
||||||
connect(&m_ctrlVehicle, &VehicleController::Signal_StopCapture, this, &CMainAcqThread::Slot_StopCapture);
|
connect(&m_ctrlVehicle, &VehicleController::Signal_StopCapture, this, &CMainAcqThread::Slot_StopCapture);
|
||||||
|
|
||||||
connect(this, &CMainAcqThread::Signal_UpdateVehicleMessage, &m_ctrlVehicle, &VehicleController::Signal_UpdateVehicleMessage);
|
connect(this, &CMainAcqThread::Signal_UpdateVehicleMessage, &m_ctrlVehicle, &VehicleController::Signal_UpdateVehicleMessage);
|
||||||
|
|
||||||
connect(&m_clsCapTimer, &QTimer::timeout, this, &CMainAcqThread::OnTimerCapture);
|
connect(&m_clsCapTimer, &QTimer::timeout, this, &CMainAcqThread::OnTimerCapture);
|
||||||
|
m_clsCapTimer.start(1000);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -146,10 +154,21 @@ int CMainAcqThread::FormFixedWindData()
|
|||||||
m_fTempFixedWindVecY = m_fTempFixedWindVecY - m_struM300RTKDataFrame.stVelocity.y;
|
m_fTempFixedWindVecY = m_fTempFixedWindVecY - m_struM300RTKDataFrame.stVelocity.y;
|
||||||
m_fTempFixedWindVecZ = m_fTempFixedWindVecZ - m_struM300RTKDataFrame.stVelocity.z;
|
m_fTempFixedWindVecZ = m_fTempFixedWindVecZ - m_struM300RTKDataFrame.stVelocity.z;
|
||||||
|
|
||||||
double dDotProduct = m_fTempFixedWindVecX; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
double dVectorLength = sqrt(m_fTempFixedWindVecX * m_fTempFixedWindVecX + m_fTempFixedWindVecY * m_fTempFixedWindVecY + m_fTempFixedWindVecZ * m_fTempFixedWindVecZ);
|
||||||
double dVectorLength = sqrt(m_fTempFixedWindVecX * m_fTempFixedWindVecX + m_fTempFixedWindVecY * m_fTempFixedWindVecY + m_fTempFixedWindVecZ * m_fTempFixedWindVecZ); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>
|
|
||||||
double dAngleInRadians = acos(dDotProduct / dVectorLength); // <20><><EFBFBD><EFBFBD>нǵĻ<C7B5><C4BB><EFBFBD>ֵ
|
if (dVectorLength < 0.0001)
|
||||||
double angleInDegrees = dAngleInRadians * (180.0 / M_PI); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>
|
{
|
||||||
|
m_struUASDataFrame.fFixedWindDirection = 0;
|
||||||
|
m_struUASDataFrame.fFixedWindSpeed = 0;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
double dDotProduct = m_fTempFixedWindVecX;
|
||||||
|
double dCosAngle = dDotProduct / dVectorLength;
|
||||||
|
if (dCosAngle > 1.0) dCosAngle = 1.0;
|
||||||
|
if (dCosAngle < -1.0) dCosAngle = -1.0;
|
||||||
|
double dAngleInRadians = acos(dCosAngle);
|
||||||
|
double angleInDegrees = dAngleInRadians * (180.0 / M_PI);
|
||||||
|
|
||||||
m_struUASDataFrame.fFixedWindDirection = angleInDegrees;
|
m_struUASDataFrame.fFixedWindDirection = angleInDegrees;
|
||||||
m_struUASDataFrame.fFixedWindSpeed = dVectorLength;
|
m_struUASDataFrame.fFixedWindSpeed = dVectorLength;
|
||||||
@ -188,7 +207,7 @@ void CMainAcqThread::OnTestTimer()
|
|||||||
|
|
||||||
int CMainAcqThread::GetData()
|
int CMainAcqThread::GetData()
|
||||||
{
|
{
|
||||||
unsigned long ulCO2=0, ulH2O=0;
|
double ulCO2=0, ulH2O=0;
|
||||||
float fGasTemp=-1,fPP=-1,fPB=-1;
|
float fGasTemp=-1,fPP=-1,fPB=-1;
|
||||||
m_ctrlGasSensor.GetMeasuredData(ulCO2, ulH2O, fGasTemp, fPP, fPB);
|
m_ctrlGasSensor.GetMeasuredData(ulCO2, ulH2O, fGasTemp, fPP, fPB);
|
||||||
m_struGSDataFrame.ulCO2 = ulCO2;
|
m_struGSDataFrame.ulCO2 = ulCO2;
|
||||||
@ -207,10 +226,14 @@ int CMainAcqThread::GetData()
|
|||||||
m_ctrlVehicle.GetOneDataFrame(m_struM300RTKDataFrame);//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
m_ctrlVehicle.GetOneDataFrame(m_struM300RTKDataFrame);//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// #define ZZ_FLAG_TEST
|
||||||
|
|
||||||
int CMainAcqThread::OnTimerCapture()
|
int CMainAcqThread::OnTimerCapture()
|
||||||
{
|
{
|
||||||
|
if (m_iFlagCaptureStatus >1)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
#ifdef ZZ_FLAG_TEST
|
#ifdef ZZ_FLAG_TEST
|
||||||
qDebug() << "OnTimerCapture entering time:" << QTime::currentTime();
|
qDebug() << "OnTimerCapture entering time:" << QTime::currentTime();
|
||||||
#endif
|
#endif
|
||||||
@ -227,14 +250,23 @@ int CMainAcqThread::OnTimerCapture()
|
|||||||
QString qstrMessage;
|
QString qstrMessage;
|
||||||
qstrMessage = QString("CO2: %1ppm, H20: %2ppm\r\nFixed Wind Speed: %3m/s\r\nFixed Wind Direction: %4deg").arg(m_struGSDataFrame.ulCO2).arg(m_struGSDataFrame.ulH2O)
|
qstrMessage = QString("CO2: %1ppm, H20: %2ppm\r\nFixed Wind Speed: %3m/s\r\nFixed Wind Direction: %4deg").arg(m_struGSDataFrame.ulCO2).arg(m_struGSDataFrame.ulH2O)
|
||||||
.arg(m_struUASDataFrame.fFixedWindSpeed).arg(m_struUASDataFrame.fFixedWindDirection);
|
.arg(m_struUASDataFrame.fFixedWindSpeed).arg(m_struUASDataFrame.fFixedWindDirection);
|
||||||
emit Signal_UpdateVehicleMessage(qstrMessage);
|
emit Signal_UpdateVehicleMessage("CO2:"+QString::number(m_struGSDataFrame.ulCO2,'f',1)+"\t H2O:"+QString::number(m_struGSDataFrame.ulH2O,'f',1),LINEDATASHOW);
|
||||||
|
emit Signal_UpdateVehicleMessage("WS:"+QString::number(m_struUASDataFrame.fFixedWindSpeed,'f',2)+"\t D:"+QString::number(m_struUASDataFrame.fFixedWindDirection,'f',2)+"",LINEDATASHOW+1);
|
||||||
|
// emit Signal_UpdateVehicleMessage("PP:"+QString::number(m_struGSDataFrame.fPP,'f',2)+"\t PB:"+QString::number(m_struGSDataFrame.fPB,'f',2)+"",LINEDATASHOW+2);
|
||||||
|
emit Signal_UpdateVehicleMessage("T:"+QString::number(m_struGSDataFrame.fTemp,'f',2)+"\t PB:"+QString::number(m_struGSDataFrame.fPB,'f',2),LINEDATASHOW+2);
|
||||||
|
|
||||||
|
// emit Signal_UpdateVehicleMessage(qstrMessage);
|
||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
#ifdef ZZ_FLAG_TEST
|
#ifdef ZZ_FLAG_TEST
|
||||||
qDebug() << m_struM300RTKDataFrame.stGPSPosition.x << m_struM300RTKDataFrame.stGPSPosition.y << m_struM300RTKDataFrame.stGPSPosition.z
|
qDebug() << m_struM300RTKDataFrame.stGPSPosition.x << m_struM300RTKDataFrame.stGPSPosition.y << m_struM300RTKDataFrame.stGPSPosition.z
|
||||||
<< m_struM300RTKDataFrame.stVelocity.x << m_struM300RTKDataFrame.stVelocity.y << m_struM300RTKDataFrame.stVelocity.z;
|
<< m_struM300RTKDataFrame.stVelocity.x << m_struM300RTKDataFrame.stVelocity.y << m_struM300RTKDataFrame.stVelocity.z;
|
||||||
#endif
|
#endif
|
||||||
|
if (SavingDate==1)
|
||||||
|
{
|
||||||
|
m_ctrlData.WriteData(m_struM300RTKDataFrame, m_struGSDataFrame, m_struUASDataFrame);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
m_ctrlData.WriteData(m_struM300RTKDataFrame, m_struGSDataFrame, m_struUASDataFrame);
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef ZZ_FLAG_TEST
|
#ifdef ZZ_FLAG_TEST
|
||||||
@ -258,12 +290,13 @@ int CMainAcqThread::Slot_StartCapture()
|
|||||||
|
|
||||||
m_ctrlData.GenerateFile();
|
m_ctrlData.GenerateFile();
|
||||||
|
|
||||||
m_clsCapTimer.start(1000);
|
// m_clsCapTimer.start(1000);
|
||||||
#ifdef ZZ_FLAG_TEST
|
#ifdef ZZ_FLAG_TEST
|
||||||
qDebug() << "CMainAcqThread Test Cap Started";
|
qDebug() << "CMainAcqThread Test Cap Started";
|
||||||
#endif // ZZ_FLAG_TEST
|
#endif // ZZ_FLAG_TEST
|
||||||
|
|
||||||
|
m_iFlagCaptureStatus = 1;
|
||||||
|
SavingDate = 1;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -275,7 +308,8 @@ int CMainAcqThread::Slot_StopCapture()
|
|||||||
|
|
||||||
iFlagIsPathGenerated = false;
|
iFlagIsPathGenerated = false;
|
||||||
|
|
||||||
m_clsCapTimer.stop();
|
SavingDate=0;
|
||||||
|
//m_clsCapTimer.stop();
|
||||||
|
|
||||||
m_ctrlData.CloseData();
|
m_ctrlData.CloseData();
|
||||||
#ifdef ZZ_FLAG_TEST
|
#ifdef ZZ_FLAG_TEST
|
||||||
@ -283,7 +317,7 @@ int CMainAcqThread::Slot_StopCapture()
|
|||||||
#endif // ZZ_FLAG_TEST
|
#endif // ZZ_FLAG_TEST
|
||||||
|
|
||||||
QString qstrMessage = QString("Capture Stopped.");
|
QString qstrMessage = QString("Capture Stopped.");
|
||||||
emit Signal_UpdateVehicleMessage(qstrMessage);
|
emit Signal_UpdateVehicleMessage(qstrMessage,LINECOMMEND);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -296,20 +330,26 @@ void CMainAcqThread::GetCommand(QString Worker, QString Command) {
|
|||||||
int waitetime=10;
|
int waitetime=10;
|
||||||
qDebug()<<"GetCommand Worker:"<<Worker<<" Command:"<<Command;
|
qDebug()<<"GetCommand Worker:"<<Worker<<" Command:"<<Command;
|
||||||
if (Worker=="WDA") {
|
if (Worker=="WDA") {
|
||||||
|
m_iFlagCaptureStatus=WADCALI;
|
||||||
|
QThread::msleep(1100);
|
||||||
|
|
||||||
//#分割字符comman
|
//#分割字符comman
|
||||||
QStringList arc=Command.split("#");
|
QStringList arc=Command.split("#");
|
||||||
if (arc[0]=="StartCalibrate") {
|
if (arc[0]=="StartCalibrate") {
|
||||||
if (arc.length()<2) {
|
if (arc.length()<2) {
|
||||||
emit SendCommand("WDA","Finish");
|
emit SendCommand("WDA","Finish");
|
||||||
|
m_iFlagCaptureStatus=NORMAL;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
m_ctrlWindSensor.CalibrateWDA(arc[1].toDouble());
|
m_ctrlWindSensor.CalibrateWDA(arc[1].toDouble());
|
||||||
emit SendCommand("WDA","Finish");
|
emit SendCommand("WDA","Finish");
|
||||||
|
m_iFlagCaptureStatus=NORMAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
else if (Worker == "GAS") {
|
else if (Worker == "GAS") {
|
||||||
|
m_iFlagCaptureStatus = GASGALI;
|
||||||
QStringList arc = Command.split("#");
|
QStringList arc = Command.split("#");
|
||||||
qDebug()<<"arc is"<<arc;
|
qDebug()<<"arc is"<<arc;
|
||||||
if (arc[0] == "ZeroCalibrate") {
|
if (arc[0] == "ZeroCalibrate") {
|
||||||
@ -349,7 +389,7 @@ void CMainAcqThread::GetCommand(QString Worker, QString Command) {
|
|||||||
|
|
||||||
if (arc.size()<3) {
|
if (arc.size()<3) {
|
||||||
emit SendCommand("GAS", "Finish");
|
emit SendCommand("GAS", "Finish");
|
||||||
|
m_iFlagCaptureStatus=NORMAL;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
char cChannel=0;
|
char cChannel=0;
|
||||||
@ -360,7 +400,7 @@ void CMainAcqThread::GetCommand(QString Worker, QString Command) {
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
emit SendCommand("GAS", "Finish");
|
emit SendCommand("GAS", "Finish");
|
||||||
|
m_iFlagCaptureStatus=NORMAL;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
unsigned int uiPPM=arc[2].toUInt();
|
unsigned int uiPPM=arc[2].toUInt();
|
||||||
@ -376,6 +416,6 @@ void CMainAcqThread::GetCommand(QString Worker, QString Command) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
m_iFlagCaptureStatus=NORMAL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -17,6 +17,9 @@ using namespace ZZ_DATA_DEF::DJI;
|
|||||||
using namespace ZZ_DATA_DEF::CO2_GAS_SENSOR;
|
using namespace ZZ_DATA_DEF::CO2_GAS_SENSOR;
|
||||||
using namespace ZZ_DATA_DEF::UA_SENSOR;
|
using namespace ZZ_DATA_DEF::UA_SENSOR;
|
||||||
using namespace ZZ_DATA_DEF::MainConfig;
|
using namespace ZZ_DATA_DEF::MainConfig;
|
||||||
|
#define WADCALI 2;
|
||||||
|
#define GASGALI 3;
|
||||||
|
#define NORMAL 1;
|
||||||
|
|
||||||
class CMainAcqThread :public QObject
|
class CMainAcqThread :public QObject
|
||||||
{
|
{
|
||||||
@ -28,7 +31,7 @@ public:
|
|||||||
private:
|
private:
|
||||||
QTime lastTime;
|
QTime lastTime;
|
||||||
QTimer m_clsCapTimer;
|
QTimer m_clsCapTimer;
|
||||||
std::atomic<int> m_WorkingState;
|
|
||||||
int iFlagIsPathGenerated;
|
int iFlagIsPathGenerated;
|
||||||
|
|
||||||
MiscControls m_struMiscCtrls;
|
MiscControls m_struMiscCtrls;
|
||||||
@ -65,7 +68,7 @@ private:
|
|||||||
int RotateWindVec();
|
int RotateWindVec();
|
||||||
int FormFixedWindData();
|
int FormFixedWindData();
|
||||||
signals:
|
signals:
|
||||||
void Signal_UpdateVehicleMessage(QString qstrMessage);
|
void Signal_UpdateVehicleMessage(QString qstrMessage,int linid);
|
||||||
void SendCommand(QString Worker, QString Command);
|
void SendCommand(QString Worker, QString Command);
|
||||||
public slots:
|
public slots:
|
||||||
void OnTestTimer();
|
void OnTestTimer();
|
||||||
|
|||||||
@ -117,8 +117,8 @@ namespace ZZ_DATA_DEF
|
|||||||
{
|
{
|
||||||
// unsigned long ulCO2;
|
// unsigned long ulCO2;
|
||||||
// unsigned long ulH2O;
|
// unsigned long ulH2O;
|
||||||
float ulCO2;
|
double ulCO2;
|
||||||
float ulH2O;
|
double ulH2O;
|
||||||
float fTemp;
|
float fTemp;
|
||||||
float fPB;
|
float fPB;
|
||||||
float fPP;
|
float fPP;
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
[DJI]
|
[DJI]
|
||||||
USER_APP_NAME=Project_Grixis
|
USER_APP_NAME=M400device
|
||||||
USER_APP_ID=126401
|
USER_APP_ID=176035
|
||||||
USER_APP_KEY=a313e3617b16c56a11502bd91a61d6f
|
USER_APP_KEY=4889bbeb0092089889b4f3180167202
|
||||||
USER_APP_LICENSE=BNrpsD+UJ2lj8kmVgN4GnXg+AZiQwaxSuf/WvA072DFdLy2h+NCQizf+nR+WcjEEKeTknSzPbfqlvAc/WSJwrtqV/gYXSVPtSlK0AaV61SeKBvZQpogoyaZy07fWNCZrha3OAQsHj18TtU5RjOn6gYapzGDAPQVG6Q/At/H/9GSPQr5uwxI20fVWUTOkymYLM/04CNQGsToPD+fZwixExjjjHjdD9K7R0D4EgyvbqMpMLlkspBLR/9h6/oVxefOyaHJIi+pk+IdLFFC3omnrh7U3/4b95LA3t22J1GJvqvO2cyphjrSXsaDdctvtj6EjE8WhEXQCvmYm0VIHWz/0Qw==
|
USER_APP_LICENSE=VVfdaxQA6j5aX6zy/C6S2PFoSUqdcj5PeQ1GG8aRMuy+SegA1y9iYtQLOLu7CprNwwBN6X6wdwzSn8lOHJuXb6TfvRsakVCsXQ6A9qWmBB8IKzAKcQ60EJlZ71h5cLthXzNNq1ERQpBM5w9b+FebKF29XzozZCF2ZYWSgoGb/nEWxlm23Gp0EB3ZwbP31yRyLQUCY3iDdLYByOe3xSGLtJOlu3OJuujzY80T3eqWonwYsl4Hb4hWJODXJYWzLGFA1irjVJdle//7WZ0F17fEo/xGgPb7W36twDU80QFfpwagEqtacoo6bp+qij6Db10wF9Z8VWlAkY+59lLbyV3gnw==
|
||||||
USER_DEVELOPER_ACCOUNT=1033584732@qq.com
|
USER_DEVELOPER_ACCOUNT=rlxlixin1@163.com
|
||||||
|
|||||||
@ -33,20 +33,26 @@
|
|||||||
{
|
{
|
||||||
"widget_list":
|
"widget_list":
|
||||||
[
|
[
|
||||||
|
|
||||||
{
|
{
|
||||||
"widget_index": 4,
|
"widget_index": 4,
|
||||||
"widget_type": "int_input_box",
|
"widget_type": "int_input_box",
|
||||||
|
"widget_name": "防误触密码",
|
||||||
|
"int_input_box_hint": "123456"
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"widget_index": 5,
|
||||||
|
"widget_type": "int_input_box",
|
||||||
"widget_name": "当前温度--风速标定",
|
"widget_name": "当前温度--风速标定",
|
||||||
"int_input_box_hint": "*0.1°C"
|
"int_input_box_hint": "*0.1°C"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"widget_index": 5,
|
"widget_index": 6,
|
||||||
"widget_type": "button",
|
"widget_type": "button",
|
||||||
"widget_name": "风速标定"
|
"widget_name": "风速标定"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"widget_index": 6,
|
"widget_index": 7,
|
||||||
"widget_type": "list",
|
"widget_type": "list",
|
||||||
"widget_name": "标气类型--零位校正",
|
"widget_name": "标气类型--零位校正",
|
||||||
"list_item": [
|
"list_item": [
|
||||||
@ -55,16 +61,19 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"item_name": "AIR(空气)"
|
"item_name": "AIR(空气)"
|
||||||
}
|
},
|
||||||
|
{
|
||||||
|
"item_name": "请选择"
|
||||||
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"widget_index": 7,
|
"widget_index": 8,
|
||||||
"widget_type": "button",
|
"widget_type": "button",
|
||||||
"widget_name": "零位校正"
|
"widget_name": "零位校正"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"widget_index": 8,
|
"widget_index": 9,
|
||||||
"widget_type": "list",
|
"widget_type": "list",
|
||||||
"widget_name": "目标气体类型--步长校正",
|
"widget_name": "目标气体类型--步长校正",
|
||||||
"list_item": [
|
"list_item": [
|
||||||
@ -73,17 +82,20 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"item_name": "H2O(水蒸气)"
|
"item_name": "H2O(水蒸气)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"item_name": "请选择"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"widget_index": 9,
|
"widget_index": 10,
|
||||||
"widget_type": "int_input_box",
|
"widget_type": "int_input_box",
|
||||||
"widget_name": "标气浓度值--步长校正",
|
"widget_name": "标气浓度值--步长校正",
|
||||||
"int_input_box_hint": "ppm"
|
"int_input_box_hint": "ppm"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"widget_index": 10,
|
"widget_index": 11,
|
||||||
"widget_type": "button",
|
"widget_type": "button",
|
||||||
"widget_name": "步长校正"
|
"widget_name": "步长校正"
|
||||||
},
|
},
|
||||||
|
|||||||
126
package.sh
Executable file
126
package.sh
Executable file
@ -0,0 +1,126 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Airborne CO2 项目打包脚本
|
||||||
|
# 打包成 Debian 包
|
||||||
|
|
||||||
|
VERSION=1.0.0
|
||||||
|
PROJECT_NAME="AirborneCO2"
|
||||||
|
PACKAGE_NAME="${PROJECT_NAME}_V${VERSION}.deb"
|
||||||
|
BUILD_DIR="build"
|
||||||
|
DEB_DIR="DebpackAirborneCO2"
|
||||||
|
|
||||||
|
# 检查是否在正确目录
|
||||||
|
if [ ! -f "CMakeLists.txt" ]; then
|
||||||
|
echo "错误:请在项目根目录运行此脚本"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "========================================="
|
||||||
|
echo "Airborne CO2 打包脚本 v${VERSION}"
|
||||||
|
echo "========================================="
|
||||||
|
|
||||||
|
# 1. 构建项目
|
||||||
|
echo ""
|
||||||
|
echo "[1/5] 开始构建项目..."
|
||||||
|
|
||||||
|
# 清理旧的 build 目录并重新创建
|
||||||
|
#rm -rf $BUILD_DIR
|
||||||
|
mkdir -p $BUILD_DIR
|
||||||
|
|
||||||
|
cd $BUILD_DIR
|
||||||
|
cmake ..
|
||||||
|
#if [ $? -ne 0 ]; then
|
||||||
|
# echo "错误:cmake 配置失败"
|
||||||
|
# exit 1
|
||||||
|
#fi
|
||||||
|
|
||||||
|
# 执行 make
|
||||||
|
make -j$(nproc)
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo "错误:构建失败"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
cd ..
|
||||||
|
|
||||||
|
# 检查构建产物
|
||||||
|
if [ ! -f "${BUILD_DIR}/Project_Grixis" ]; then
|
||||||
|
echo "错误:构建产物不存在"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo "构建完成"
|
||||||
|
|
||||||
|
# 2. 创建打包目录
|
||||||
|
echo ""
|
||||||
|
echo "[2/5] 创建打包目录..."
|
||||||
|
rm -rf $DEB_DIR
|
||||||
|
mkdir -p $DEB_DIR
|
||||||
|
|
||||||
|
# 3. 复制可执行文件和脚本文件
|
||||||
|
echo ""
|
||||||
|
echo "[3/5] 复制文件..."
|
||||||
|
mkdir -p ${DEB_DIR}/home/pi/bin
|
||||||
|
cp ${BUILD_DIR}/Project_Grixis ${DEB_DIR}/home/pi/bin/
|
||||||
|
chmod +x ${DEB_DIR}/home/pi/bin/Project_Grixis
|
||||||
|
|
||||||
|
# 复制脚本文件到 /home/pi/bin/
|
||||||
|
for script in rasp.sh raspusb.sh mountdjirndis.sh mountdjirndism400.sh mountrndis.sh usbbulk.sh choosescript.sh; do
|
||||||
|
if [ -f "$script" ]; then
|
||||||
|
cp "$script" ${DEB_DIR}/home/pi/bin/
|
||||||
|
chmod +x ${DEB_DIR}/home/pi/bin/"$script"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# 5. 创建 DEBIAN 目录和配置文件
|
||||||
|
echo ""
|
||||||
|
echo "[4/5] 创建 DEBIAN 配置..."
|
||||||
|
mkdir -p ${DEB_DIR}/DEBIAN
|
||||||
|
|
||||||
|
# 创建 control 文件
|
||||||
|
cat > ${DEB_DIR}/DEBIAN/control <<EOF
|
||||||
|
Package: AirborneCO2
|
||||||
|
Version: ${VERSION}
|
||||||
|
Architecture: armhf
|
||||||
|
Maintainer: AirborneCO2 Team
|
||||||
|
Description: Airborne CO2 monitoring application
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# 创建 postinst 脚本(安装后执行)
|
||||||
|
cat > ${DEB_DIR}/DEBIAN/postinst <<EOF
|
||||||
|
#!/bin/bash
|
||||||
|
echo "AirborneCO2 v${VERSION} installed"
|
||||||
|
echo "V${VERSION}" > /home/data/version
|
||||||
|
chmod +x /home/pi/bin/Project_Grixis
|
||||||
|
exit 0
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# 创建 prerm 脚本(删除前执行)
|
||||||
|
cat > ${DEB_DIR}/DEBIAN/prerm <<EOF
|
||||||
|
#!/bin/bash
|
||||||
|
exit 0
|
||||||
|
EOF
|
||||||
|
|
||||||
|
chmod +x ${DEB_DIR}/DEBIAN/postinst
|
||||||
|
chmod +x ${DEB_DIR}/DEBIAN/prerm
|
||||||
|
|
||||||
|
# 6. 打包
|
||||||
|
echo ""
|
||||||
|
echo "[5/5] 打包成 deb 文件..."
|
||||||
|
sudo dpkg -b $DEB_DIR $PACKAGE_NAME
|
||||||
|
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo ""
|
||||||
|
echo "========================================="
|
||||||
|
echo "打包成功: ${PACKAGE_NAME}"
|
||||||
|
echo "========================================="
|
||||||
|
|
||||||
|
# 移动到 DEB 目录
|
||||||
|
mkdir -p DEB
|
||||||
|
mv $PACKAGE_NAME DEB/
|
||||||
|
echo "已移动到: DEB/${PACKAGE_NAME}"
|
||||||
|
|
||||||
|
# 清理临时目录
|
||||||
|
rm -rf $DEB_DIR
|
||||||
|
else
|
||||||
|
echo "错误:打包失败"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
@ -46,8 +46,9 @@ if lsmod | grep -q g_ether; then
|
|||||||
fi
|
fi
|
||||||
rmmod g_mass_storage
|
rmmod g_mass_storage
|
||||||
sleep 1
|
sleep 1
|
||||||
|
rm -rf /sys/kernel/config/usb_gadget/pi4
|
||||||
if [ ! -d /sys/kernel/config/usb_gadget/pi4 ]; then
|
if [ ! -d /sys/kernel/config/usb_gadget/pi4 ]; then
|
||||||
|
echo "Creating USB Gadget configuration..."
|
||||||
mkdir -p /sys/kernel/config/usb_gadget/pi4
|
mkdir -p /sys/kernel/config/usb_gadget/pi4
|
||||||
cd /sys/kernel/config/usb_gadget/pi4
|
cd /sys/kernel/config/usb_gadget/pi4
|
||||||
echo 0x2ca3 > idVendor # Linux Foundation
|
echo 0x2ca3 > idVendor # Linux Foundation
|
||||||
|
|||||||
Reference in New Issue
Block a user