1.解决飞机加速后,云台俯仰角度异常问题;
2.将曝光时间和曝光时那一帧数据的最大值显示在浮窗上; 3.优化浮窗显示内容,将内容密度提高,不需要下滑浮窗就能看见所有信息; 4.浮窗第一行为滚动显示区域; 5.错误控制; 6.判断ximeaAirborneSystem系统是否存活:测出有bug,相关代码已经注释掉;
This commit is contained in:
@ -201,11 +201,11 @@ T_PsdkReturnCode PsdkTest_CameraMediaInit(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
//创建线程执行用户自定义函数!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
//创建线程执行用户自定义函数!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
if (PsdkOsal_TaskCreate(&s_userSendVideoThread, UserCameraMedia_SendVideoTask, "user_camera_media_task", 2048,
|
// if (PsdkOsal_TaskCreate(&s_userSendVideoThread, UserCameraMedia_SendVideoTask, "user_camera_media_task", 2048,
|
||||||
NULL) != PSDK_ERROR_SYSTEM_MODULE_CODE_SUCCESS) {
|
// NULL) != PSDK_ERROR_SYSTEM_MODULE_CODE_SUCCESS) {
|
||||||
PsdkLogger_UserLogError("user send video task create error.");
|
// PsdkLogger_UserLogError("user send video task create error.");
|
||||||
return PSDK_ERROR_SYSTEM_MODULE_CODE_UNKNOWN;
|
// return PSDK_ERROR_SYSTEM_MODULE_CODE_UNKNOWN;
|
||||||
}
|
// }
|
||||||
|
|
||||||
return PSDK_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
|
return PSDK_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
@ -73,13 +73,17 @@ static T_PsdkTaskHandle s_widgetXimeaThread;
|
|||||||
int SbgRecordCondition=0;
|
int SbgRecordCondition=0;
|
||||||
|
|
||||||
static int s_sbgMagState=0;
|
static int s_sbgMagState=0;
|
||||||
static int s_stateOfXimea=0;
|
static int s_stateOfXimea=100;
|
||||||
static int s_stateOfSbg=0;
|
static int s_stateOfSbg=0;
|
||||||
static int s_stateOfFile=0;
|
static int s_stateOfFile=0;
|
||||||
|
|
||||||
|
char s_strUIMessage[100]=" ";
|
||||||
static char * s_strStateOfSbg="None";
|
static char * s_strStateOfSbg="None";
|
||||||
static char * s_strSbgAccuracy="None";
|
|
||||||
static char * s_strSbgSatelliteCounter="None";
|
static char * s_strSbgSatelliteCounter="None";
|
||||||
|
static char * s_strSbgAccuracy="None";
|
||||||
|
char XimeaFramerate[100]=" ";
|
||||||
|
char XimeaExposeTime[100]=" ";
|
||||||
|
char XimeaExposeMaxValue[100]=" ";
|
||||||
static char * s_strSbgSolutionMode="None";
|
static char * s_strSbgSolutionMode="None";
|
||||||
static char * s_strStateOfXimea="None";
|
static char * s_strStateOfXimea="None";
|
||||||
|
|
||||||
@ -258,6 +262,12 @@ T_PsdkReturnCode PsdkTest_WidgetSetConfigFilePath(const char *path)
|
|||||||
|
|
||||||
/* Private functions definition-----------------------------------------------*/
|
/* Private functions definition-----------------------------------------------*/
|
||||||
//在DJI pilot的浮窗上显示系统时间
|
//在DJI pilot的浮窗上显示系统时间
|
||||||
|
int messageTimeCounter = 0;
|
||||||
|
int messageTimespan = 10;
|
||||||
|
|
||||||
|
int XimeaAirborneSystemSurvival_Counter = 1;
|
||||||
|
int ximeaAirborneSystemSurvivalTime = 0;
|
||||||
|
int ximeaAirborneSystemSurvivalTime_Temp = 0;
|
||||||
static void *PsdkTest_WidgetTask(void *arg)
|
static void *PsdkTest_WidgetTask(void *arg)
|
||||||
{
|
{
|
||||||
char message[PSDK_WIDGET_FLOATING_WINDOW_MSG_MAX_LEN];
|
char message[PSDK_WIDGET_FLOATING_WINDOW_MSG_MAX_LEN];
|
||||||
@ -266,6 +276,7 @@ static void *PsdkTest_WidgetTask(void *arg)
|
|||||||
|
|
||||||
USER_UTIL_UNUSED(arg);
|
USER_UTIL_UNUSED(arg);
|
||||||
|
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
psdkStat = PsdkOsal_GetTimeMs(&sysTimeMs);
|
psdkStat = PsdkOsal_GetTimeMs(&sysTimeMs);
|
||||||
if (psdkStat != PSDK_ERROR_SYSTEM_MODULE_CODE_SUCCESS) {
|
if (psdkStat != PSDK_ERROR_SYSTEM_MODULE_CODE_SUCCESS) {
|
||||||
@ -274,14 +285,40 @@ static void *PsdkTest_WidgetTask(void *arg)
|
|||||||
|
|
||||||
//snprintf(message, PSDK_WIDGET_FLOATING_WINDOW_MSG_MAX_LEN, "System time: %u ms;\nMAG: %d;\nIMAGER: %d;\nIMU: %d;\nFile: %d;\n", sysTimeMs, s_sbgMagState, s_stateOfXimea, s_stateOfSbg, s_stateOfFile);
|
//snprintf(message, PSDK_WIDGET_FLOATING_WINDOW_MSG_MAX_LEN, "System time: %u ms;\nMAG: %d;\nIMAGER: %d;\nIMU: %d;\nFile: %d;\n", sysTimeMs, s_sbgMagState, s_stateOfXimea, s_stateOfSbg, s_stateOfFile);
|
||||||
|
|
||||||
snprintf(message, PSDK_WIDGET_FLOATING_WINDOW_MSG_MAX_LEN, "System time: %u ms;\n光谱仪: %s;\n惯导: %s;\n精度: %s;\n卫星: %s;\npitch: %s;\nroll: %s;\nyaw: %s;\n",
|
snprintf(message, PSDK_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",
|
||||||
sysTimeMs, s_strStateOfXimea, s_strStateOfSbg, s_strSbgAccuracy, s_strSbgSatelliteCounter, s_strPitch, s_strRoll, s_strYaw);
|
s_strUIMessage, s_strStateOfXimea, s_strStateOfSbg, s_strSbgSatelliteCounter, s_strSbgAccuracy, XimeaFramerate, XimeaExposeTime, XimeaExposeMaxValue, s_strPitch, s_strRoll, s_strYaw);
|
||||||
|
|
||||||
psdkStat = PsdkWidgetFloatingWindow_ShowMessage(message);
|
psdkStat = PsdkWidgetFloatingWindow_ShowMessage(message);
|
||||||
if (psdkStat != PSDK_ERROR_SYSTEM_MODULE_CODE_SUCCESS) {
|
if (psdkStat != PSDK_ERROR_SYSTEM_MODULE_CODE_SUCCESS) {
|
||||||
PsdkLogger_UserLogError("Floating window show message error, stat = 0x%08llX", psdkStat);
|
PsdkLogger_UserLogError("Floating window show message error, stat = 0x%08llX", psdkStat);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
messageTimeCounter++;
|
||||||
|
|
||||||
|
if (messageTimeCounter % messageTimespan == 0)
|
||||||
|
{
|
||||||
|
strcpy(s_strUIMessage," ");
|
||||||
|
}
|
||||||
|
|
||||||
|
//判断ximeaAirborneSystem系统是否存活
|
||||||
|
// if(ximeaAirborneSystemSurvivalTime > 10)
|
||||||
|
// {
|
||||||
|
// if (XimeaAirborneSystemSurvival_Counter % 10 ==0)
|
||||||
|
// {
|
||||||
|
// if (ximeaAirborneSystemSurvivalTime - ximeaAirborneSystemSurvivalTime_Temp == 0)
|
||||||
|
// {
|
||||||
|
// strcpy(s_strUIMessage,"采集系统无响应,请重启!");
|
||||||
|
// messageTimeCounter = 0;
|
||||||
|
// messageTimespan = 10;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// XimeaAirborneSystemSurvival_Counter = 1;
|
||||||
|
// ximeaAirborneSystemSurvivalTime_Temp = ximeaAirborneSystemSurvivalTime;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// XimeaAirborneSystemSurvival_Counter++;
|
||||||
|
// }
|
||||||
|
|
||||||
PsdkOsal_TaskSleepMs(1000);
|
PsdkOsal_TaskSleepMs(1000);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -378,6 +415,8 @@ static void *PsdkTest_IrisRecordSystemChanged(void *arg)//
|
|||||||
s_strSbgAccuracy=result[1];
|
s_strSbgAccuracy=result[1];
|
||||||
s_strSbgSatelliteCounter=result[2];
|
s_strSbgSatelliteCounter=result[2];
|
||||||
|
|
||||||
|
ximeaAirborneSystemSurvivalTime++;
|
||||||
|
|
||||||
|
|
||||||
// s_sbgMagState = atoi(result[1]);
|
// s_sbgMagState = atoi(result[1]);
|
||||||
|
|
||||||
@ -439,12 +478,17 @@ static void *PsdkTest_IrisRecordSystemChanged(void *arg)//
|
|||||||
break;
|
break;
|
||||||
case 101:
|
case 101:
|
||||||
s_strStateOfXimea="打开成功";
|
s_strStateOfXimea="打开成功";
|
||||||
|
|
||||||
|
strcpy(s_strUIMessage,"系统打开成功!");
|
||||||
|
messageTimeCounter = 0;
|
||||||
|
messageTimespan = 20;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case 102:
|
case 102:
|
||||||
s_strStateOfXimea="帧率设置完成";
|
s_strStateOfXimea="帧率已设置";
|
||||||
break;
|
break;
|
||||||
case 103:
|
case 103:
|
||||||
s_strStateOfXimea="设置曝光完成";
|
s_strStateOfXimea="曝光完成";
|
||||||
break;
|
break;
|
||||||
case 104:
|
case 104:
|
||||||
s_strStateOfXimea="正在采集";
|
s_strStateOfXimea="正在采集";
|
||||||
@ -454,6 +498,25 @@ static void *PsdkTest_IrisRecordSystemChanged(void *arg)//
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (strcmp(result[0],"XimeaAutoExpose") == 0)
|
||||||
|
{
|
||||||
|
strcpy(XimeaExposeMaxValue, result[1]);
|
||||||
|
strcpy(XimeaExposeTime, result[2]);
|
||||||
|
|
||||||
|
strcpy(s_strUIMessage,"曝光时间设置成功!");
|
||||||
|
messageTimeCounter = 0;
|
||||||
|
messageTimespan = 10;
|
||||||
|
}
|
||||||
|
else if (strcmp(result[0],"XimeaFrameRate") == 0)
|
||||||
|
{
|
||||||
|
int tmp = atoi(result[1]);
|
||||||
|
sprintf(XimeaFramerate,"%d",tmp);
|
||||||
|
// strcpy(XimeaFramerate,result[1]);
|
||||||
|
|
||||||
|
strcpy(s_strUIMessage,"帧率设置成功!");
|
||||||
|
messageTimeCounter = 0;
|
||||||
|
messageTimespan = 10;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -485,6 +548,7 @@ static T_PsdkReturnCode PsdkTestWidget_GetWidgetValue(E_PsdkWidgetType widgetTyp
|
|||||||
return PSDK_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
|
return PSDK_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int frameRateGlobel = 0;
|
||||||
static T_PsdkReturnCode PsdkTestWidget_SetWidgetValue_StartRecord(E_PsdkWidgetType widgetType, uint32_t index, int32_t value,
|
static T_PsdkReturnCode PsdkTestWidget_SetWidgetValue_StartRecord(E_PsdkWidgetType widgetType, uint32_t index, int32_t value,
|
||||||
void *userData)
|
void *userData)
|
||||||
{
|
{
|
||||||
@ -504,12 +568,55 @@ static T_PsdkReturnCode PsdkTestWidget_SetWidgetValue_StartRecord(E_PsdkWidgetTy
|
|||||||
}
|
}
|
||||||
else if (value==1)//系统启动
|
else if (value==1)//系统启动
|
||||||
{
|
{
|
||||||
|
strcpy(s_strUIMessage,"系统启动中,超过60s未成功,请重新启动系统!");
|
||||||
|
messageTimeCounter = 0;
|
||||||
|
messageTimespan = 1000;
|
||||||
|
|
||||||
char* command = "1";
|
char* command = "1";
|
||||||
sendto(s_sockfd, command,strlen(command),0,(struct sockaddr *)&s_server,sizeof(s_server));
|
sendto(s_sockfd, command,strlen(command),0,(struct sockaddr *)&s_server,sizeof(s_server));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 6://设置帧率
|
case 6://设置帧率
|
||||||
{
|
{
|
||||||
|
if (s_stateOfXimea < 101)
|
||||||
|
{
|
||||||
|
strcpy(s_strUIMessage,"请先启动系统!");
|
||||||
|
messageTimeCounter = 0;
|
||||||
|
messageTimespan = 10;
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else if (s_stateOfXimea > 103)
|
||||||
|
{
|
||||||
|
strcpy(s_strUIMessage,"相机采集中,此操作无效!");
|
||||||
|
messageTimeCounter = 0;
|
||||||
|
messageTimespan = 10;
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 控制帧率范围
|
||||||
|
if(value > 150)
|
||||||
|
{
|
||||||
|
strcpy(s_strUIMessage,"帧率不可超过150!");
|
||||||
|
messageTimeCounter = 0;
|
||||||
|
messageTimespan = 10;
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else if(value == 0)
|
||||||
|
{
|
||||||
|
strcpy(s_strUIMessage,"帧率无效!");
|
||||||
|
messageTimeCounter = 0;
|
||||||
|
messageTimespan = 10;
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
frameRateGlobel = value;
|
||||||
|
|
||||||
char command[50] = "5,";
|
char command[50] = "5,";
|
||||||
char framerate[20];
|
char framerate[20];
|
||||||
sprintf(framerate,"%d",value);
|
sprintf(framerate,"%d",value);
|
||||||
@ -524,17 +631,86 @@ static T_PsdkReturnCode PsdkTestWidget_SetWidgetValue_StartRecord(E_PsdkWidgetTy
|
|||||||
}
|
}
|
||||||
else if (value==1)
|
else if (value==1)
|
||||||
{
|
{
|
||||||
|
if (s_stateOfXimea < 101)
|
||||||
|
{
|
||||||
|
strcpy(s_strUIMessage,"请先启动系统!");
|
||||||
|
messageTimeCounter = 0;
|
||||||
|
messageTimespan = 10;
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else if (s_stateOfXimea > 103)
|
||||||
|
{
|
||||||
|
strcpy(s_strUIMessage,"相机采集中,此操作无效!");
|
||||||
|
messageTimeCounter = 0;
|
||||||
|
messageTimespan = 10;
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
strcpy(s_strUIMessage,"正在自动曝光,请稍等!");
|
||||||
|
messageTimeCounter = 0;
|
||||||
|
messageTimespan = 1000;
|
||||||
|
|
||||||
char* command = "6";
|
char* command = "6";
|
||||||
sendto(s_sockfd, command,strlen(command),0,(struct sockaddr *)&s_server,sizeof(s_server));
|
sendto(s_sockfd, command,strlen(command),0,(struct sockaddr *)&s_server,sizeof(s_server));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 8://手动设置曝光时间
|
case 8://手动设置曝光时间
|
||||||
{
|
{
|
||||||
|
if (s_stateOfXimea < 101)
|
||||||
|
{
|
||||||
|
strcpy(s_strUIMessage,"请先启动系统!");
|
||||||
|
messageTimeCounter = 0;
|
||||||
|
messageTimespan = 10;
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else if (s_stateOfXimea > 103)
|
||||||
|
{
|
||||||
|
strcpy(s_strUIMessage,"相机采集中,此操作无效!");
|
||||||
|
messageTimeCounter = 0;
|
||||||
|
messageTimespan = 10;
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
//曝光时间有效性判断
|
||||||
|
if(frameRateGlobel == 0)
|
||||||
|
{
|
||||||
|
strcpy(s_strUIMessage,"请先设置帧率!");
|
||||||
|
messageTimeCounter = 0;
|
||||||
|
messageTimespan = 10;
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
float maxExposureTime = 1 / (float)frameRateGlobel * 1000;//单位是ms
|
||||||
|
|
||||||
|
if(value > maxExposureTime)
|
||||||
|
{
|
||||||
|
strcpy(s_strUIMessage,"曝光时间超过上限,无效!");
|
||||||
|
messageTimeCounter = 0;
|
||||||
|
messageTimespan = 10;
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else if(value == 0)
|
||||||
|
{
|
||||||
|
strcpy(s_strUIMessage,"曝光时间无效!");
|
||||||
|
messageTimeCounter = 0;
|
||||||
|
messageTimespan = 10;
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
char command[50] = "7,";
|
char command[50] = "7,";
|
||||||
char exposureTime[20];
|
char exposureTime[20];
|
||||||
sprintf(exposureTime,"%d",value);
|
sprintf(exposureTime,"%d",(value));
|
||||||
strcat(command,exposureTime);
|
strcat(command,exposureTime);
|
||||||
sendto(s_sockfd, command,strlen(command),0,(struct sockaddr *)&s_server,sizeof(s_server));
|
sendto(s_sockfd, command,strlen(command),0,(struct sockaddr *)&s_server,sizeof(s_server));
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 9:
|
case 9:
|
||||||
@ -545,6 +721,31 @@ static T_PsdkReturnCode PsdkTestWidget_SetWidgetValue_StartRecord(E_PsdkWidgetTy
|
|||||||
}
|
}
|
||||||
else if (value==1)//开始采集
|
else if (value==1)//开始采集
|
||||||
{
|
{
|
||||||
|
if (s_stateOfXimea < 101)
|
||||||
|
{
|
||||||
|
strcpy(s_strUIMessage,"请先启动系统!");
|
||||||
|
messageTimeCounter = 0;
|
||||||
|
messageTimespan = 10;
|
||||||
|
|
||||||
|
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";
|
char* command = "3";
|
||||||
sendto(s_sockfd, command,strlen(command),0,(struct sockaddr *)&s_server,sizeof(s_server));
|
sendto(s_sockfd, command,strlen(command),0,(struct sockaddr *)&s_server,sizeof(s_server));
|
||||||
}
|
}
|
||||||
|
@ -99,7 +99,7 @@ T_PsdkReturnCode PsdkTest_XPortInit(void)
|
|||||||
|
|
||||||
//设置俯仰轴关节角(JOINT_ANGLE)限位
|
//设置俯仰轴关节角(JOINT_ANGLE)限位
|
||||||
limitAngle.upperLimit = 300;
|
limitAngle.upperLimit = 300;
|
||||||
limitAngle.lowerLimit = -1000;
|
limitAngle.lowerLimit = -1200;
|
||||||
psdkStat = PsdkXPort_SetLimitAngleSync(PSDK_XPORT_LIMIT_ANGLE_CATEGORY_PITCH_JOINT_ANGLE, limitAngle);
|
psdkStat = PsdkXPort_SetLimitAngleSync(PSDK_XPORT_LIMIT_ANGLE_CATEGORY_PITCH_JOINT_ANGLE, limitAngle);
|
||||||
if (psdkStat != PSDK_ERROR_SYSTEM_MODULE_CODE_SUCCESS) {
|
if (psdkStat != PSDK_ERROR_SYSTEM_MODULE_CODE_SUCCESS) {
|
||||||
PsdkLogger_UserLogError("set pitch joint angle limit angle for XPort error: 0x%08llX.", psdkStat);
|
PsdkLogger_UserLogError("set pitch joint angle limit angle for XPort error: 0x%08llX.", psdkStat);
|
||||||
@ -107,7 +107,7 @@ T_PsdkReturnCode PsdkTest_XPortInit(void)
|
|||||||
}
|
}
|
||||||
//设置俯仰轴欧拉角(EULER_ANGLE)限位
|
//设置俯仰轴欧拉角(EULER_ANGLE)限位
|
||||||
limitAngle.upperLimit = 300;
|
limitAngle.upperLimit = 300;
|
||||||
limitAngle.lowerLimit = -800;
|
limitAngle.lowerLimit = -1200;
|
||||||
psdkStat = PsdkXPort_SetLimitAngleSync(PSDK_XPORT_LIMIT_ANGLE_CATEGORY_PITCH_EULER_ANGLE, limitAngle);
|
psdkStat = PsdkXPort_SetLimitAngleSync(PSDK_XPORT_LIMIT_ANGLE_CATEGORY_PITCH_EULER_ANGLE, limitAngle);
|
||||||
if (psdkStat != PSDK_ERROR_SYSTEM_MODULE_CODE_SUCCESS) {
|
if (psdkStat != PSDK_ERROR_SYSTEM_MODULE_CODE_SUCCESS) {
|
||||||
PsdkLogger_UserLogError("set pitch euler angle limit angle for XPort error: 0x%08llX.", psdkStat);
|
PsdkLogger_UserLogError("set pitch euler angle limit angle for XPort error: 0x%08llX.", psdkStat);
|
||||||
|
Reference in New Issue
Block a user