fix
1. 无法第二次启动,授时等待时间优化; 2. 遥控器界面显示:硬盘可用空间,当前帧率剩余飞行时间; 3. 帧率曝光时间和遥控器右侧边栏数字联动; 4. bin2后面加通道数,侧边栏显示bin和通道数; 5. 遥控器去掉惯导定位精度,改为显示full nav; 6. 其他界面改动;
This commit is contained in:
@ -349,10 +349,10 @@ static void *UserFcSubscription_Task(void *arg)
|
|||||||
USER_LOG_DEBUG("gps TIME: %d.", gpsTime);
|
USER_LOG_DEBUG("gps TIME: %d.", gpsTime);
|
||||||
}//PsdkLogger_UserLogInfo
|
}//PsdkLogger_UserLogInfo
|
||||||
|
|
||||||
if(counter>1 &&counter<10 && isGetGpsDate_time)//避免dji的bug:第一次获取的gpsDate和gpsTime都为0
|
if(counter>1 &&counter<3 && isGetGpsDate_time)//避免dji的bug:第一次获取的gpsDate和gpsTime都为0
|
||||||
{
|
{
|
||||||
printf("开始设置时间\n");
|
printf("开始设置时间\n");
|
||||||
system('date');
|
system("date");
|
||||||
|
|
||||||
char *gpsDate_str = (char *)malloc(sizeof(char)*50);
|
char *gpsDate_str = (char *)malloc(sizeof(char)*50);
|
||||||
char *gpsTime_str = (char *)malloc(sizeof(char)*20);
|
char *gpsTime_str = (char *)malloc(sizeof(char)*20);
|
||||||
@ -423,6 +423,7 @@ static void *UserFcSubscription_Task(void *arg)
|
|||||||
|
|
||||||
// printf("command---:%s\n",command);
|
// printf("command---:%s\n",command);
|
||||||
system(command);
|
system(command);
|
||||||
|
system("echo \"1\" > /media/nvme/300TC/config/timesyncfromdji");
|
||||||
}
|
}
|
||||||
counter++;
|
counter++;
|
||||||
|
|
||||||
|
@ -53,6 +53,7 @@ static T_DjiReturnCode PsdkTestWidget_SetWidgetValue_StartRecord(E_DjiWidgetType
|
|||||||
void *userData);
|
void *userData);
|
||||||
|
|
||||||
static void *PsdkTest_IrisRecordSystemChanged(void *arg);
|
static void *PsdkTest_IrisRecordSystemChanged(void *arg);
|
||||||
|
static void extractSpectralBinAndBandnumber(bool isModifyBin);
|
||||||
|
|
||||||
/* Private values ------------------------------------------------------------*/
|
/* Private values ------------------------------------------------------------*/
|
||||||
static T_DjiTaskHandle s_widgetTestThread;
|
static T_DjiTaskHandle s_widgetTestThread;
|
||||||
@ -73,23 +74,33 @@ static int s_stateOfSbg=0;
|
|||||||
static int s_stateOfFile=0;
|
static int s_stateOfFile=0;
|
||||||
|
|
||||||
//0:ximeaAirborneSystem系统未就绪,不可启动;1:ximeaAirborneSystem系统就绪,可以启动;
|
//0:ximeaAirborneSystem系统未就绪,不可启动;1:ximeaAirborneSystem系统就绪,可以启动;
|
||||||
//2:ximeaAirborneSystem系统正在启动;3:ximeaAirborneSystem系统启动成功;4:系统已经关闭,并且不能再次启动;
|
//2:ximeaAirborneSystem系统正在启动;3:ximeaAirborneSystem系统启动成功;4:系统已经关闭;
|
||||||
int systemON_Control = 0;
|
int systemON_Control = 0;
|
||||||
|
|
||||||
char s_strUIMessage[100]=" ";
|
char s_strUIMessage[100]=" ";
|
||||||
static char * s_strStateOfSbg="None";
|
static char * s_strStateOfSbg=" ";
|
||||||
static char * s_strSbgSatelliteCounter="None";
|
static char * s_strSbgSatelliteCounter=" ";
|
||||||
static char * s_strSbgAccuracy="None";
|
static char * s_strSbgAccuracy=" ";
|
||||||
char XimeaFramerate[100]=" ";
|
char XimeaFramerate[100]=" ";
|
||||||
|
int framerate = 0;
|
||||||
char XimeaExposeTime[100]=" ";
|
char XimeaExposeTime[100]=" ";
|
||||||
char XimeaExposeMaxValue[100]=" ";
|
char XimeaExposeMaxValue[100]=" ";
|
||||||
char spectralBin[100]="None";
|
char s_spectralBin[100]=" ";
|
||||||
static char * s_strSbgSolutionMode="None";
|
int spectralBinInt = 0;
|
||||||
static char * s_strStateOfXimea="None";
|
static char * s_strSbgSolutionMode=" ";
|
||||||
|
static char * s_strStateOfXimea=" ";
|
||||||
|
|
||||||
char * s_strPitch="None";
|
char * s_strPitch=" ";
|
||||||
char * s_strRoll="None";
|
char * s_strRoll=" ";
|
||||||
char * s_strYaw="None";
|
char * s_strYaw=" ";
|
||||||
|
|
||||||
|
char * s_remainingTime=" ";
|
||||||
|
char * remainingTimeTmp[10];
|
||||||
|
char * s_remainingSpace=" ";
|
||||||
|
char * remainingSpaceTmp[10];
|
||||||
|
|
||||||
|
char jsonPathCn[WIDGET_DIR_PATH_LEN_MAX];
|
||||||
|
char jsonPathEn[WIDGET_DIR_PATH_LEN_MAX];
|
||||||
|
|
||||||
static int s_sockfd;
|
static int s_sockfd;
|
||||||
static struct sockaddr_in s_server;
|
static struct sockaddr_in s_server;
|
||||||
@ -152,6 +163,7 @@ T_DjiReturnCode DjiTest_WidgetStartService(void)
|
|||||||
snprintf(tempPath, WIDGET_DIR_PATH_LEN_MAX, "%swidget_file/en_big_screen", s_widgetFileDirPath);
|
snprintf(tempPath, WIDGET_DIR_PATH_LEN_MAX, "%swidget_file/en_big_screen", s_widgetFileDirPath);
|
||||||
} else {
|
} else {
|
||||||
snprintf(tempPath, WIDGET_DIR_PATH_LEN_MAX, "%swidget_file/en_big_screen", curFileDirPath);
|
snprintf(tempPath, WIDGET_DIR_PATH_LEN_MAX, "%swidget_file/en_big_screen", curFileDirPath);
|
||||||
|
snprintf(jsonPathEn, WIDGET_DIR_PATH_LEN_MAX, "%swidget_file/en_big_screen/widget_config.json", curFileDirPath);
|
||||||
}
|
}
|
||||||
|
|
||||||
//set default ui config path
|
//set default ui config path
|
||||||
@ -176,6 +188,7 @@ T_DjiReturnCode DjiTest_WidgetStartService(void)
|
|||||||
snprintf(tempPath, WIDGET_DIR_PATH_LEN_MAX, "%swidget_file/cn_big_screen", s_widgetFileDirPath);
|
snprintf(tempPath, WIDGET_DIR_PATH_LEN_MAX, "%swidget_file/cn_big_screen", s_widgetFileDirPath);
|
||||||
} else {
|
} else {
|
||||||
snprintf(tempPath, WIDGET_DIR_PATH_LEN_MAX, "%swidget_file/cn_big_screen", curFileDirPath);
|
snprintf(tempPath, WIDGET_DIR_PATH_LEN_MAX, "%swidget_file/cn_big_screen", curFileDirPath);
|
||||||
|
snprintf(jsonPathCn, WIDGET_DIR_PATH_LEN_MAX, "%swidget_file/cn_big_screen/widget_config.json", curFileDirPath);
|
||||||
}
|
}
|
||||||
|
|
||||||
djiStat = DjiWidget_RegUiConfigByDirPath(DJI_MOBILE_APP_LANGUAGE_CHINESE,
|
djiStat = DjiWidget_RegUiConfigByDirPath(DJI_MOBILE_APP_LANGUAGE_CHINESE,
|
||||||
@ -213,10 +226,9 @@ T_DjiReturnCode DjiTest_WidgetStartService(void)
|
|||||||
return DJI_ERROR_SYSTEM_MODULE_CODE_UNKNOWN;
|
return DJI_ERROR_SYSTEM_MODULE_CODE_UNKNOWN;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//Step 5 : Run ximea task
|
//Step 5 : Run ximea task
|
||||||
if (osalHandler->TaskCreate("ximea", PsdkTest_IrisRecordSystemChanged, WIDGET_TASK_STACK_SIZE, NULL,
|
if (osalHandler->TaskCreate("ximea", PsdkTest_IrisRecordSystemChanged, WIDGET_TASK_STACK_SIZE, NULL,
|
||||||
&s_widgetXimeaThread) != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS) {
|
&s_widgetXimeaThread) != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS) {
|
||||||
USER_LOG_ERROR("Psdk widget test task(ximea) create error.");
|
USER_LOG_ERROR("Psdk widget test task(ximea) create error.");
|
||||||
return DJI_ERROR_SYSTEM_MODULE_CODE_UNKNOWN;
|
return DJI_ERROR_SYSTEM_MODULE_CODE_UNKNOWN;
|
||||||
}
|
}
|
||||||
@ -273,6 +285,8 @@ static void *DjiTest_WidgetTask(void *arg)
|
|||||||
T_DjiReturnCode djiStat;
|
T_DjiReturnCode djiStat;
|
||||||
T_DjiOsalHandler *osalHandler = DjiPlatform_GetOsalHandler();
|
T_DjiOsalHandler *osalHandler = DjiPlatform_GetOsalHandler();
|
||||||
|
|
||||||
|
extractSpectralBinAndBandnumber(false);
|
||||||
|
|
||||||
USER_UTIL_UNUSED(arg);
|
USER_UTIL_UNUSED(arg);
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
@ -282,8 +296,8 @@ static void *DjiTest_WidgetTask(void *arg)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifndef USER_FIRMWARE_MAJOR_VERSION
|
#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",
|
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_strSbgAccuracy, XimeaFramerate, XimeaExposeTime, XimeaExposeMaxValue, s_strPitch, s_strRoll, s_strYaw, spectralBin);
|
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
|
#else
|
||||||
snprintf(message, DJI_WIDGET_FLOATING_WINDOW_MSG_MAX_LEN,
|
snprintf(message, DJI_WIDGET_FLOATING_WINDOW_MSG_MAX_LEN,
|
||||||
"System time : %u ms\r\nVersion: v%02d.%02d.%02d.%02d\r\nBuild time: %s %s", sysTimeMs,
|
"System time : %u ms\r\nVersion: v%02d.%02d.%02d.%02d\r\nBuild time: %s %s", sysTimeMs,
|
||||||
@ -306,6 +320,54 @@ static void *DjiTest_WidgetTask(void *arg)
|
|||||||
strcpy(s_strUIMessage," ");
|
strcpy(s_strUIMessage," ");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char buffer[128];
|
||||||
|
FILE *fp;
|
||||||
|
|
||||||
|
// 获取剩余硬盘空间和剩余采集时间
|
||||||
|
fp = popen("df --output=avail --block-size=1 /media/nvme | tail -n 1", "r");
|
||||||
|
if (fp == NULL) {
|
||||||
|
perror("popen");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 读取输出并处理
|
||||||
|
if (fgets(buffer, sizeof(buffer), fp) != NULL)
|
||||||
|
{
|
||||||
|
// printf("当前字符串-----: %s \n", buffer);
|
||||||
|
// 将输出转换为数值
|
||||||
|
unsigned long long availableBytes = strtoull(buffer, NULL, 10);
|
||||||
|
|
||||||
|
// 转换为MB
|
||||||
|
double availableMB = availableBytes / (1024.0 * 1024.0);
|
||||||
|
sprintf(remainingSpaceTmp, "%.0f", availableMB/1024);
|
||||||
|
s_remainingSpace = remainingSpaceTmp;
|
||||||
|
|
||||||
|
if (spectralBinInt!=0 && framerate!=0)
|
||||||
|
{
|
||||||
|
double frameSize;
|
||||||
|
if (spectralBinInt==1)
|
||||||
|
{
|
||||||
|
frameSize = 0.783;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
frameSize = 0.783/2;
|
||||||
|
}
|
||||||
|
|
||||||
|
double minTemp = availableMB / (frameSize * framerate * 60);
|
||||||
|
|
||||||
|
sprintf(remainingTimeTmp, "%.0f", minTemp);
|
||||||
|
s_remainingTime = remainingTimeTmp;
|
||||||
|
|
||||||
|
// 打印结果
|
||||||
|
// printf("Available space: %.2f MB;\n", availableMB);
|
||||||
|
// printf("remainint time of record:%.2f;\n", temp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 关闭文件指针
|
||||||
|
pclose(fp);
|
||||||
|
|
||||||
|
|
||||||
//判断ximeaAirborneSystem系统是否存活
|
//判断ximeaAirborneSystem系统是否存活
|
||||||
// if(ximeaAirborneSystemSurvivalTime > 10)
|
// if(ximeaAirborneSystemSurvivalTime > 10)
|
||||||
// {
|
// {
|
||||||
@ -381,14 +443,18 @@ static void *PsdkTest_IrisRecordSystemChanged(void *arg)//
|
|||||||
//printf("You got a message (%s%) from client.\nIt's ip is%s, port is %d.\n",buf,inet_ntoa(client.sin_addr),htons(client.sin_port));
|
//printf("You got a message (%s%) from client.\nIt's ip is%s, port is %d.\n",buf,inet_ntoa(client.sin_addr),htons(client.sin_port));
|
||||||
|
|
||||||
|
|
||||||
char * result[3];
|
char * result[5];
|
||||||
result[0] = strtok( buf, "," );
|
result[0] = strtok( buf, "," );
|
||||||
result[1] = strtok( NULL, "," );
|
result[1] = strtok( NULL, "," );
|
||||||
result[2] = strtok( NULL, "," );
|
result[2] = strtok( NULL, "," );
|
||||||
|
result[3] = strtok( NULL, "," );
|
||||||
|
result[4] = strtok( NULL, "," );
|
||||||
|
|
||||||
// printf("result[0]: %s\n", result[0]);
|
printf("result[0]: %s\n", result[0]);
|
||||||
// printf("result[1]: %s\n\n", result[1]);
|
printf("result[1]: %s\n\n", result[1]);
|
||||||
// printf("result[2]: %s\n\n", result[2]);
|
printf("result[2]: %s\n\n", result[2]);
|
||||||
|
printf("result[3]: %s\n\n", result[3]);
|
||||||
|
printf("result[4]: %s\n\n", result[4]);
|
||||||
|
|
||||||
|
|
||||||
if (strcmp(result[0],"sbg") == 0)
|
if (strcmp(result[0],"sbg") == 0)
|
||||||
@ -401,7 +467,7 @@ static void *PsdkTest_IrisRecordSystemChanged(void *arg)//
|
|||||||
case 0:
|
case 0:
|
||||||
s_strStateOfSbg="未打开";
|
s_strStateOfSbg="未打开";
|
||||||
|
|
||||||
if (systemON_Control == 0)
|
if (systemON_Control == 0 || systemON_Control == 4)
|
||||||
{
|
{
|
||||||
strcpy(s_strUIMessage,"系统已就绪!");
|
strcpy(s_strUIMessage,"系统已就绪!");
|
||||||
messageTimeCounter = 0;
|
messageTimeCounter = 0;
|
||||||
@ -460,36 +526,36 @@ static void *PsdkTest_IrisRecordSystemChanged(void *arg)//
|
|||||||
}
|
}
|
||||||
else if (strcmp(result[0],"SolutionMode") == 0)
|
else if (strcmp(result[0],"SolutionMode") == 0)
|
||||||
{
|
{
|
||||||
// s_sbgMagState = atoi(result[1]);
|
s_sbgMagState = atoi(result[1]);
|
||||||
//
|
|
||||||
// switch (s_sbgMagState)
|
switch (s_sbgMagState)
|
||||||
// {
|
{
|
||||||
// case 0:
|
case 0:
|
||||||
// s_strSbgSolutionMode="UNINITIALIZED";
|
s_strSbgSolutionMode="UNINITI";//UNINITIALIZED
|
||||||
// break;
|
break;
|
||||||
// case 1:
|
case 1:
|
||||||
// s_strSbgSolutionMode="VERTICAL_GYRO";
|
s_strSbgSolutionMode="GYRO";//VERTICAL_GYRO
|
||||||
// break;
|
break;
|
||||||
// case 2:
|
case 2:
|
||||||
// s_strSbgSolutionMode="AHRS";
|
s_strSbgSolutionMode="AHRS";
|
||||||
// break;
|
break;
|
||||||
// case 3:
|
case 3:
|
||||||
// s_strSbgSolutionMode="NAV_VELOCITY";
|
s_strSbgSolutionMode="VELOCITY";//NAV_VELOCITY
|
||||||
// break;
|
break;
|
||||||
// case 4:
|
case 4:
|
||||||
// s_strSbgSolutionMode="NAV_POSITION";
|
s_strSbgSolutionMode="FULL";//NAV_POSITION
|
||||||
// break;
|
break;
|
||||||
//
|
|
||||||
// default:
|
default:
|
||||||
// break;
|
break;
|
||||||
// }
|
}
|
||||||
}
|
}
|
||||||
else if (strcmp(result[0],"ximea") == 0)
|
else if (strcmp(result[0],"ximea") == 0)
|
||||||
{
|
{
|
||||||
s_stateOfXimea = atoi(result[1]);
|
s_stateOfXimea = atoi(result[1]);
|
||||||
printf("ximea的状态为: %d\n\n", atoi(result[1]));
|
printf("ximea的状态为: %d\n\n", atoi(result[1]));
|
||||||
|
|
||||||
switch (s_stateOfXimea)//0-61:ximea官方错误代码;99:发生的ximea官方错误代码,没有处理;100:未打开;101:打开;102:设置帧率;103:自动曝光;104:正在采集;
|
switch (s_stateOfXimea)//0-61:ximea官方错误代码;99:发生的ximea官方错误代码,没有处理;100:未打开;101:打开;102:设置帧率;103:自动曝光;104:采集中;
|
||||||
{
|
{
|
||||||
case 10:
|
case 10:
|
||||||
s_strStateOfXimea="10";
|
s_strStateOfXimea="10";
|
||||||
@ -531,13 +597,13 @@ static void *PsdkTest_IrisRecordSystemChanged(void *arg)//
|
|||||||
|
|
||||||
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="采集中";
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@ -547,7 +613,10 @@ static void *PsdkTest_IrisRecordSystemChanged(void *arg)//
|
|||||||
else if (strcmp(result[0],"XimeaAutoExpose") == 0)
|
else if (strcmp(result[0],"XimeaAutoExpose") == 0)
|
||||||
{
|
{
|
||||||
strcpy(XimeaExposeMaxValue, result[1]);
|
strcpy(XimeaExposeMaxValue, result[1]);
|
||||||
strcpy(XimeaExposeTime, result[2]);
|
|
||||||
|
int exposeTimeTmp = atoi(result[2]);
|
||||||
|
sprintf(XimeaExposeTime,"%d",exposeTimeTmp);
|
||||||
|
s_widgetValueList[8] = exposeTimeTmp;
|
||||||
|
|
||||||
strcpy(s_strUIMessage,"曝光时间设置成功!");
|
strcpy(s_strUIMessage,"曝光时间设置成功!");
|
||||||
messageTimeCounter = 0;
|
messageTimeCounter = 0;
|
||||||
@ -555,8 +624,9 @@ static void *PsdkTest_IrisRecordSystemChanged(void *arg)//
|
|||||||
}
|
}
|
||||||
else if (strcmp(result[0],"XimeaFrameRate") == 0)
|
else if (strcmp(result[0],"XimeaFrameRate") == 0)
|
||||||
{
|
{
|
||||||
int tmp = atoi(result[1]);
|
framerate = atoi(result[1]);
|
||||||
sprintf(XimeaFramerate,"%d",tmp);
|
s_widgetValueList[6] = framerate;
|
||||||
|
sprintf(XimeaFramerate,"%d",framerate);
|
||||||
// strcpy(XimeaFramerate,result[1]);
|
// strcpy(XimeaFramerate,result[1]);
|
||||||
|
|
||||||
strcpy(s_strUIMessage,"帧率设置成功!");
|
strcpy(s_strUIMessage,"帧率设置成功!");
|
||||||
@ -565,8 +635,7 @@ static void *PsdkTest_IrisRecordSystemChanged(void *arg)//
|
|||||||
}
|
}
|
||||||
else if (strcmp(result[0],"bin") == 0)
|
else if (strcmp(result[0],"bin") == 0)
|
||||||
{
|
{
|
||||||
int spectralBin_tm = atoi(result[2]);
|
spectralBinInt = atoi(result[2]);
|
||||||
sprintf(spectralBin,"%d",spectralBin_tm);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -613,7 +682,8 @@ static T_DjiReturnCode PsdkTestWidget_SetWidgetValue_StartRecord(E_DjiWidgetType
|
|||||||
case 5://系统启动关闭
|
case 5://系统启动关闭
|
||||||
if (value==0)//系统关闭
|
if (value==0)//系统关闭
|
||||||
{
|
{
|
||||||
if (systemON_Control == 3)
|
printf("systemON_Control的值为:%d\n", systemON_Control);
|
||||||
|
if (0 <= systemON_Control && systemON_Control <= 4)
|
||||||
{
|
{
|
||||||
strcpy(s_strUIMessage,"系统已经关闭!");
|
strcpy(s_strUIMessage,"系统已经关闭!");
|
||||||
messageTimeCounter = 0;
|
messageTimeCounter = 0;
|
||||||
@ -623,17 +693,44 @@ static T_DjiReturnCode PsdkTestWidget_SetWidgetValue_StartRecord(E_DjiWidgetType
|
|||||||
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));
|
||||||
|
|
||||||
systemON_Control = 4;
|
systemON_Control = 4;
|
||||||
|
|
||||||
|
// sleep(1);//此线程不能睡眠,否则会报很多错误
|
||||||
|
// char *commandtmp = (char *)malloc(sizeof(char)*100);
|
||||||
|
// strcat(commandtmp, "kill $(ps aux | grep ximeaAirborneSystem | grep -v grep | awk \'{print $2}\')");
|
||||||
|
// 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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (value==1)//系统启动
|
else if (value==1)//系统启动
|
||||||
{
|
{
|
||||||
if (systemON_Control == 0)
|
printf("systemON_Control的值为:%d\n", systemON_Control);
|
||||||
|
if (systemON_Control == 4)
|
||||||
{
|
{
|
||||||
strcpy(s_strUIMessage,"请等待系统初始化!");
|
strcpy(s_strUIMessage,"请等待系统初始化!");
|
||||||
messageTimeCounter = 0;
|
messageTimeCounter = 0;
|
||||||
messageTimespan = 1000;
|
messageTimespan = 1000;
|
||||||
}
|
}
|
||||||
else if (systemON_Control == 1)
|
else if (systemON_Control == 0 || systemON_Control == 1)
|
||||||
{
|
{
|
||||||
strcpy(s_strUIMessage,"系统启动中,请等待!");
|
strcpy(s_strUIMessage,"系统启动中,请等待!");
|
||||||
messageTimeCounter = 0;
|
messageTimeCounter = 0;
|
||||||
@ -656,12 +753,6 @@ static T_DjiReturnCode PsdkTestWidget_SetWidgetValue_StartRecord(E_DjiWidgetType
|
|||||||
messageTimeCounter = 0;
|
messageTimeCounter = 0;
|
||||||
messageTimespan = 1000;
|
messageTimespan = 1000;
|
||||||
}
|
}
|
||||||
else if (systemON_Control == 4)
|
|
||||||
{
|
|
||||||
strcpy(s_strUIMessage,"相机占用,请重新上电!");
|
|
||||||
messageTimeCounter = 0;
|
|
||||||
messageTimespan = 1000;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 6://设置帧率
|
case 6://设置帧率
|
||||||
@ -685,9 +776,9 @@ static T_DjiReturnCode PsdkTestWidget_SetWidgetValue_StartRecord(E_DjiWidgetType
|
|||||||
|
|
||||||
|
|
||||||
// 控制帧率范围
|
// 控制帧率范围
|
||||||
if(value > 150)
|
if(value > 250)
|
||||||
{
|
{
|
||||||
strcpy(s_strUIMessage,"帧率不可超过150!");
|
strcpy(s_strUIMessage,"帧率不可超过250!");
|
||||||
messageTimeCounter = 0;
|
messageTimeCounter = 0;
|
||||||
messageTimespan = 10;
|
messageTimespan = 10;
|
||||||
|
|
||||||
@ -880,6 +971,8 @@ static T_DjiReturnCode PsdkTestWidget_SetWidgetValue_StartRecord(E_DjiWidgetType
|
|||||||
system("sudo sed -i 's/spectralBin =.*/spectralBin = 2;/g' /media/nvme/300TC/config/ximea.cfg");
|
system("sudo sed -i 's/spectralBin =.*/spectralBin = 2;/g' /media/nvme/300TC/config/ximea.cfg");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extractSpectralBinAndBandnumber(true);
|
||||||
|
|
||||||
strcpy(s_strUIMessage,"请重新上电!");
|
strcpy(s_strUIMessage,"请重新上电!");
|
||||||
messageTimeCounter = 0;
|
messageTimeCounter = 0;
|
||||||
messageTimespan = 10000;
|
messageTimespan = 10000;
|
||||||
@ -892,4 +985,66 @@ static T_DjiReturnCode PsdkTestWidget_SetWidgetValue_StartRecord(E_DjiWidgetType
|
|||||||
return DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
|
return DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void extractSpectralBinAndBandnumber(bool isModifyBin)
|
||||||
|
{
|
||||||
|
unsigned long long spectralBin, height;
|
||||||
|
char buffer[128];
|
||||||
|
FILE *fp;
|
||||||
|
|
||||||
|
fp = popen("grep \"spectralBin = \" /media/nvme/300TC/config/ximea.cfg | awk '{print $3}' | tr -d ';'", "r");
|
||||||
|
if (fp == NULL) {
|
||||||
|
perror("popen");
|
||||||
|
}
|
||||||
|
if (fgets(buffer, sizeof(buffer), fp) != NULL)
|
||||||
|
{
|
||||||
|
// printf("当前字符串-----: %s \n", buffer);
|
||||||
|
spectralBin = strtoull(buffer, NULL, 10);
|
||||||
|
}
|
||||||
|
pclose(fp);
|
||||||
|
|
||||||
|
if (spectralBin == 1)
|
||||||
|
{
|
||||||
|
fp = popen("grep \"height\" /media/nvme/300TC/config/ximea.cfg | head -n 1 | awk '{print $3}' | tr -d ';'", "r");
|
||||||
|
if (fp == NULL) {
|
||||||
|
perror("popen");
|
||||||
|
}
|
||||||
|
if (fgets(buffer, sizeof(buffer), fp) != NULL)
|
||||||
|
{
|
||||||
|
// printf("当前字符串-----: %s \n", buffer);
|
||||||
|
height = strtoull(buffer, NULL, 10);
|
||||||
|
}
|
||||||
|
pclose(fp);
|
||||||
|
}
|
||||||
|
else if(spectralBin == 2)
|
||||||
|
{
|
||||||
|
fp = popen("grep \"height\" /media/nvme/300TC/config/ximea.cfg | head -n 2 | tail -n 1 | awk '{print $3}' | tr -d ';'", "r");
|
||||||
|
if (fp == NULL) {
|
||||||
|
perror("popen");
|
||||||
|
}
|
||||||
|
if (fgets(buffer, sizeof(buffer), fp) != NULL)
|
||||||
|
{
|
||||||
|
// printf("当前字符串-----: %s \n", buffer);
|
||||||
|
height = strtoull(buffer, NULL, 10);
|
||||||
|
}
|
||||||
|
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);
|
||||||
|
|
||||||
|
if (!isModifyBin)
|
||||||
|
{
|
||||||
|
sprintf(s_spectralBin,"%d_%d", spectralBin, height);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/****************** (C) COPYRIGHT DJI Innovations *****END OF FILE****/
|
/****************** (C) COPYRIGHT DJI Innovations *****END OF FILE****/
|
||||||
|
@ -108,7 +108,7 @@
|
|||||||
"widget_index": 6,
|
"widget_index": 6,
|
||||||
"widget_type": "int_input_box",
|
"widget_type": "int_input_box",
|
||||||
"widget_name": "帧率",
|
"widget_name": "帧率",
|
||||||
"int_input_box_hint": "unit:hz"
|
"int_input_box_hint": "单位:hz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"widget_index": 7,
|
"widget_index": 7,
|
||||||
@ -119,12 +119,12 @@
|
|||||||
"widget_index": 8,
|
"widget_index": 8,
|
||||||
"widget_type": "int_input_box",
|
"widget_type": "int_input_box",
|
||||||
"widget_name": "曝光时间",
|
"widget_name": "曝光时间",
|
||||||
"int_input_box_hint": "unit:ms"
|
"int_input_box_hint": "单位:毫秒"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"widget_index": 9,
|
"widget_index": 9,
|
||||||
"widget_type": "switch",
|
"widget_type": "switch",
|
||||||
"widget_name": "开始采集"
|
"widget_name": "高光谱采集"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"widget_index": 10,
|
"widget_index": 10,
|
||||||
@ -132,10 +132,10 @@
|
|||||||
"widget_name": "系统指令",
|
"widget_name": "系统指令",
|
||||||
"list_item": [
|
"list_item": [
|
||||||
{
|
{
|
||||||
"item_name": "等待指令"
|
"item_name": "其他"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"item_name": "重启电脑"
|
"item_name": "重启"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"item_name": "关机"
|
"item_name": "关机"
|
||||||
@ -157,7 +157,7 @@
|
|||||||
"widget_name": "bin",
|
"widget_name": "bin",
|
||||||
"list_item": [
|
"list_item": [
|
||||||
{
|
{
|
||||||
"item_name": "等待指令"
|
"item_name": "其他"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"item_name": "光谱1"
|
"item_name": "光谱1"
|
||||||
|
@ -108,7 +108,7 @@
|
|||||||
"widget_index": 6,
|
"widget_index": 6,
|
||||||
"widget_type": "int_input_box",
|
"widget_type": "int_input_box",
|
||||||
"widget_name": "帧率",
|
"widget_name": "帧率",
|
||||||
"int_input_box_hint": "unit:hz"
|
"int_input_box_hint": "单位:hz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"widget_index": 7,
|
"widget_index": 7,
|
||||||
@ -119,12 +119,12 @@
|
|||||||
"widget_index": 8,
|
"widget_index": 8,
|
||||||
"widget_type": "int_input_box",
|
"widget_type": "int_input_box",
|
||||||
"widget_name": "曝光时间",
|
"widget_name": "曝光时间",
|
||||||
"int_input_box_hint": "unit:ms"
|
"int_input_box_hint": "单位:毫秒"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"widget_index": 9,
|
"widget_index": 9,
|
||||||
"widget_type": "switch",
|
"widget_type": "switch",
|
||||||
"widget_name": "开始采集"
|
"widget_name": "高光谱采集"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"widget_index": 10,
|
"widget_index": 10,
|
||||||
@ -132,10 +132,10 @@
|
|||||||
"widget_name": "系统指令",
|
"widget_name": "系统指令",
|
||||||
"list_item": [
|
"list_item": [
|
||||||
{
|
{
|
||||||
"item_name": "等待指令"
|
"item_name": "其他"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"item_name": "重启电脑"
|
"item_name": "重启"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"item_name": "关机"
|
"item_name": "关机"
|
||||||
@ -157,7 +157,7 @@
|
|||||||
"widget_name": "bin",
|
"widget_name": "bin",
|
||||||
"list_item": [
|
"list_item": [
|
||||||
{
|
{
|
||||||
"item_name": "等待指令"
|
"item_name": "其他"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"item_name": "光谱1"
|
"item_name": "光谱1"
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
cmake_minimum_required(VERSION 3.5)
|
cmake_minimum_required(VERSION 3.5)
|
||||||
project(dji_sdk_demo_linux C)
|
project(dji_300tc C)
|
||||||
|
|
||||||
set(CMAKE_C_FLAGS "-pthread -std=gnu99")
|
set(CMAKE_C_FLAGS "-pthread -std=gnu99")
|
||||||
set(CMAKE_EXE_LINKER_FLAGS "-pthread")
|
set(CMAKE_EXE_LINKER_FLAGS "-pthread")
|
||||||
|
@ -137,7 +137,7 @@ int main(int argc, char **argv)
|
|||||||
return DJI_ERROR_SYSTEM_MODULE_CODE_SYSTEM_ERROR;
|
return DJI_ERROR_SYSTEM_MODULE_CODE_SYSTEM_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
returnCode = DjiCore_SetAlias("PSDK_APPALIAS");
|
returnCode = DjiCore_SetAlias("300TC_3.32.37.21");
|
||||||
if (returnCode != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS) {
|
if (returnCode != DJI_ERROR_SYSTEM_MODULE_CODE_SUCCESS) {
|
||||||
USER_LOG_ERROR("set alias error");
|
USER_LOG_ERROR("set alias error");
|
||||||
return DJI_ERROR_SYSTEM_MODULE_CODE_SYSTEM_ERROR;
|
return DJI_ERROR_SYSTEM_MODULE_CODE_SYSTEM_ERROR;
|
||||||
|
Reference in New Issue
Block a user