📄 taskproc.cpp
字号:
if(ParaFromCenter1.wlscpara == 0)
{
i = Ack_Right_ReadSendCondition( 0x02, APPSERVER1 ); //通知第一个中心,发送条件有变化
if(i>0) ParaFromCenter1.wlscpara=1;
else {if(GetKPState==LOCK) printf("Svr_1_2\n");} //add by wuhuan 2006.6.5
//StartTick = CurrentTick;
return 2;
}
if(ParaFromCenter1.rfivtpara == 0)
{
i = Ack_Right_Read_interval_time_of_gatherdata(0x01, APPSERVER1 ); //通知第一个中心,发送条件有变化
if(i>0) ParaFromCenter1.rfivtpara=1;
else {if(GetKPState==LOCK) printf("Svr_1_3\n");} //add by wuhuan 2006.6.5
//StartTick = CurrentTick;
return 3;
}
if(ParaFromCenter1.wlivtpara == 0)
{
i = Ack_Right_Read_interval_time_of_gatherdata(0x02, APPSERVER1 ); //通知第一个中心,发送条件有变化
if(i>0) ParaFromCenter1.wlivtpara=1;
else {if(GetKPState==LOCK) printf("Svr_1_4\n");} //add by wuhuan 2006.6.5
//StartTick = CurrentTick;
return 4;
}
}
if(TCPManager[1]->GetConnState()==OPEN)
{
if(ParaFromCenter2.rfscpara == 0)
{
i = Ack_Right_ReadSendCondition( 0x01, APPSERVER2 ); //通知第二个中心,发送条件有变化
if(i>0) ParaFromCenter2.rfscpara=1;
else {if(GetKPState==LOCK) printf("Svr_2_1\n");} //add by wuhuan 2006.6.5
//StartTick = CurrentTick;
return 5;
}
if(ParaFromCenter2.wlscpara == 0)
{
i = Ack_Right_ReadSendCondition( 0x02, APPSERVER2 ); //通知第二个中心,发送条件有变化
if(i>0) ParaFromCenter2.wlscpara=1;
else {if(GetKPState==LOCK) printf("Svr_2_2\n");} //add by wuhuan 2006.6.5
//StartTick = CurrentTick;
return 6;
}
if(ParaFromCenter2.rfivtpara == 0)
{
i = Ack_Right_Read_interval_time_of_gatherdata(0x01, APPSERVER2 ); //通知第二个中心,发送条件有变化
if(i>0) ParaFromCenter2.rfivtpara=1;
else {if(GetKPState==LOCK) printf("Svr_2_3\n");} //add by wuhuan 2006.6.5
//StartTick = CurrentTick;
return 7;
}
if(ParaFromCenter2.wlivtpara == 0)
{
i = Ack_Right_Read_interval_time_of_gatherdata(0x02, APPSERVER2 ); //通知第二个中心,发送条件有变化
if(i>0) ParaFromCenter2.wlivtpara=1;
else {if(GetKPState==LOCK) printf("Svr_2_4\n");} //add by wuhuan 2006.6.5
//StartTick = CurrentTick;
return 8;
}
}
return 0;
}
int ManualFrameAnalysis( unsigned char *InStr )
{
int i, j, len, HDdatalen;
len=strlen(InStr);
//if(InStr[12]!=' ') return -1;
for( i=0; i<10; i++ )
ManualTimeBuff[i] = InStr[2+i];
ManualTimeBuff[10] = '\0';
for(i=0; i<4; i++)
{
if(InStr[13+i]==' ') break;
HDFlgBuff[i] = InStr[13+i];
}
HDFlgBuff[i]='\0';
HDdatalen = len-14-i;
for( j=0; j<HDdatalen; j++ )
{
HDDataBuff[j] = InStr[14+i+j];
}
HDDataBuff[j]='\0';
return 0;
}
int ManualReport( unsigned char *GetInDataBuff, unsigned char typeofdata, unsigned char datawktype,
unsigned char center )
{
int r;
int num,len;
unsigned char checksum = 0;
unsigned char cs_bytecount;
unsigned char i,j,k;
int type_byte_len=0;
unsigned char real_len_of_data_region;
unsigned char num_of_fill_byte;
unsigned char *PutOutTemBuff;
PutOutTemBuff = TmpBuf; //让指针变量的地址指向TmpBuf
/////////////////////////上报数据的固定格式
PutOutTemBuff[0]= 0x68;
PutOutTemBuff[1]= DTUAddress[0];
PutOutTemBuff[2]= DTUAddress[1];
PutOutTemBuff[3]= typeofdata;
PutOutTemBuff[4]= 0x68;
PutOutTemBuff[5]= 0x82; //自报数据的功能码
PutOutTemBuff[6] = 4; //数据域的长度4*8个字节
PutOutTemBuff[7]= datawktype;
for(i=0; i<10; i++)
PutOutTemBuff[8+i] = ManualTimeBuff[i]; //add by wuhuan 2006.7.18
PutOutTemBuff[18]= 0x20; //添加空格符
////////////////////////////////添加水情数据种类标识符
type_byte_len = strlen( HDFlgBuff );
for( i=0; i<type_byte_len; i++ )
PutOutTemBuff[19+i] = HDFlgBuff[i];
////////////////////////添加水情数据种类标识符结束
PutOutTemBuff[19+type_byte_len]= 0x20; //添加空格符
//////////////////////////////////
len = strlen(GetInDataBuff);
for(j=0; j<len; j++)
{
//存放采集的数值,字符型数据格式
PutOutTemBuff[20+type_byte_len+j]= GetInDataBuff[j];
}
PutOutTemBuff[20+type_byte_len+len]= 0x20; //添加空格符
PutOutTemBuff[21+type_byte_len+len]= 0x4E; //添加固定格式的数据域结束字符
PutOutTemBuff[22+type_byte_len+len]= 0x4E; //添加固定格式的数据域结束字符
real_len_of_data_region = 16+type_byte_len+len; //数据域的长度,<=32个字节
num_of_fill_byte = 32-real_len_of_data_region;
for(k=0; k<num_of_fill_byte; k++)
PutOutTemBuff[7 + real_len_of_data_region + k]= 0x00;
/////////////////////////////计算校验和
cs_bytecount = PutOutTemBuff[6]*8 + 7;
for( i=0; i < cs_bytecount; i++ )
checksum += PutOutTemBuff[i];
PutOutTemBuff[cs_bytecount]= checksum; //存放校验和的数值
PutOutTemBuff[cs_bytecount+1]= FRAME_END_CHAR; //帧结束标志
//////////////////////////////数据打包结束
PutOutTemBuff[cs_bytecount+2]= '\0';
r = Send_to_Single_Svr(PutOutTemBuff, center, cs_bytecount+2); //向应用端发送数据
return r;
}
int ConvertCharTimeToIntTime( char *InTime, char *OutTime )
{
int i;
for(i=0; i<5; i++)
OutTime[i]=(InTime[0+2*i]-48)*10 + InTime[1+2*i]-48;
OutTime[5]='\0';
return 0;
}
int ConvertIntTimeToCharTime( char *OutTime )
{
char string[10];
struct time t;
struct date d;
///////////////////////////////////////给上报的数据包中添加时间
getdate( &d ); //取系统的时间
gettime( &t );
//添加年
itoa(d.da_year,string,10); //把整型转换成十进制字符型,存放在string字符串中
OutTime[0]= string[2];
OutTime[1]= string[3];
//添加月份
itoa(d.da_mon,string,10); //把整型转换成十进制字符型,存放在string字符串中
if(strlen(string)<2)
{
OutTime[2]='0'; //月份少于两个字节前面补零
OutTime[3]= string[0];
}
else
{
OutTime[2]= string[0];
OutTime[3]= string[1];
}
//添加日期
itoa(d.da_day,string,10); //把整型转换成十进制字符型,存放在string字符串中
if(strlen(string)<2)
{
OutTime[4]='0'; //日期少于两个字节前面补零
OutTime[5]= string[0];
}
else
{
OutTime[4]= string[0];
OutTime[5]= string[1];
}
//添加小时
itoa(t.ti_hour,string,10); //把整型转换成十进制字符型,存放在string字符串中
if(strlen(string)<2)
{
OutTime[6]='0'; //小时数少于两个字节前面补零
OutTime[7]= string[0];
}
else
{
OutTime[6]= string[0];
OutTime[7]= string[1];
}
//添加分钟
itoa(t.ti_min,string,10); //把整型转换成十进制字符型,存放在string字符串中
if(strlen(string)<2)
{
OutTime[8]='0'; //分钟数少于两个字节前面补零
OutTime[9]= string[0];
}
else
{
OutTime[8]= string[0];
OutTime[9]= string[1];
}
/*//添加秒钟
itoa(t.ti_sec,string,10); //把整型转换成十进制字符型,存放在string字符串中
if(strlen(string)<2)
{
OutTime[10]='0'; //分钟数少于两个字节前面补零
OutTime[11]= string[0];
}
else
{
OutTime[10]= string[0];
OutTime[11]= string[1];
}*/
/////////////////////////////////////////////添加时间结束
return 1;
}
int ConvertHDFlgToIvtime( char *HDFlg )
{
int GatherIvTime=0;
if(strcmp(HDFlg, "PN01")==0) GatherIvTime = 0x0001;
else if(strcmp(HDFlg, "PN05")==0) GatherIvTime = 0x0005;
else if(strcmp(HDFlg, "PN10")==0) GatherIvTime = 0x000A;
else if(strcmp(HDFlg, "PN15")==0) GatherIvTime = 0x000F;
else if(strcmp(HDFlg, "PN30")==0) GatherIvTime = 0x001E;
else if(strcmp(HDFlg, "P1")==0) GatherIvTime = 0x003C;
else if(strcmp(HDFlg, "P2")==0) GatherIvTime = 0x0078;
else if(strcmp(HDFlg, "P3")==0) GatherIvTime = 0x00B4;
else if(strcmp(HDFlg, "P6")==0) GatherIvTime = 0x0168;
else if(strcmp(HDFlg, "P12")==0) GatherIvTime = 0x02D0;
else if(strcmp(HDFlg, "P24")==0) GatherIvTime = 0x05A0;
else
{
if(GetKPState==LOCK) printf("no match GatherIvTime\n");
return 0;
}
return GatherIvTime;
}
int ManualDataProc( )
{
int GatherIvTime;
char tmptimebuff[10];
if(strlen(ManualWLBuff)>0)
{
ManualFrameAnalysis( ManualWLBuff );
ConvertCharTimeToIntTime( ManualTimeBuff, tmptimebuff );
SaveWaterLevelData( "Water.dat", HDDataBuff, tmptimebuff ,'M');
ManualWLBuff[0]='\0';
}
if(strlen(ManualRFBuff)>0)
{
ManualFrameAnalysis( ManualRFBuff );
ConvertCharTimeToIntTime( ManualTimeBuff, tmptimebuff );
GatherIvTime = ConvertHDFlgToIvtime( HDFlgBuff );
SaveRainfallData( "Rain.dat", HDDataBuff, tmptimebuff, GatherIvTime,'M' );
ManualRFBuff[0] = '\0';
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -