#include "Widget_M300RTK.h" enum AireType { Aire_Aire = 1, Aire_N2=0, }; enum Target_Gas { Target_CO2 = 0, Target_H2O = 1, }; int32_t CuttrentGasValue = 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_DecisionHeight = 1; int32_t ZZ_Widget_M300RTK::m_siDjiWidgetValueList_SamplingRate = 0; AireType CurrentAireType = Aire_Aire; Target_Gas CurrentTargetGas = Target_CO2; float NowTempreature = 0; bool isnowsystemWorking = false; ZZ_Widget_M300RTK::ZZ_Widget_M300RTK(QObject* parent /*= nullptr*/) { m_iFlagIsVehicleCapturing = 0; connect(this,&ZZ_Widget_M300RTK::Signal_UpdatePSDKFloatMessage,this,&ZZ_Widget_M300RTK::Slot_UpdatePSDKFloatMessage); } ZZ_Widget_M300RTK::~ZZ_Widget_M300RTK() { } int ZZ_Widget_M300RTK::InitParam() { return 0; } int ZZ_Widget_M300RTK::SetUIFilePath(char* pcUIFilePath, uint16_t uiLength) { if (uiLength>=256) { qDebug() << "ZZ_Widget_M300RTK: Func SetUIFilePath. File path is too long"; return 1; } QByteArray qbaTemp(pcUIFilePath); m_qstrFilePath = qbaTemp; return 0; } int ZZ_Widget_M300RTK::UpdateCaptureStatus(int iStatus) { m_iFlagIsVehicleCapturing = iStatus; } int ZZ_Widget_M300RTK::GetSettings(UIConfig &struUIConfig) { struUIConfig.sDecisionHeight = m_siDjiWidgetValueList_DecisionHeight; struUIConfig.sCaptureMode = m_siDjiWidgetValueList_CaptureMode; struUIConfig.sSamplingRate = m_siDjiWidgetValueList_SamplingRate; return 0; } int ZZ_Widget_M300RTK::SetSettings(UIConfig struUIConfig) { m_struUIConfig = struUIConfig; m_siDjiWidgetValueList_CaptureMode = struUIConfig.sCaptureMode; m_siDjiWidgetValueList_DecisionHeight = struUIConfig.sDecisionHeight; m_siDjiWidgetValueList_SamplingRate = struUIConfig.sSamplingRate; return 0; } 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}, {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() { return 0; } int ZZ_Widget_M300RTK::test_UpdatePSDKFloatMessage(QString qstrMessage) { 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) { ZZ_Widget_M300RTK* pCaller = (ZZ_Widget_M300RTK*)userData; if (pCaller->m_iFlagIsVehicleCapturing) { return DJI_ERROR_SYSTEM_MODULE_CODE_UNKNOWN; } if (widgetType == DJI_WIDGET_TYPE_INT_INPUT_BOX) { if (index == 4) { qDebug()<<"now tempreatrue is "<emit Signal_UpdatePSDKFloatMessage("please set correct temperature first"); return DJI_ERROR_SYSTEM_MODULE_CODE_UNKNOWN; } isnowsystemWorking= true; pCaller->emit Signal_UpdatePSDKFloatMessage("calibrating wind Sensor temperature:"+QString::number(NowTempreature*1.0/10)); pCaller->emit SendCommand("WDA", "StartCalibrate#"+QString::number(NowTempreature*1.0/10)); } } if (index==7) { if (value==1) { if (isnowsystemWorking==true) return 0; isnowsystemWorking= true; 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"); 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"); 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 qDebug() << "OnUpdateWidgetValue " << "widgetType " << widgetType << "index " << index << "value " << value; #endif } return DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS; } 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; *value= ZZ_Widget_M300RTK::m_siDjiWidgetValueBtn; } if (widgetType == DJI_WIDGET_TYPE_LIST) { //qDebug() << "OnLoadWidgetValue " << "widgetType " << widgetType << "index " << index << "value " << value; if (index == 1) { *value = ZZ_Widget_M300RTK::m_siDjiWidgetValueList_CaptureMode; } else if (index == 2) { *value = ZZ_Widget_M300RTK::m_siDjiWidgetValueList_DecisionHeight; } else if (index == 3) { *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; } int ZZ_Widget_M300RTK::Slot_UpdatePSDKFloatMessage(QString qstrMessage) { 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; } void ZZ_Widget_M300RTK::BackCommand(QString Worker, QString Command) { if (Worker=="WDA") { if (Command=="Finish") { isnowsystemWorking= false; qDebug()<<"wind calibrate finished"; emit Signal_UpdatePSDKFloatMessage("wind calibrate finished"); } } else if (Worker == "GAS") { if (Command == "Finish") { isnowsystemWorking = false; qDebug() << "gas zero calibrate finished"; emit Signal_UpdatePSDKFloatMessage("gas zero calibrate finished"); } } }