diff --git a/samples/sample_c/module_sample/widget/test_widget.c b/samples/sample_c/module_sample/widget/test_widget.c index a52dd58..235954b 100644 --- a/samples/sample_c/module_sample/widget/test_widget.c +++ b/samples/sample_c/module_sample/widget/test_widget.c @@ -54,6 +54,7 @@ static T_DjiReturnCode PsdkTestWidget_SetWidgetValue_StartRecord(E_DjiWidgetType static void *PsdkTest_IrisRecordSystemChanged(void *arg); static void extractSpectralBinAndBandnumber(bool isModifyBin); +static void closeXimeaRecordSystem(); /* Private values ------------------------------------------------------------*/ static T_DjiTaskHandle s_widgetTestThread; @@ -84,6 +85,7 @@ static char * s_strSbgAccuracy=" "; char XimeaFramerate[100]=" "; int framerate = 0; char XimeaExposeTime[100]=" "; +int exposeTimeInt = 0; char XimeaExposeMaxValue[100]=" "; char s_spectralBin[100]=" "; int spectralBinInt = 0; @@ -285,18 +287,24 @@ static void *DjiTest_WidgetTask(void *arg) T_DjiReturnCode djiStat; T_DjiOsalHandler *osalHandler = DjiPlatform_GetOsalHandler(); - extractSpectralBinAndBandnumber(false); - USER_UTIL_UNUSED(arg); - while (1) { + while (1) + { + s_widgetValueList[6] = framerate; + s_widgetValueList[8] = exposeTimeInt; + if (systemON_Control == 4) + { + s_widgetValueList[5] = 0; + } + djiStat = osalHandler->GetTimeMs(&sysTimeMs); if (djiStat != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS) { USER_LOG_ERROR("Get system time ms error, stat = 0x%08llX", djiStat); } #ifndef USER_FIRMWARE_MAJOR_VERSION - snprintf(message, DJI_WIDGET_FLOATING_WINDOW_MSG_MAX_LEN, "%s\n高光谱: %s; 惯导: %s;\n卫星: %s; 惯导状态: %s;\n帧率: %s;曝光: %s;max: %s;\nP: %s; R: %s; Y: %s;\n光谱bin: %s;\n时间: %s min; 空间: %s G;\n", + snprintf(message, DJI_WIDGET_FLOATING_WINDOW_MSG_MAX_LEN, "%s\n高光谱: %s 惯导: %s\n卫星: %s 惯导状态: %s\n帧率: %s 曝光: %s max: %s \nP: %s R: %s Y: %s \n光谱bin: %s \n时间: %s min 空间: %s G\n", s_strUIMessage, s_strStateOfXimea, s_strStateOfSbg, s_strSbgSatelliteCounter, s_strSbgSolutionMode, XimeaFramerate, XimeaExposeTime, XimeaExposeMaxValue, s_strPitch, s_strRoll, s_strYaw, s_spectralBin, s_remainingTime, s_remainingSpace); #else snprintf(message, DJI_WIDGET_FLOATING_WINDOW_MSG_MAX_LEN, @@ -367,6 +375,8 @@ static void *DjiTest_WidgetTask(void *arg) // 关闭文件指针 pclose(fp); + extractSpectralBinAndBandnumber(false); + //判断ximeaAirborneSystem系统是否存活 // if(ximeaAirborneSystemSurvivalTime > 10) @@ -467,7 +477,7 @@ static void *PsdkTest_IrisRecordSystemChanged(void *arg)// case 0: s_strStateOfSbg="未打开"; - if (systemON_Control == 0 || systemON_Control == 4) + if (systemON_Control == 0 || systemON_Control == 3 || systemON_Control == 4) { strcpy(s_strUIMessage,"系统已就绪!"); messageTimeCounter = 0; @@ -476,13 +486,6 @@ static void *PsdkTest_IrisRecordSystemChanged(void *arg)// systemON_Control = 1;//ximeaAirborneSystem系统一启动就会发送此信息 → 代表采集系统就绪; } - if (systemON_Control == 3) - { - strcpy(s_strUIMessage,"数据量过大,采集系统已经停止,请重新上电!"); - messageTimeCounter = 0; - messageTimespan = 1000; - } - break; case 1: s_strStateOfSbg="波特率设置失败"; @@ -531,19 +534,19 @@ static void *PsdkTest_IrisRecordSystemChanged(void *arg)// switch (s_sbgMagState) { case 0: - s_strSbgSolutionMode="UNINITI";//UNINITIALIZED + s_strSbgSolutionMode="dis_UNINIT";//UNINITIALIZED break; case 1: - s_strSbgSolutionMode="GYRO";//VERTICAL_GYRO + s_strSbgSolutionMode="dis_GYRO";//VERTICAL_GYRO break; case 2: - s_strSbgSolutionMode="AHRS"; + s_strSbgSolutionMode="dis_AHRS"; break; case 3: - s_strSbgSolutionMode="VELOCITY";//NAV_VELOCITY + s_strSbgSolutionMode="dis_VELOCITY";//NAV_VELOCITY break; case 4: - s_strSbgSolutionMode="FULL";//NAV_POSITION + s_strSbgSolutionMode="en_FULL";//NAV_POSITION break; default: @@ -586,10 +589,10 @@ static void *PsdkTest_IrisRecordSystemChanged(void *arg)// messageTimespan = 200; break; case 100: - s_strStateOfXimea="未打开"; + s_strStateOfXimea="未连接"; break; case 101: - s_strStateOfXimea="打开成功"; + s_strStateOfXimea="连接成功"; strcpy(s_strUIMessage,"系统启动成功!"); messageTimeCounter = 0; @@ -597,10 +600,10 @@ static void *PsdkTest_IrisRecordSystemChanged(void *arg)// break; case 102: - s_strStateOfXimea="帧率完成"; + s_strStateOfXimea="连接成功"; break; case 103: - s_strStateOfXimea="曝光完成"; + s_strStateOfXimea="连接成功"; break; case 104: s_strStateOfXimea="采集中"; @@ -614,9 +617,9 @@ static void *PsdkTest_IrisRecordSystemChanged(void *arg)// { strcpy(XimeaExposeMaxValue, result[1]); - int exposeTimeTmp = atoi(result[2]); - sprintf(XimeaExposeTime,"%d",exposeTimeTmp); - s_widgetValueList[8] = exposeTimeTmp; + exposeTimeInt = atoi(result[2]); + sprintf(XimeaExposeTime,"%d",exposeTimeInt); + s_widgetValueList[8] = exposeTimeInt; strcpy(s_strUIMessage,"曝光时间设置成功!"); messageTimeCounter = 0; @@ -667,7 +670,6 @@ static T_DjiReturnCode DjiTestWidget_GetWidgetValue(E_DjiWidgetType widgetType, return DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS; } -int frameRateGlobel = 0; static T_DjiReturnCode PsdkTestWidget_SetWidgetValue_StartRecord(E_DjiWidgetType widgetType, uint32_t index, int32_t value, void *userData) { @@ -675,6 +677,7 @@ static T_DjiReturnCode PsdkTestWidget_SetWidgetValue_StartRecord(E_DjiWidgetType USER_LOG_INFO("Set widget value, widgetType = %s, widgetIndex = %d ,widgetValue = %d", s_widgetTypeNameArray[widgetType], index, value); + int32_t valueTmp = s_widgetValueList[index]; s_widgetValueList[index] = value; switch (index) @@ -685,7 +688,7 @@ static T_DjiReturnCode PsdkTestWidget_SetWidgetValue_StartRecord(E_DjiWidgetType printf("systemON_Control的值为:%d\n", systemON_Control); if (0 <= systemON_Control && systemON_Control <= 4) { - strcpy(s_strUIMessage,"系统已经关闭!"); + strcpy(s_strUIMessage,"系统正在关闭!"); messageTimeCounter = 0; messageTimespan = 1000; @@ -700,25 +703,7 @@ static T_DjiReturnCode PsdkTestWidget_SetWidgetValue_StartRecord(E_DjiWidgetType // printf("命令行指令为:%s\n",commandtmp); // system(commandtmp); - FILE *fp; - fp = popen("kill $(ps aux | grep ximeaAirborneSystem | grep -v grep | awk \'{print $2}\')", "r"); - if (fp == NULL) - { - perror("popen"); - } - - s_strStateOfXimea=" "; - s_strStateOfSbg=" "; - s_strSbgSatelliteCounter=" "; - s_strSbgSolutionMode=" "; - sprintf(XimeaFramerate,"%s"," "); - sprintf(XimeaExposeTime,"%s"," "); - sprintf(XimeaExposeMaxValue,"%s"," "); - sprintf(s_spectralBin,"%s"," "); - s_remainingTime=" "; - - s_widgetValueList[6] = 0; - s_widgetValueList[8] = 0; + closeXimeaRecordSystem(); } } else if (value==1)//系统启动 @@ -763,6 +748,13 @@ static T_DjiReturnCode PsdkTestWidget_SetWidgetValue_StartRecord(E_DjiWidgetType messageTimeCounter = 0; messageTimespan = 10; +// printf("index-------:%d\n", index); +// printf("valueTmp-------:%d\n", valueTmp); + + //下面的代码没有作用:无法恢复界面的值为默认值(valueTmp) +// DjiTestWidget_SetWidgetValue(widgetType, index, valueTmp, userData); +// s_widgetValueList[index] = valueTmp; + break; } else if (s_stateOfXimea > 103) @@ -794,12 +786,10 @@ static T_DjiReturnCode PsdkTestWidget_SetWidgetValue_StartRecord(E_DjiWidgetType } // - frameRateGlobel = value; - char command[50] = "5,"; - char framerate[20]; - sprintf(framerate,"%d",value); - strcat(command,framerate); + char framerate_str[20]; + sprintf(framerate_str,"%d",value); + strcat(command,framerate_str); sendto(s_sockfd, command,strlen(command),0,(struct sockaddr *)&s_server,sizeof(s_server)); break; } @@ -855,24 +845,13 @@ static T_DjiReturnCode PsdkTestWidget_SetWidgetValue_StartRecord(E_DjiWidgetType } //曝光时间有效性判断 - if(frameRateGlobel == 0) - { - strcpy(s_strUIMessage,"请先设置帧率!"); - messageTimeCounter = 0; - messageTimespan = 10; - - break; - } - - float maxExposureTime = 1 / (float)frameRateGlobel * 1000;//单位是ms + float maxExposureTime = 1 / (float)framerate * 1000;//单位是ms if(value > maxExposureTime) { - strcpy(s_strUIMessage,"曝光时间超过上限,无效!"); + strcpy(s_strUIMessage,"曝光时间已设置为最大!"); messageTimeCounter = 0; messageTimespan = 10; - - break; } else if(value == 0) { @@ -908,22 +887,6 @@ static T_DjiReturnCode PsdkTestWidget_SetWidgetValue_StartRecord(E_DjiWidgetType break; } - else if (s_stateOfXimea == 101) - { - strcpy(s_strUIMessage,"请先设置帧率!"); - messageTimeCounter = 0; - messageTimespan = 10; - - break; - } - else if (s_stateOfXimea == 102) - { - strcpy(s_strUIMessage,"请先设置曝光时间!"); - messageTimeCounter = 0; - messageTimespan = 10; - - break; - } char* command = "3"; sendto(s_sockfd, command,strlen(command),0,(struct sockaddr *)&s_server,sizeof(s_server)); @@ -970,10 +933,11 @@ static T_DjiReturnCode PsdkTestWidget_SetWidgetValue_StartRecord(E_DjiWidgetType { system("sudo sed -i 's/spectralBin =.*/spectralBin = 2;/g' /media/nvme/300TC/config/ximea.cfg"); } + closeXimeaRecordSystem(); extractSpectralBinAndBandnumber(true); - strcpy(s_strUIMessage,"请重新上电!"); + strcpy(s_strUIMessage,"请等待采集系统重启!"); messageTimeCounter = 0; messageTimespan = 10000; @@ -985,6 +949,34 @@ static T_DjiReturnCode PsdkTestWidget_SetWidgetValue_StartRecord(E_DjiWidgetType return DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS; } +static void closeXimeaRecordSystem() +{ + FILE *fp; + fp = popen("kill $(ps aux | grep ximeaAirborneSystem | grep -v grep | awk \'{print $2}\')", "r"); + if (fp == NULL) + { + perror("popen"); + } + + s_strStateOfXimea=" "; + s_strStateOfSbg=" "; + s_strSbgSatelliteCounter=" "; + s_strSbgSolutionMode=" "; + sprintf(XimeaFramerate,"%s"," "); + sprintf(XimeaExposeTime,"%s"," "); + sprintf(XimeaExposeMaxValue,"%s"," "); + sprintf(s_spectralBin,"%s"," "); + s_remainingTime=" "; + + s_widgetValueList[5] = 0; +// s_widgetValueList[6] = 0; +// s_widgetValueList[8] = 0; + framerate = 0; + exposeTimeInt = 0; + + system("sudo gpio write 10 0"); +} + static void extractSpectralBinAndBandnumber(bool isModifyBin) { unsigned long long spectralBin, height; @@ -1029,17 +1021,7 @@ static void extractSpectralBinAndBandnumber(bool isModifyBin) pclose(fp); } - char command[256]; - memset(command, 0, sizeof(command)); - - sprintf(command,"sudo sed -i 's/.*bin.*/ \"widget_name\": \"bin%d_%d\",/g' %s", spectralBin, height, jsonPathCn); -// printf("command: %s", command); - system(command); - - memset(command, 0, sizeof(command)); - sprintf(command,"sudo sed -i 's/.*bin.*/ \"widget_name\": \"bin%d_%d\",/g' %s", spectralBin, height, jsonPathEn); -// printf("command: %s", command); - system(command); + s_widgetValueList[11] = spectralBin; if (!isModifyBin) { diff --git a/samples/sample_c/module_sample/widget/widget_file/cn_big_screen/widget_config.json b/samples/sample_c/module_sample/widget/widget_file/cn_big_screen/widget_config.json index 3fac21a..489c729 100644 --- a/samples/sample_c/module_sample/widget/widget_file/cn_big_screen/widget_config.json +++ b/samples/sample_c/module_sample/widget/widget_file/cn_big_screen/widget_config.json @@ -8,96 +8,13 @@ "is_enable": true }, "speaker": { - "is_enable_tts": true, + "is_enable_tts": false, "is_enable_voice": false }, "widget_list": [ - { - "widget_index": 0, - "widget_type": "button", - "widget_name": "按钮", - "icon_file_set": { - "icon_file_name_selected": "icon_button1.png", - "icon_file_name_unselected": "icon_button1.png" - }, - "customize_rc_buttons_config": { - "is_enable": true, - "mapping_config_display_order": 0 - } - }, - { - "widget_index": 1, - "widget_type": "list", - "widget_name": "列表", - "list_item": [ - { - "item_name": "选项_1", - "icon_file_set": { - "icon_file_name_selected": "icon_list_item1.png", - "icon_file_name_unselected": "icon_list_item1.png" - } - }, - { - "item_name": "选项_2", - "icon_file_set": { - "icon_file_name_selected": "icon_list_item2.png", - "icon_file_name_unselected": "icon_list_item2.png" - } - } - ], - "customize_rc_buttons_config": { - "is_enable": true, - "mapping_config_display_order": 1 - } - }, - { - "widget_index": 2, - "widget_type": "switch", - "widget_name": "开关", - "icon_file_set": { - "icon_file_name_selected": "icon_switch_select.png", - "icon_file_name_unselected": "icon_switch_unselect.png" - }, - "customize_rc_buttons_config": { - "is_enable": true, - "mapping_config_display_order": 2 - } - }, - { - "widget_index": 3, - "widget_type": "scale", - "widget_name": "范围条", - "icon_file_set": { - "icon_file_name_selected": "icon_scale.png", - "icon_file_name_unselected": "icon_scale.png" - }, - "customize_rc_buttons_config": { - "is_enable": true, - "mapping_config_display_order": 3, - "button_value_step_length": 5 - } - }, - { - "widget_index": 4, - "widget_type": "button", - "widget_name": "按钮", - "icon_file_set": { - "icon_file_name_selected": "icon_button1.png", - "icon_file_name_unselected": "icon_button1.png" - }, - "customize_rc_buttons_config": { - "is_enable": true, - "mapping_config_display_order": 0 - } - } ] }, "config_interface": { - "text_input_box": { - "widget_name": "文本输入框", - "placeholder_text": "请输入消息", - "is_enable": true - }, "widget_list": [ { "widget_index": 5, @@ -108,7 +25,7 @@ "widget_index": 6, "widget_type": "int_input_box", "widget_name": "帧率", - "int_input_box_hint": "单位:hz" + "int_input_box_hint": "单位:赫兹" }, { "widget_index": 7, diff --git a/samples/sample_c/module_sample/widget/widget_file/en_big_screen/widget_config.json b/samples/sample_c/module_sample/widget/widget_file/en_big_screen/widget_config.json index 2e1640d..489c729 100644 --- a/samples/sample_c/module_sample/widget/widget_file/en_big_screen/widget_config.json +++ b/samples/sample_c/module_sample/widget/widget_file/en_big_screen/widget_config.json @@ -8,96 +8,13 @@ "is_enable": true }, "speaker": { - "is_enable_tts": true, + "is_enable_tts": false, "is_enable_voice": false }, "widget_list": [ - { - "widget_index": 0, - "widget_type": "button", - "widget_name": "Button", - "icon_file_set": { - "icon_file_name_selected": "icon_button1.png", - "icon_file_name_unselected": "icon_button1.png" - }, - "customize_rc_buttons_config": { - "is_enable": true, - "mapping_config_display_order": 0 - } - }, - { - "widget_index": 1, - "widget_type": "list", - "widget_name": "List", - "list_item": [ - { - "item_name": "Item_1", - "icon_file_set": { - "icon_file_name_selected": "icon_list_item1.png", - "icon_file_name_unselected": "icon_list_item1.png" - } - }, - { - "item_name": "Item_2", - "icon_file_set": { - "icon_file_name_selected": "icon_list_item2.png", - "icon_file_name_unselected": "icon_list_item2.png" - } - } - ], - "customize_rc_buttons_config": { - "is_enable": true, - "mapping_config_display_order": 1 - } - }, - { - "widget_index": 2, - "widget_type": "switch", - "widget_name": "Switch", - "icon_file_set": { - "icon_file_name_selected": "icon_switch_select.png", - "icon_file_name_unselected": "icon_switch_unselect.png" - }, - "customize_rc_buttons_config": { - "is_enable": true, - "mapping_config_display_order": 2 - } - }, - { - "widget_index": 3, - "widget_type": "scale", - "widget_name": "Scale", - "icon_file_set": { - "icon_file_name_selected": "icon_scale.png", - "icon_file_name_unselected": "icon_scale.png" - }, - "customize_rc_buttons_config": { - "is_enable": true, - "mapping_config_display_order": 3, - "button_value_step_length": 5 - } - }, - { - "widget_index": 4, - "widget_type": "button", - "widget_name": "Button", - "icon_file_set": { - "icon_file_name_selected": "icon_button1.png", - "icon_file_name_unselected": "icon_button1.png" - }, - "customize_rc_buttons_config": { - "is_enable": true, - "mapping_config_display_order": 0 - } - } ] }, "config_interface": { - "text_input_box": { - "widget_name": "TextInputBox", - "placeholder_text": "Please input message", - "is_enable": true - }, "widget_list": [ { "widget_index": 5, @@ -108,7 +25,7 @@ "widget_index": 6, "widget_type": "int_input_box", "widget_name": "帧率", - "int_input_box_hint": "单位:hz" + "int_input_box_hint": "单位:赫兹" }, { "widget_index": 7,