2 Commits

Author SHA1 Message Date
66c3d0709e 1、添加功能:遥控器设置光谱bin;
2、设置版本号300TC_2.31.35.21,格式:2.psdk.ximeaAirborneSystem.ximeaControlDll;
2023-07-04 21:31:04 +08:00
f370231979 版本号:2.30.34.20
1. 添加ximea错误代码反馈:10、11;
2. 系统启动错误控制;
2023-06-26 19:14:31 +08:00
5 changed files with 145 additions and 19 deletions

View File

@ -196,11 +196,11 @@ static void *UserDataSubscription_Task(void *arg)
PsdkLogger_UserLogDebug("gps TIME: %d.", gpsTime);
}//PsdkLogger_UserLogInfo
printf("开始设置时间\n");
system('date');
if(counter>1 &&counter<10 && isGetGpsDate_time)//避免dji的bug第一次获取的gpsDate和gpsTime都为0
{
printf("开始设置时间\n");
system('date');
char *gpsDate_str = (char *)malloc(sizeof(char)*50);
char *gpsTime_str = (char *)malloc(sizeof(char)*20);

View File

@ -77,6 +77,10 @@ static int s_stateOfXimea=100;
static int s_stateOfSbg=0;
static int s_stateOfFile=0;
//0ximeaAirborneSystem系统未就绪不可启动1ximeaAirborneSystem系统就绪可以启动
//2ximeaAirborneSystem系统正在启动3ximeaAirborneSystem系统启动成功4系统已经关闭并且不能再次启动
int systemON_Control = 0;
char s_strUIMessage[100]=" ";
static char * s_strStateOfSbg="None";
static char * s_strSbgSatelliteCounter="None";
@ -84,6 +88,7 @@ static char * s_strSbgAccuracy="None";
char XimeaFramerate[100]=" ";
char XimeaExposeTime[100]=" ";
char XimeaExposeMaxValue[100]=" ";
char spectralBin[100]="None";
static char * s_strSbgSolutionMode="None";
static char * s_strStateOfXimea="None";
@ -111,6 +116,7 @@ static const T_PsdkWidgetHandlerListItem s_widgetHandlerList[] = {
{8, PSDK_WIDGET_TYPE_INT_INPUT_BOX, PsdkTestWidget_SetWidgetValue_StartRecord, PsdkTestWidget_GetWidgetValue, NULL},
{9, PSDK_WIDGET_TYPE_SWITCH, PsdkTestWidget_SetWidgetValue_StartRecord, PsdkTestWidget_GetWidgetValue, NULL},
{10, PSDK_WIDGET_TYPE_LIST, PsdkTestWidget_SetWidgetValue_StartRecord, PsdkTestWidget_GetWidgetValue, NULL},//PsdkTestWidget_SetWidgetValue
{11, PSDK_WIDGET_TYPE_LIST, PsdkTestWidget_SetWidgetValue_StartRecord, PsdkTestWidget_GetWidgetValue, NULL},
};
static char *s_widgetTypeNameArray[] = {
@ -285,8 +291,8 @@ 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, "%s\n相机: %s; 惯导: %s;\n卫星: %s; 精度: %s;\n帧率: %s;曝光: %s;max: %s;\nP: %s; R: %s; Y: %s;\n",
s_strUIMessage, s_strStateOfXimea, s_strStateOfSbg, s_strSbgSatelliteCounter, s_strSbgAccuracy, XimeaFramerate, XimeaExposeTime, XimeaExposeMaxValue, s_strPitch, s_strRoll, s_strYaw);
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光谱bin: %s;\n",
s_strUIMessage, s_strStateOfXimea, s_strStateOfSbg, s_strSbgSatelliteCounter, s_strSbgAccuracy, XimeaFramerate, XimeaExposeTime, XimeaExposeMaxValue, s_strPitch, s_strRoll, s_strYaw, spectralBin);
psdkStat = PsdkWidgetFloatingWindow_ShowMessage(message);
if (psdkStat != PSDK_ERROR_SYSTEM_MODULE_CODE_SUCCESS) {
@ -393,6 +399,23 @@ static void *PsdkTest_IrisRecordSystemChanged(void *arg)//
{
case 0:
s_strStateOfSbg="未打开";
if (systemON_Control == 0)
{
strcpy(s_strUIMessage,"系统已就绪!");
messageTimeCounter = 0;
messageTimespan = 1000;
systemON_Control = 1;//ximeaAirborneSystem系统一启动就会发送此信息 → 代表采集系统就绪;
}
if (systemON_Control == 3)
{
strcpy(s_strUIMessage,"数据量过大,采集系统已经停止,请重新上电!");
messageTimeCounter = 0;
messageTimespan = 1000;
}
break;
case 1:
s_strStateOfSbg="波特率设置失败";
@ -402,6 +425,7 @@ static void *PsdkTest_IrisRecordSystemChanged(void *arg)//
break;
case 3:
s_strStateOfSbg="采集中";
systemON_Control = 3;
break;
default:
@ -466,20 +490,41 @@ static void *PsdkTest_IrisRecordSystemChanged(void *arg)//
switch (s_stateOfXimea)//0-61ximea官方错误代码99发生的ximea官方错误代码没有处理100未打开101打开102设置帧率103自动曝光104正在采集
{
case 10:
s_strStateOfXimea="10";
strcpy(s_strUIMessage,"相机timeout请重启");
messageTimeCounter = 0;
messageTimespan = 200;
break;
case 11:
s_strStateOfXimea="11";
strcpy(s_strUIMessage,"相机Invalid arguments supplied");
messageTimeCounter = 0;
messageTimespan = 200;
break;
case 57:
s_strStateOfXimea="相机被占用";
s_strStateOfXimea="57";
strcpy(s_strUIMessage,"相机被占用!");
messageTimeCounter = 0;
messageTimespan = 200;
break;
case 99:
s_strStateOfXimea="未处理错误,错误码见日志";
break;
s_strStateOfXimea="99";
strcpy(s_strUIMessage,"相机异常,错误码见日志!");
messageTimeCounter = 0;
messageTimespan = 200;
break;
case 100:
s_strStateOfXimea="未打开";
break;
case 101:
s_strStateOfXimea="打开成功";
strcpy(s_strUIMessage,"系统打开成功!");
strcpy(s_strUIMessage,"系统启动成功!");
messageTimeCounter = 0;
messageTimespan = 20;
@ -517,6 +562,11 @@ static void *PsdkTest_IrisRecordSystemChanged(void *arg)//
messageTimeCounter = 0;
messageTimespan = 10;
}
else if (strcmp(result[0],"bin") == 0)
{
int spectralBin_tm = atoi(result[2]);
sprintf(spectralBin,"%d",spectralBin_tm);
}
}
}
@ -549,7 +599,6 @@ static T_PsdkReturnCode PsdkTestWidget_GetWidgetValue(E_PsdkWidgetType widgetTyp
}
int frameRateGlobel = 0;
int systemON_Control = 0;
static T_PsdkReturnCode PsdkTestWidget_SetWidgetValue_StartRecord(E_PsdkWidgetType widgetType, uint32_t index, int32_t value,
void *userData)
{
@ -564,27 +613,54 @@ static T_PsdkReturnCode PsdkTestWidget_SetWidgetValue_StartRecord(E_PsdkWidgetTy
case 5://系统启动关闭
if (value==0)//系统关闭
{
char* command = "2";
sendto(s_sockfd, command,strlen(command),0,(struct sockaddr *)&s_server,sizeof(s_server));
if (systemON_Control == 3)
{
strcpy(s_strUIMessage,"系统已经关闭!");
messageTimeCounter = 0;
messageTimespan = 1000;
char* command = "2";
sendto(s_sockfd, command,strlen(command),0,(struct sockaddr *)&s_server,sizeof(s_server));
systemON_Control = 4;
}
}
else if (value==1)//系统启动
{
systemON_Control++;
if (systemON_Control>=2)
if (systemON_Control == 0)
{
strcpy(s_strUIMessage,"重启300TC");
strcpy(s_strUIMessage,"等待系统初始化");
messageTimeCounter = 0;
messageTimespan = 1000;
}
else
else if (systemON_Control == 1)
{
strcpy(s_strUIMessage,"系统启动中,超过60s未成功请重新启动系统");
strcpy(s_strUIMessage,"系统启动中,请等待");
messageTimeCounter = 0;
messageTimespan = 1000;
char* command = "1";
sendto(s_sockfd, command,strlen(command),0,(struct sockaddr *)&s_server,sizeof(s_server));
systemON_Control = 2;
}
else if (systemON_Control == 2)
{
strcpy(s_strUIMessage,"系统启动中,请等待!");
messageTimeCounter = 0;
messageTimespan = 1000;
}
else if (systemON_Control == 3)
{
strcpy(s_strUIMessage,"系统已经启动!");
messageTimeCounter = 0;
messageTimespan = 1000;
}
else if (systemON_Control == 4)
{
strcpy(s_strUIMessage,"相机占用,请重新上电!");
messageTimeCounter = 0;
messageTimespan = 1000;
}
}
break;
@ -790,6 +866,24 @@ static T_PsdkReturnCode PsdkTestWidget_SetWidgetValue_StartRecord(E_PsdkWidgetTy
system("/home/pi/tc_ShellScripts/update0.sh &> /media/nvme/300TC/update/log");
}
break;
case 11:
if (value==0)//等待指令
{
}
if (value==1)
{
system("sudo sed -i 's/spectralBin =.*/spectralBin = 1;/g' /media/nvme/300TC/config/ximea.cfg");
}
else if (value==2)
{
system("sudo sed -i 's/spectralBin =.*/spectralBin = 2;/g' /media/nvme/300TC/config/ximea.cfg");
}
strcpy(s_strUIMessage,"请重新上电!");
messageTimeCounter = 0;
messageTimespan = 10000;
break;
default:
break;

View File

@ -125,6 +125,22 @@
"item_name": "更新"
}
]
},
{
"widget_index": 11,
"widget_type": "list",
"widget_name": "bin",
"list_item": [
{
"item_name": "等待指令"
},
{
"item_name": "光谱1"
},
{
"item_name": "光谱2"
}
]
}
]
}

View File

@ -125,6 +125,22 @@
"item_name": "更新"
}
]
},
{
"widget_index": 11,
"widget_type": "list",
"widget_name": "bin",
"list_item": [
{
"item_name": "等待指令"
},
{
"item_name": "光谱1"
},
{
"item_name": "光谱2"
}
]
}
]
}

View File

@ -398,7 +398,7 @@ int main(void)
}
//设置负载设备的别称
if (PsdkProductInfo_SetAlias("300TC") != PSDK_ERROR_SYSTEM_MODULE_CODE_SUCCESS) {
if (PsdkProductInfo_SetAlias("300TC_2.31.35.21") != PSDK_ERROR_SYSTEM_MODULE_CODE_SUCCESS) {
PsdkLogger_UserLogError("set product alias error.");
return PSDK_ERROR_SYSTEM_MODULE_CODE_UNKNOWN;
}