📄 exec_func.c
字号:
ss[iplace++]=workParam.pWorkParam_Value[iTemp];
}
}
*p_iplace=iplace;
return TRUE;
}
//STRU_QueLogData_Comm queLogData; //设置 查询日志数据的方式等
//得到//设置压缩回传的参数信息
uint8 GetSetupCompressRevert(void)
{
INT16U len=0,moveAddr=0;
uint8 paramValue[6];
memset(paramValue,0,sizeof(paramValue));
GetOmoveAddr(CUSTOM_PARAMS,CUSTOM_PARAMS_COUNT,0x000f,&len,&moveAddr);
W25X32_READ_Semphore(GetAddr(CUSTOM_PARAMS_SEC,moveAddr),sizeof(paramValue),paramValue);
setupCompressRevert.compressRevertData=paramValue[0]; // 需压缩回传的数据. 00:表示定位数据.01:表示带工作参数的定位数据
setupCompressRevert.accIn_CompressTimeSlot=paramValue[1]; //压缩的时间间隔(ACC开).单位秒,最小为1秒。
setupCompressRevert.accOut_CompressTimeSlot=paramValue[2]; //压缩的时间间隔(ACC关).单位秒,最小为1秒。
setupCompressRevert.compress_PlaceCou=paramValue[3]; //每包压缩的位置数。 表示一个数据包可以包含的压缩位置的数量,表示范围10~33,默认值为33。
setupCompressRevert.compressRevert_Cou=(uint16)(paramValue[4]<<8)+(uint16)paramValue[5]; //压缩回传的次数. 表示需要压缩回传的次数,当改值为FFFFH时表示连续不断的回传,当该值为0000H表示停止发送。
return TRUE;
}
//得到工作参数上传设置一(指定时间点方式)
uint8 GetWorkParamUploadCfg1(void)
{
uint8 i=0;
GetCustomValue(0x000a,(uint8 *)&workParamUploadCfg1.communi_Mode);
GetCustomValue(0x000b,(uint8 *)workParamUploadCfg1.stru_TimePoint_FORM);
for(i=0;i<240;i++)
{
if(workParamUploadCfg1.stru_TimePoint_FORM[i].timePoint_Hour==0xff
&&workParamUploadCfg1.stru_TimePoint_FORM[i].timePoint_Minute==0xff)
break;
}
TimePoint_Cou=i;
return TRUE;
}
uint8 GetCustomValue(uint16 paramID,uint8 * paramValue)
{
INT16U len=0,moveAddr=0;
GetOmoveAddr(CUSTOM_PARAMS,CUSTOM_PARAMS_COUNT,paramID,&len,&moveAddr);
W25X32_READ_Semphore(GetAddr(CUSTOM_PARAMS_SEC,moveAddr),len,paramValue);
return TRUE;
}
uint8 SaveCustomValue(uint16 paramID,uint8 * paramValue)
{
INT16U len=0,moveAddr=0;
GetOmoveAddr(CUSTOM_PARAMS,CUSTOM_PARAMS_COUNT,paramID,&len,&moveAddr);
W25X32_WRITE(GetAddr(CUSTOM_PARAMS_SEC,moveAddr),len,paramValue,CUSTOM_PARAMS_DATASIZE);
return TRUE;
}
uint8 GetParamValue(uint16 paramID,uint8 * paramValue)
{
INT16U len=0,moveAddr=0;
GetOmoveAddr(SETUP_PARAMS,SETUP_PARAMS_COUNT,paramID,&len,&moveAddr);
W25X32_READ_Semphore(GetAddr(SETUP_PARAMS_SEC,moveAddr),len,paramValue);
return TRUE;
}
uint8 SaveParamValue(uint16 paramID,uint8 * paramValue)
{
INT16U len=0,moveAddr=0;
GetOmoveAddr(SETUP_PARAMS,SETUP_PARAMS_COUNT,paramID,&len,&moveAddr);
W25X32_WRITE(GetAddr(SETUP_PARAMS_SEC,moveAddr),len,paramValue,SETUP_PARAMS_DATASIZE);
return TRUE;
}
uint8 GetWorkParamValue(uint16 paramID,uint8 * paramValue)
{
INT16U len=0,moveAddr=0;
GetOmoveAddr(WORK_PARAMS,WORK_PARAMS_COUNT,paramID,&len,&moveAddr);
W25X32_READ_Semphore(GetAddr(WORK_PARAMS_SEC,moveAddr),len,paramValue);
return TRUE;
}
uint8 SaveWorkParamValue(uint16 paramID,uint8 * paramValue)
{
INT16U len=0,moveAddr=0;
GetOmoveAddr(WORK_PARAMS,WORK_PARAMS_COUNT,paramID,&len,&moveAddr);
W25X32_WRITE(GetAddr(WORK_PARAMS_SEC,moveAddr),len,paramValue,WORK_PARAMS_DATASIZE);
return TRUE;
}
/*
uint8 GetLmt_V_Time(uint8 * lmtVTime)
{
INT16U len=0,moveAddr=0;
GetOmoveAddr(SETUP_PARAMS,SETUP_PARAMS_COUNT,0x0402,&len,&moveAddr);
W25X32_READ(GetAddr(SETUP_PARAMS_SEC,moveAddr),len,lmtVTime);
return TRUE;
}
*/
uint8 GetHeartSlot(void)
{
INT16U len=0,moveAddr=0;
INT8U temp=0;
//终端上发心跳间隔 占用1个字节,设置心跳时间,单位:秒,缺省40秒。
GetOmoveAddr(SETUP_PARAMS,SETUP_PARAMS_COUNT,0x0209,&len,&moveAddr);
W25X32_READ_Semphore(GetAddr(SETUP_PARAMS_SEC,moveAddr),len,&temp);
if((temp<10)||(temp>240))
temp=40; //默认40S
HeartSlot=temp;
return TRUE;
}
uint8 Term2Srv_Heart(uint8 * buff,uint16 * uiNum)
{
/////当定位终端连续一段时间(详见设定参数0004H指令)无任何数据发往中心时发送一条心跳指令,
/////该指令由消息长度(0009H)字段和定位终端ID字段组成,中心不需要回码,但中心收到后需立即回传一条心跳指令。
uint8 tempbuff[50];
memset(tempbuff,0,sizeof(tempbuff));
tempbuff[0]=0x00;
tempbuff[1]=0x09;
memmove(tempbuff+2,TERM_ID,sizeof(TERM_ID));
*uiNum=2+sizeof(TERM_ID);
*uiNum=getAStr(buff,tempbuff,*uiNum);
return TRUE;
}
/////////////////////得到通信方式及跟踪参数时间间隔距离间隔
INT8U GetTrace_FORM(void)
{
INT16U len=0,moveAddr=0;
INT8U buff[7];
INT8U iTemp=0,iplace=0;
GetOmoveAddr(CUSTOM_PARAMS,CUSTOM_PARAMS_COUNT,0x0000,&len,&moveAddr);////ACC开时间间隔,单位:秒,最小为0,默认为0秒
W25X32_READ_Semphore(GetAddr(CUSTOM_PARAMS_SEC,moveAddr),sizeof(buff),buff);
////////////////////////
#if defined(SYSTEM_SEMCONTROL)
{
INT8U SysRsrcErr;
OSSemPend(gw_pSysRsrcSem, 0, &SysRsrcErr);
}
#else
OSSchedLock();
#endif // end of #if defined(SYSTEM_SEMCONTROL)
trace_FORM.communi_Mode=(uint8)buff[iplace++];
trace_FORM.acc_In_Timeslot=0;
for(iTemp=0;iTemp<sizeof(trace_FORM.acc_In_Timeslot);iTemp++)
trace_FORM.acc_In_Timeslot|=(uint16)(buff[iplace++]<<(8*(sizeof(trace_FORM.acc_In_Timeslot)-iTemp-1)));
trace_FORM.acc_Out_Timeslot=0;
for(iTemp=0;iTemp<sizeof(trace_FORM.acc_Out_Timeslot);iTemp++)
trace_FORM.acc_Out_Timeslot|=(uint16)(buff[iplace++]<<(8*(sizeof(trace_FORM.acc_Out_Timeslot)-iTemp-1)));
trace_FORM.distance_Slot=0;
for(iTemp=0;iTemp<sizeof(trace_FORM.acc_In_Timeslot);iTemp++)
trace_FORM.distance_Slot|=(uint16)(buff[iplace++]<<(8*(sizeof(trace_FORM.distance_Slot)-iTemp-1)));
#if defined(UART_SEMCONTROL)
OSSemPost(gw_pSysRsrcSem);
#else
OSSchedUnlock();
#endif // end of #if defined(SYSTEM_SEMCONTROL)
return TRUE;
}
/////得到通信方式及工作参数上传设置2时间间隔距离间隔
INT8U GetWorkParamUploadCfg2(void)
{
INT16U len=0,moveAddr=0;
INT8U buff[7];
INT8U iTemp=0,iplace=0;
GetOmoveAddr(CUSTOM_PARAMS,CUSTOM_PARAMS_COUNT,0x0006,&len,&moveAddr);//通信方式//ACC开时间间隔,单位:秒,最小为0,默认为0秒
W25X32_READ_Semphore(GetAddr(CUSTOM_PARAMS_SEC,moveAddr),sizeof(buff),buff);
////////////////////////
#if defined(SYSTEM_SEMCONTROL)
{
INT8U SysRsrcErr;
OSSemPend(gw_pSysRsrcSem, 0, &SysRsrcErr);
}
#else
OSSchedLock();
#endif // end of #if defined(SYSTEM_SEMCONTROL)
workParamUploadCfg2.communi_Mode=(uint8)buff[iplace++];
workParamUploadCfg2.acc_In_Timeslot=0;
for(iTemp=0;iTemp<sizeof(workParamUploadCfg2.acc_In_Timeslot);iTemp++)
workParamUploadCfg2.acc_In_Timeslot|=(uint16)(buff[iplace++]<<(8*(sizeof(workParamUploadCfg2.acc_In_Timeslot)-iTemp-1)));
workParamUploadCfg2.acc_Out_Timeslot=0;
for(iTemp=0;iTemp<sizeof(workParamUploadCfg2.acc_Out_Timeslot);iTemp++)
workParamUploadCfg2.acc_Out_Timeslot|=(uint16)(buff[iplace++]<<(8*(sizeof(workParamUploadCfg2.acc_Out_Timeslot)-iTemp-1)));
workParamUploadCfg2.distance_Slot=0;
for(iTemp=0;iTemp<sizeof(workParamUploadCfg2.acc_In_Timeslot);iTemp++)
workParamUploadCfg2.distance_Slot|=(uint16)(buff[iplace++]<<(8*(sizeof(workParamUploadCfg2.distance_Slot)-iTemp-1)));
#if defined(UART_SEMCONTROL)
OSSemPost(gw_pSysRsrcSem);
#else
OSSchedUnlock();
#endif // end of #if defined(SYSTEM_SEMCONTROL)
return TRUE;
}
//INT8U gw_rambuff_IP[4]={221, 231, 140, 211};
INT8U GetIPandPort(void)
{
INT16U i=0,len=0,moveAddr=0;
INT8U buff_APN[40];//APN参数用ASCII码表示,长度小于32个字节。
INT8U buff_DNS[128];//设置主中心域名 中心域名用ASCII码表示,域名长度小于128个字节。
INT8U buff_IP[4]; //通讯IP地址,例如:10.120.37.19表示为0x0A 0x78 0x25 0x13。
INT8U buff_Port[2]; //通讯端口号,数值范围为0~65535。
uint16 port=0;
memset(Communi.strAPN,0,sizeof(Communi.strAPN));
memset(Communi.strIP,0,sizeof(Communi.strIP));
memset(Communi.strPort,0,sizeof(Communi.strPort));
memset(buff_APN,0,sizeof(buff_APN));
GetOmoveAddr(SETUP_PARAMS,SETUP_PARAMS_COUNT,0x0200,&len,&moveAddr);
W25X32_READ_Semphore(GetAddr(SETUP_PARAMS_SEC,moveAddr),len,buff_APN);
GetParamVal_ASCII(0x200,buff_APN,(uint32 *)&len);
// Chad
//strcat(Communi.strAPN,(char *)buff_APN);
strcpy(Communi.strAPN,(char *)buff_APN);
if(ReConnect_Cou<3)
{
memset(buff_DNS,0,sizeof(buff_DNS));
GetOmoveAddr(SETUP_PARAMS,SETUP_PARAMS_COUNT,0x0202,&len,&moveAddr);
W25X32_READ_Semphore(GetAddr(SETUP_PARAMS_SEC,moveAddr),len,buff_DNS);
GetParamVal_ASCII(0x202,buff_DNS,(uint32 *)&len);
// Chad
//strcat(Communi.strIP,(char *)buff_DNS);
strcpy(Communi.strIP,(char *)buff_DNS);
}
else if(ReConnect_Cou>=3&&ReConnect_Cou<6)
{
GetOmoveAddr(SETUP_PARAMS,SETUP_PARAMS_COUNT,0x0201,&len,&moveAddr);
W25X32_READ_Semphore(GetAddr(SETUP_PARAMS_SEC,moveAddr),len,buff_IP);
// Chad
#if 0
for(i=0;i<sizeof(buff_IP);i++)
{
char buff[4];
memset(buff,0,sizeof(buff));
sprintf(buff,"%d",buff_IP[i]);
strcat(Communi.strIP,buff);
strcat(Communi.strIP,".");
}
Communi.strIP[strlen(Communi.strIP)-1]='\0'; //去掉最后一个"."
#endif
sprintf(Communi.strIP,"%d.%d.%d.%d", buff_IP[0], buff_IP[1], buff_IP[2], buff_IP[3]);
//sprintf(Communi.strIP,"www.gttgps.cn");
}
else if(ReConnect_Cou>=6&&ReConnect_Cou<9)
{
memset(buff_DNS,0,sizeof(buff_DNS));
GetOmoveAddr(SETUP_PARAMS,SETUP_PARAMS_COUNT,0x0204,&len,&moveAddr);
W25X32_READ_Semphore(GetAddr(SETUP_PARAMS_SEC,moveAddr),len,buff_DNS);
GetParamVal_ASCII(0x202,buff_DNS,(uint32 *)&len);
//strcat(Communi.strIP,(char *)buff_DNS);
strcpy(Communi.strIP,(char *)buff_DNS);
}
else if(ReConnect_Cou>=9&&ReConnect_Cou<12)
{
GetOmoveAddr(SETUP_PARAMS,SETUP_PARAMS_COUNT,0x0203,&len,&moveAddr);
W25X32_READ_Semphore(GetAddr(SETUP_PARAMS_SEC,moveAddr),len,buff_IP);
// Chad
#if 0
for(i=0;i<sizeof(buff_IP);i++)
{
char buff[4];
memset(buff,0,sizeof(buff));
sprintf(buff,"%d",buff_IP[i]);
strcat(Communi.strIP,buff);
strcat(Communi.strIP,".");
}
Communi.strIP[strlen(Communi.strIP)-1]='\0'; //去掉最后一个"."
#endif
sprintf(Communi.strIP,"%d.%d.%d.%d", buff_IP[0], buff_IP[1], buff_IP[2], buff_IP[3]);
//sprintf(Communi.strIP,"www.gttgps.cn");
}
else
{
ReConnect_Cou=0;
}
GetOmoveAddr(SETUP_PARAMS,SETUP_PARAMS_COUNT,0x0205,&len,&moveAddr);
W25X32_READ_Semphore(GetAddr(SETUP_PARAMS_SEC,moveAddr),len,buff_Port);
for(i=0;i<sizeof(buff_Port);i++)
port|=buff_Port[i]<<(8*(sizeof(buff_Port)-i-1));
sprintf(Communi.strPort,"%d",port);
return TRUE;
}
//发送终端心跳包
uint8 Exec_Heart_Comm(void)
{
uint8 uiReviceBuf0[TRANSLEN/2];
uint16 uiNum=0;
memset(uiReviceBuf0,0,sizeof(uiReviceBuf0));
Term2Srv_Heart(uiReviceBuf0,&uiNum);
Send_data(uiReviceBuf0,sizeof(uiReviceBuf0),&uiNum);
uartWrite(UART2,uiReviceBuf0,uiNum,NULL);
// uartWrite(UART3,uiReviceBuf0,uiNum,NULL); //测试
return TRUE;
}
uint8 schedLCD_Alm_Comm(uint32 * schedLCD_CouSec,uint8 paramValue,uint32 timeout)
{
if(*schedLCD_CouSec>=timeout)
{
uint8 paramValue_alm=0;
*schedLCD_CouSec=0;
GetCustomValue(0x000e,¶mValue_alm);
if(paramValue_alm!=paramValue)
{
SaveCustomValue(0x000e,¶mValue);//将调度屏故障告警保存在工作参数开关量第三项中。
return TRUE;
}
}
return FALSE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -