diff --git a/Source/IrisSensor_WDA_P0.cpp b/Source/IrisSensor_WDA_P0.cpp index 2eed1b5..c657615 100644 --- a/Source/IrisSensor_WDA_P0.cpp +++ b/Source/IrisSensor_WDA_P0.cpp @@ -58,6 +58,7 @@ int IrisSensor_WDA_P0::RecvData_NChk(/*std::string sRecv*/) } iCounter = 0; + // TODO: 需要确认传感器输出结束符格式 (CRLF/CR/LF) - 当前逻辑可能需要调整 while ((char)(qbData[qbData.size()-2]) != 0x0D && (char)(qbData[qbData.size() - 2]) != 0x0A) { m_pSerialPort->waitForReadyRead(50); @@ -114,9 +115,18 @@ int IrisSensor_WDA_P0::ParseData_NChk() QString dataPart = qstrTemp.mid(iEqualSignIndex + 1); QStringList dataList = dataPart.split(','); - m_fWindSpeed = dataList[0].toFloat(); - m_fWindDirection = dataList[1].toInt(); - m_fWindTemp = dataList[5].toFloat(); + if (dataList.size() >= 6) + { + 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_fWindDirection; @@ -127,7 +137,7 @@ int IrisSensor_WDA_P0::ParseData_NChk() }*/ ////////////////////////////////////////////////////////////////////////// - } + return 0; } diff --git a/Source/M300/PSDK_Qt/Main/VehicleController.cpp b/Source/M300/PSDK_Qt/Main/VehicleController.cpp index 34f5cd2..8ccbb5e 100644 --- a/Source/M300/PSDK_Qt/Main/VehicleController.cpp +++ b/Source/M300/PSDK_Qt/Main/VehicleController.cpp @@ -256,7 +256,7 @@ int VehicleController::SetupEnvironment_M300RTK() qDebug() << "VehicleController: Func DjiPlatform_RegHalUartHandler. Register hal uart handler error"; throw std::runtime_error("Register hal uart handler error."); } - // + //���� returnCode = DjiPlatform_RegHalNetworkHandler(&networkHandler); if (returnCode != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS) { printf("register hal network handler error"); @@ -270,6 +270,17 @@ int VehicleController::SetupEnvironment_M300RTK() return DJI_ERROR_SYSTEM_MODULE_CODE_SYSTEM_ERROR; } }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); if (returnCode != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS) { printf("register hal usb bulk handler error"); @@ -363,15 +374,17 @@ int VehicleController::StartupPSDK_M300RTK() USER_LOG_ERROR("power management init error"); } osalHandler->TaskSleepMs(5000); - SetupWidget();//<2F>?? + SetupWidget();//<2F>??�� osalHandler->TaskSleepMs(5000); SetupMessagePipe();//widget<65><74>vehicle // SetupWaypointStatusCallback(); - // InitSystemParams();//<2F><>?????????????5<35> - SetupSubscriptions();//?<>???? + //InitSystemParams();//<2F><>?????????????5<35> + //?<>???? qDebug()<<"M300RTK PSDK Channel Started."; + m_clsWidget.stratmessageflash(); + SetupSubscriptions(); return 0; } @@ -463,7 +476,10 @@ int VehicleController::GetOneDataFrame(M300RTKDataFrame& M300RTKDataFrame) int VehicleController::SetupSubscriptions() { + QString qstrInfo = QString("Waiting for airborn gps Time Valide"); + emit Signal_UpdateVehicleMessage(qstrInfo, 0); T_DjiReturnCode tDjiReturnCode; + QString qstrWBackPath("/home/data/Settings/MainSettings.ini"); tDjiReturnCode = DjiFcSubscription_Init(); if (tDjiReturnCode != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS) @@ -476,10 +492,39 @@ int VehicleController::SetupSubscriptions() 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) { + 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."; 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); if (tDjiReturnCode != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS) { - qDebug() << "Subscribe topic DJI_FC_SUBSCRIPTION_TOPIC_VELOCITY error."; 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); if (tDjiReturnCode != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS) { - qDebug() << "Subscribe topic DJI_FC_SUBSCRIPTION_TOPIC_QUATERNION error."; 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); if (tDjiReturnCode != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS) { - qDebug() << "Subscribe topic DJI_FC_SUBSCRIPTION_TOPIC_ALTITUDE_BAROMETER error."; 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; } @@ -602,7 +722,7 @@ int VehicleController::SetupMessagePipe() int VehicleController::SetupWidget() { 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); @@ -611,251 +731,6 @@ int VehicleController::SetupWidget() 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) { //ZZ_Widget_M300RTK* test = qobject_cast(sender()); diff --git a/Source/M300/PSDK_Qt/Main/VehicleController.h b/Source/M300/PSDK_Qt/Main/VehicleController.h index fc2a8c6..1e703a5 100644 --- a/Source/M300/PSDK_Qt/Main/VehicleController.h +++ b/Source/M300/PSDK_Qt/Main/VehicleController.h @@ -70,7 +70,7 @@ private: int SetupWidget(); /// public:///for test - int InitSystemParams(); + // int InitSystemParams(); int SetupSubscriptions(); /// public:///for test @@ -84,7 +84,7 @@ signals: int Signal_StartCapture(); int Signal_StopCapture(); - void Signal_UpdateVehicleMessage(QString qstrMessage); + void Signal_UpdateVehicleMessage(QString qstrMessage,int lineid); public slots: int Slot_OnChangeCaptureMode(char cMode); ///for test diff --git a/Source/M300/PSDK_Qt/Widget/Widget_M300RTK.cpp b/Source/M300/PSDK_Qt/Widget/Widget_M300RTK.cpp index 40ef26c..5ad7d64 100644 --- a/Source/M300/PSDK_Qt/Widget/Widget_M300RTK.cpp +++ b/Source/M300/PSDK_Qt/Widget/Widget_M300RTK.cpp @@ -1,391 +1,455 @@ #include "Widget_M300RTK.h" -enum AireType -{ - Aire_Aire = 1, - Aire_N2=0, +#define RLX_LINENUMBER 0 + +enum AireType { + Aire_Aire = 1, + Aire_N2 = 0, + Aire_NONE=2, }; enum Target_Gas { - Target_CO2 = 0, - Target_H2O = 1, + Target_CO2 = 0, + Target_H2O = 1, + Target_NONE=2, }; + int32_t CuttrentGasValue = 0; +int32_t passwordforsetting = 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_SamplingRate = 0; -AireType CurrentAireType = Aire_Aire; -Target_Gas CurrentTargetGas = Target_CO2; +AireType CurrentAireType = Aire_NONE; +Target_Gas CurrentTargetGas = Target_NONE; float NowTempreature = 0; bool isnowsystemWorking = false; +QStringList Strforshow; +QStringList StrforshowCurrent; +QStringList StrforshowLast; +vector indexforshow; -ZZ_Widget_M300RTK::ZZ_Widget_M300RTK(QObject* parent /*= nullptr*/) -{ - m_iFlagIsVehicleCapturing = 0; +ZZ_Widget_M300RTK::ZZ_Widget_M300RTK(QObject *parent /*= nullptr*/) { + 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() -{ - return 0; +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; - } +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; + QByteArray qbaTemp(pcUIFilePath); + m_qstrFilePath = qbaTemp; - return 0; + return 0; } - -int ZZ_Widget_M300RTK::UpdateCaptureStatus(int iStatus) -{ - m_iFlagIsVehicleCapturing = iStatus; +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::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::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() -{ - +void ZZ_Widget_M300RTK::stratmessageflash() { - 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; + m_TimerForflash.start(5000); + m_bIsFlashOn = true; } -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) -{ - 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; +int ZZ_Widget_M300RTK::UploadResources() { + 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; +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 "<m_iFlagIsVehicleCapturing) { + return DJI_ERROR_SYSTEM_MODULE_CODE_UNKNOWN; + } + if (widgetType == DJI_WIDGET_TYPE_INT_INPUT_BOX) { + if (index == 5) { + qDebug() << "now tempreatrue is " << value; + NowTempreature = value; + } + if (index == 10) { + qDebug() << "now gas value is " << value; + CuttrentGasValue = value; + } + if (index==4) { + passwordforsetting = value; + qDebug() << "now password is " << passwordforsetting; + } + } + if (widgetType == DJI_WIDGET_TYPE_BUTTON) { + if (passwordforsetting!=123456) { + pCaller->emit Signal_UpdatePSDKFloatMessage("wrong password",RLX_LINENUMBER); + return DJI_ERROR_SYSTEM_MODULE_CODE_UNKNOWN; + } + if (index == 6) { + //qDebug()<<"now value is "<emit Signal_UpdatePSDKFloatMessage("please set correct temperature first"); + if (value == 1) { + if (isnowsystemWorking == true) return 0; + if (NowTempreature == 0) { + pCaller->emit Signal_UpdatePSDKFloatMessage("please set correct temperature first",RLX_LINENUMBER); + return DJI_ERROR_SYSTEM_MODULE_CODE_UNKNOWN; + } + 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; - } - 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)); + } + //确保当前气体值不为0 + if (CuttrentGasValue == 0) { + pCaller->emit Signal_UpdatePSDKFloatMessage("please set correct gas value first",RLX_LINENUMBER); + isnowsystemWorking = false; + return DJI_ERROR_SYSTEM_MODULE_CODE_UNKNOWN; + } - } - } - 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)); - } - } + 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), + RLX_LINENUMBER); + 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_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; - } + 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 == 7) { + CurrentAireType = (AireType) value; + } else if (index == 9) { + CurrentTargetGas = (Target_Gas) value; + } #ifdef ZZ_FLAG_TEST - qDebug() << "OnUpdateWidgetValue " << "widgetType " << widgetType << "index " << index << "value " << value; + qDebug() << "OnUpdateWidgetValue " << "widgetType " << widgetType << "index " << index << "value " << value; #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) - { - //qDebug() << "OnLoadWidgetValue " << "widgetType " << widgetType << "index " << index << "value " << value; + *value = ZZ_Widget_M300RTK::m_siDjiWidgetValueBtn; + } - *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; + 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 == 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) - { - *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; - } - } + if (index == 5) { + *value = NowTempreature; + } + if (index == 10) { + *value = CuttrentGasValue; + } + } - return DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS; + return DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS; } -int ZZ_Widget_M300RTK::Slot_UpdatePSDKFloatMessage(QString qstrMessage) -{ - T_DjiReturnCode djiStat; +int ZZ_Widget_M300RTK::Slot_UpdatePSDKFloatMessage(QString qstrMessage, int lineid) { + 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()); - if (djiStat != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS) - { - qDebug() << "ZZ_Widget_M300RTK: Func test_UpdatePSDKFloatMessage.Floating window show message error"; - } - - return 0; + 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"); - } - } + if (Worker == "WDA") { + if (Command == "Finish") { + isnowsystemWorking = false; + qDebug() << "wind calibrate finished"; + emit Signal_UpdatePSDKFloatMessage("wind calibrate finished",RLX_LINENUMBER); + } + } else if (Worker == "GAS") { + if (Command == "Finish") { + isnowsystemWorking = false; + qDebug() << "gas zero calibrate finished"; + emit Signal_UpdatePSDKFloatMessage("gas zero calibrate finished",RLX_LINENUMBER); + } + } } +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; + +} diff --git a/Source/M300/PSDK_Qt/Widget/Widget_M300RTK.h b/Source/M300/PSDK_Qt/Widget/Widget_M300RTK.h index a601606..4c9e2c8 100644 --- a/Source/M300/PSDK_Qt/Widget/Widget_M300RTK.h +++ b/Source/M300/PSDK_Qt/Widget/Widget_M300RTK.h @@ -17,11 +17,13 @@ public: public: private: + QTimer m_TimerForflash; int m_iFlagIsVehicleCapturing; UIConfig m_struUIConfig; short m_sFlagCaptureMode; QString m_qstrFilePath; static int32_t m_siDjiWidgetValueBtn, m_siDjiWidgetValueList_CaptureMode, m_siDjiWidgetValueList_SamplingRate, m_siDjiWidgetValueList_DecisionHeight; + bool m_bIsFlashOn; public: int PreparteEnvironment(); int SetUIFilePath(char* pcUIFilePath, uint16_t uiLength); @@ -29,20 +31,23 @@ public: int GetSettings(UIConfig &struUIConfig); int SetSettings(UIConfig struUIConfig); + void stratmessageflash(); //int UpdateCaptureStatus(int iStatus); private: int InitParam(); int UploadResources(); int test_UpdatePSDKFloatMessage(QString qstrMessage); + public: 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); public slots: - int Slot_UpdatePSDKFloatMessage(QString qstrMessage); + int Slot_UpdatePSDKFloatMessage(QString qstrMessage,int lineid); void BackCommand(QString Worker, QString Command); + void Slot_flash_screen(); signals: - void Signal_UpdatePSDKFloatMessage(QString qstrMessage); + void Signal_UpdatePSDKFloatMessage(QString qstrMessage,int lineid); ///0:Auto 1:Manual void Signal_UpdateCaptureMode(char cMode);