当前使用PSDK版本V2.2.1。在使用Widget功能的时候,注册了PsdkTestWidget_SetWidge...
已完成当前使用PSDK版本V2.2.1。在使用Widget功能的时候,注册了PsdkTestWidget_SetWidgetValue/PsdkTestWidget_GetWidgetValue两个接口。get接口在开机后进行了调用,获取我本地的参数。但是现在我有一些关键参数在get被回调之后一段时间才能更新出来,这时候会因为不触发回调导致遥控器上widget与设备值不对应。我想问一下有没有什么接口机制触发PSDK的get函数重新获取我最新的设置值呢(遥控器不进行参数更改的情况下)?
-
get widget启动程序后是会自动获取的,不需要操作list再更新,可以在PsdkTestWidget_GetWidgetValue添加个打印试试是否有主动触发回调。  -
您好,我这次准确复位到了问题。目前PSDK版本2.2.1。
在使用M210飞机时,PSDK没有任何问题。
但是使用M300飞机时,PsdkTestWidget_GetWidgetValue这个函数返回给我list的index和遥控器上面显示并不能对应。且有很多时候遥控器点击某个list选项进行更改时,没有实际下发到PSDK端,未造成实际的更改。但有时候又能正确的下发并更改,这些问题在M210上面都不存在。
假如我让飞机重新上电,我printf出来PsdkTestWidget_GetWidgetValue获取的参数如下图,参数与我挂载设备的实际参数对应,我正确给PSDK上传了index,但是这时候遥控器的所有list都是index 0的选项,没有正确刷新
-
我这边测试是正常的,如下修改代码赋值。  PSDK运行程序,遥控器获取值正确。   -
static T_PsdkReturnCode PsdkTestWidget_SetWidgetValue(E_PsdkWidgetType widgetType, uint32_t index, int32_t value,
void *userData)
{
s_widgetValueList[index] = value;
switch(index)
{
case 0:
psdk_set_distance_mode(value);
break;
case 1:
psdk_set_distance_value(value);
break;
case 2:
psdk_set_cm_repair(value);
break;
default:
if(set_cm_params_cmd(index, value))
{
}
break;
}
return PSDK_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
static T_PsdkReturnCode PsdkTestWidget_GetWidgetValue(E_PsdkWidgetType widgetType, uint32_t index, int32_t *value, void *userData)
{
*value = s_widgetValueList[index];
printf("psdk get index:%d val:%d \n", index, *value);
return PSDK_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
}
static void *PsdkTest_WidgetTask(void *arg)
{
char message[PSDK_WIDGET_FLOATING_WINDOW_MSG_MAX_LEN];
uint32_t sysTimeMs = 0;
T_PsdkReturnCode psdkStat;
USER_UTIL_UNUSED(arg);
while (1) {
int32_t Value;
for(uint16_t ii = 3 ; ii < 8 ;ii++)
{
get_cm_params_cmd(ii, &Value);
s_widgetValueList[ii] = Value;
}
PsdkOsal_TaskSleepMs(200);
}
}当前定位到的具体现象为:当遥控器没有实际点击某一选项的时候,我通过PSDK能成功上传我的参数,但是遥控器上不会进行更新。
这将会导致一些问题:如果我的负载设备开机各个widget初始值并不为0,这时如果不点击遥控器上选项的更改,所有选项都显示为0,但是此时get回调函数上传的值都不为0
当前我使用PSDK版本V2.2.1,麻烦您测试一下如下场景是否有异常现象
1、将遥控器及飞机开机
2、不要点击任何遥控器任何选项
3、通过其他方式(不使用遥控器,比如通过如上代码块中的task去更改)让负载设备上传不为0的widget值
4、观察此时遥控器是否能正确跟随负载设备上传的值进行widget更新
当前测试结果:
1、同样的负载设备在M210任意飞机/遥控器版本可随时跟随上传值进行widget更新
2、M300配备的带屏遥控器固件版本在03.00.0000及以下也可以跟随上传值进行动态更新,以上的版本测试不正常
-
这是json文件
{
"version": {
"major" : 1,
"minor" : 0
},
"main_interface": {
"floating_window": {
"is_enable": true
}
},
"config_interface": {
"widget_list": [
{
"widget_index": 0,
"widget_type": "switch",
"widget_name": "等距拍照开关"
},
{
"widget_index": 1,
"widget_type": "int_input_box",
"widget_name": "等距拍照间距",
"int_input_box_hint": "单位 : 厘米"
},
{
"widget_index": 2,
"widget_type": "button",
"widget_name": "相机修复"
},
{
"widget_index": 3,
"widget_type": "list",
"widget_name": "快门",
"list_item": [
{
"item_name": "1/100"
},
{
"item_name": "1/125"
},
{
"item_name": "1/160"
},
{
"item_name": "1/200"
},
{
"item_name": "1/250"
},
{
"item_name": "1/320"
},
{
"item_name": "1/400"
},
{
"item_name": "1/500"
},
{
"item_name": "1/640"
},
{
"item_name": "1/800"
},
{
"item_name": "1/1000"
},
{
"item_name": "1/1250"
},
{
"item_name": "1/1600"
},
{
"item_name": "1/2000"
}
]
},
{
"widget_index": 4,
"widget_type": "list",
"widget_name": "ISO",
"list_item": [
{
"item_name": "AUTO"
},
{
"item_name": "100"
},
{
"item_name": "125"
},
{
"item_name": "160"
},
{
"item_name": "200"
},
{
"item_name": "250"
},
{
"item_name": "320"
},
{
"item_name": "400"
},
{
"item_name": "500"
},
{
"item_name": "640"
},
{
"item_name": "800"
},
{
"item_name": "1000"
},
{
"item_name": "1250"
},
{
"item_name": "1600"
}
]
},
{
"widget_index": 5,
"widget_type": "list",
"widget_name": "EV",
"list_item": [
{
"item_name": "-2.0"
},
{
"item_name": "-1.7"
},
{
"item_name": "-1.3"
},
{
"item_name": "-1.0"
},
{
"item_name": "-0.7"
},
{
"item_name": "-0.3"
},
{
"item_name": "0"
},
{
"item_name": "0.3"
},
{
"item_name": "0.7"
},
{
"item_name": "1.0"
},
{
"item_name": "1.3"
},
{
"item_name": "1.7"
},
{
"item_name": "2.0"
}
]
},
{
"widget_index": 6,
"widget_type": "list",
"widget_name": "白平衡",
"list_item": [
{
"item_name": "自动"
},
{
"item_name": "日光"
},
{
"item_name": "阴影"
},
{
"item_name": "阴天"
}
]
},
{
"widget_index": 7,
"widget_type": "list",
"widget_name": "WDR",
"list_item": [
{
"item_name": "OFF"
},
{
"item_name": "AUTO"
},
{
"item_name": "MED"
},
{
"item_name": "HIG"
}
]
}
]
}
} -
在main interface中也添加一个控件试试,APP端有bug,仅添加main_interface或仅添加config_interface控件可能会存在该异常现象,这个需要APP修复,我们已经反馈给Pilot APP进行修复,当前可能要先添加一个无效控件。 
请先登录再写评论。
评论
14 条评论