📄 setbid.c
字号:
if(data_final_number>=8){ /////////////////////////////////
if(beginbit==1){ ////////////////////
data_final_number=1; ////////////////////////
beginbit=0; ////////////////////
}else{
data_final_number=0;
}
data_final[datanumber++]=tempdata; /////////////////////
tempdata=0;
}
}
}
if( data_final_number!=0)data_final[datanumber++]=tempdata;
EA=0;
SBUF=0X7E;
while(!TI);TI=0;
for(i=0;i<datanumber;i++)
{
SBUF=data_final[i];
while(!TI);TI=0;
}
EA=1;
}
//查询相位时间
bid_phase()
{
unsigned char *p;
unsigned short check_temp;
unsigned int i;
unsigned int j;
unsigned char beginbit=0;
datanumber=0;
data_final_number=0;
answer_data[0]=h_address;
answer_data[1]=l_address;
answer_data[2]=0xcc;
answer_data[3]=0xc1;
answer_data[4]=0xc4;
if(checkdata[5]==0){//应答相位表1
for(i=0;i<289;i++)answer_data[5+i]=XBYTE[0x5000+i];
}else{ //应答相位表2
for(i=0;i<289;i++)answer_data[5+i]=XBYTE[0x5121+i];
}
//应答
p=&answer_data[0];
check_temp=cal_crc(p,294);
// check_temp=(check_temp>>8);
answer_data[294]=(check_temp>>8); //crc
answer_data[295]=check_temp; //crc
answer_data[296]=0x7e;
tempdata=0;
for(i=0;i<297;i++){
for(j=0;j<8;j++){
add_bit=(answer_data[i]>>(7-j))%2;
add_transparences();
tempdata=tempdata+(add_bit<<(7-data_final_number++));
if((add_transparence_valid==1) && (i!=296)){ ///////////////////////////////////
if(data_final_number==8)beginbit=1;
else data_final_number++;
} ///////////////////////////////////
if(data_final_number>=8){ /////////////////////////////////
if(beginbit==1){ ////////////////////
data_final_number=1; ////////////////////////
beginbit=0; ////////////////////
}else{
data_final_number=0;
}
data_final[datanumber++]=tempdata; /////////////////////
tempdata=0;
}
}
}
if( data_final_number!=0)data_final[datanumber++]=tempdata;
EA=0;
SBUF=0X7E;
while(!TI);TI=0;
for(i=0;i<datanumber;i++)
{
SBUF=data_final[i];
while(!TI);TI=0;
}
EA=1;
}
//查询阶段表
bid_stage()
{
unsigned char *p;
unsigned short check_temp;
unsigned int i;
unsigned int j;
unsigned char beginbit=0;
data_final_number=0;
datanumber=0;
//应答
answer_data[0]=h_address;
answer_data[1]=l_address;
answer_data[2]=0xcc;
answer_data[3]=0xc1;
answer_data[4]=0xc5;
j=checkdata[5];
j=(j-1)*98;
for(i=0;i<98;i++){
answer_data[5+i]=XBYTE[0X5242+i+j];
}
p=&answer_data[0];
check_temp=cal_crc(p,103);
answer_data[103]=(check_temp>>8); //crc
answer_data[104]=check_temp; //crc
answer_data[105]=0x7e;
tempdata=0;
for(i=0;i<106;i++){
for(j=0;j<8;j++){
add_bit=(answer_data[i]>>(7-j))%2;
add_transparences();
tempdata=tempdata+(add_bit<<(7-data_final_number++));
if((add_transparence_valid==1) && (i!=105)){ ///////////////////////////////////
if(data_final_number==8)beginbit=1;
else data_final_number++;
} ///////////////////////////////////
if(data_final_number>=8){ /////////////////////////////////
if(beginbit==1){ ////////////////////
data_final_number=1; ////////////////////////
beginbit=0; ////////////////////
}else{
data_final_number=0;
}
data_final[datanumber++]=tempdata; /////////////////////
tempdata=0;
}
}
}
if( data_final_number!=0)data_final[datanumber++]=tempdata;
EA=0;
SBUF=0X7E;
while(!TI);TI=0;
for(i=0;i<datanumber;i++)
{
SBUF=data_final[i];
while(!TI);TI=0;
}
EA=1;
}
//查询当前控制方案信息
bid_consch()
{
unsigned char *p;
unsigned short check_temp;
unsigned int i;
unsigned int j;
unsigned char beginbit=0;
data_final_number=0;
datanumber=0;
answer_data[0]=h_address;
answer_data[1]=l_address;
answer_data[2]=0xcc;
answer_data[3]=0xc1;
answer_data[4]=0xc6;
j=(checkdata[5]-1)*41;
for(i=0;i<41;i++){
answer_data[5+i]=XBYTE[0X5e82+i+j];
}
//应答
p=&answer_data[0];
check_temp=cal_crc(p,46);
answer_data[46]=(check_temp>>8); //crc
answer_data[47]=check_temp; //crc
answer_data[48]=0x7e;
tempdata=0;
for(i=0;i<49;i++){
for(j=0;j<8;j++){
add_bit=(answer_data[i]>>(7-j))%2;
add_transparences();
tempdata=tempdata+(add_bit<<(7-data_final_number++));
if((add_transparence_valid==1) && (i!=48)){ ///////////////////////////////////
if(data_final_number==8)beginbit=1;
else data_final_number++;
} ///////////////////////////////////
if(data_final_number>=8){ /////////////////////////////////
if(beginbit==1){ ////////////////////
data_final_number=1; ////////////////////////
beginbit=0; ////////////////////
}else{
data_final_number=0;
}
data_final[datanumber++]=tempdata; /////////////////////
tempdata=0;
}
}
}
if( data_final_number!=0)data_final[datanumber++]=tempdata;
EA=0;
SBUF=0X7E;
while(!TI);TI=0;
for(i=0;i<datanumber;i++)
{
SBUF=data_final[i];
while(!TI);TI=0;
}
EA=1;
}
//查询日计划
bid_datesch()
{
unsigned char *p;
unsigned short check_temp;
unsigned int i;
unsigned int j;
unsigned char beginbit=0;
data_final_number=0;
datanumber=0;
answer_data[0]=h_address;
answer_data[1]=l_address;
answer_data[2]=0xcc;
answer_data[3]=0xc1;
answer_data[4]=0xc8;
j=checkdata[5];
j=(j-1)*74;
for(i=0;i<74;i++){
answer_data[5+i]=XBYTE[0X63a2+i+j];
}
//应答
p=&answer_data[0];
check_temp=cal_crc(p,79);
answer_data[79]=(check_temp>>8); //crc
answer_data[80]=check_temp; //crc
answer_data[81]=0x7e;
tempdata=0;
for(i=0;i<82;i++){
for(j=0;j<8;j++){
add_bit=(answer_data[i]>>(7-j))%2;
add_transparences();
tempdata=tempdata+(add_bit<<(7-data_final_number++));
if((add_transparence_valid==1) && (i!=81)){ ///////////////////////////////////
if(data_final_number==8)beginbit=1;
else data_final_number++;
} ///////////////////////////////////
if(data_final_number>=8){ /////////////////////////////////
if(beginbit==1){ ////////////////////
data_final_number=1; ////////////////////////
beginbit=0; ////////////////////
}else{
data_final_number=0;
}
data_final[datanumber++]=tempdata; /////////////////////
tempdata=0;
}
}
}
if( data_final_number!=0)data_final[datanumber++]=tempdata;
EA=0;
SBUF=0X7E;
while(!TI);TI=0;
for(i=0;i<datanumber;i++)
{
SBUF=data_final[i];
while(!TI);TI=0;
}
EA=1;
}
//查询日计划调度表
bid_datadis()
{
unsigned char *p;
unsigned short check_temp;
unsigned int i;
unsigned int j;
unsigned char beginbit=0;
data_final_number=0;
datanumber=0;
answer_data[0]=h_address;
answer_data[1]=l_address;
answer_data[2]=0xcc;
answer_data[3]=0xc1;
answer_data[4]=0xc9;
for(i=0;i<60;i++){
answer_data[5+i]=XBYTE[0X6Ce2+i];
}
//应答
p=&answer_data[0];
check_temp=cal_crc(p,65);
answer_data[65]=(check_temp>>8); //crc
answer_data[66]=check_temp; //crc
answer_data[67]=0x7e;
tempdata=0;
for(i=0;i<68;i++){
for(j=0;j<8;j++){
add_bit=(answer_data[i]>>(7-j))%2;
add_transparences();
tempdata=tempdata+(add_bit<<(7-data_final_number++));
if((add_transparence_valid==1) && (i!=67)){ ///////////////////////////////////
if(data_final_number==8)beginbit=1;
else data_final_number++;
} ///////////////////////////////////
if(data_final_number>=8){ /////////////////////////////////
if(beginbit==1){ ////////////////////
data_final_number=1; ////////////////////////
beginbit=0; ////////////////////
}else{
data_final_number=0;
}
data_final[datanumber++]=tempdata; /////////////////////
tempdata=0;
}
}
}
if( data_final_number!=0)data_final[datanumber++]=tempdata;
EA=0;
SBUF=0X7E;
while(!TI);TI=0;
for(i=0;i<datanumber;i++)
{
SBUF=data_final[i];
while(!TI);TI=0;
}
EA=1;
} //查询遥控设置
bid_remote()
{
unsigned char *p;
unsigned short check_temp;
unsigned int i;
unsigned int j;
unsigned char beginbit=0;
data_final_number=0;
datanumber=0;
answer_data[0]=h_address;
answer_data[1]=l_address;
answer_data[2]=0xcc;
answer_data[3]=0xc1;
answer_data[4]=0xcf; //应答遥控设置
for(i=0;i<8;i++){
answer_data[5+i]=XBYTE[0X6d20+i];
}
//应答
p=&answer_data[0];
check_temp=cal_crc(p,13);
answer_data[13]=(check_temp>>8); //crc
answer_data[14]=check_temp; //crc
answer_data[15]=0x7e;
tempdata=0;
for(i=0;i<16;i++){
for(j=0;j<8;j++){
add_bit=(answer_data[i]>>(7-j))%2;
add_transparences();
tempdata=tempdata+(add_bit<<(7-data_final_number++));
if((add_transparence_valid==1) && (i!=15)){ ///////////////////////////////////
if(data_final_number==8)beginbit=1;
else data_final_number++;
} ///////////////////////////////////
if(data_final_number>=8){ /////////////////////////////////
if(beginbit==1){ ////////////////////
data_final_number=1; ////////////////////////
beginbit=0; ////////////////////
}else{
data_final_number=0;
}
data_final[datanumber++]=tempdata; /////////////////////
tempdata=0;
}
}
}
if( data_final_number!=0)data_final[datanumber++]=tempdata;
EA=0;
SBUF=0X7E;
while(!TI);TI=0;
for(i=0;i<datanumber;i++)
{
SBUF=data_final[i];
while(!TI);TI=0;
}
EA=1;
}
//查询当前控制方案信息
bid_nowsch()
{
}
//查询当前状态
bid_nowstae()
{
}
//查询统计周期
bid_caperiod()
{
}
//查询统计周期
bid_inform()
{
}
com_receive_deal()
{
tempdata=0;
switch(receive_flag){ //设置
WatchDog = !WatchDog;
case 0x93:set_time(); break; //设置时间
case 0x94:set_phase(); break; //设置相位
case 0x95:set_stage(); break; //设置阶段表
case 0x96:set_project(); break; //设置控制方案
case 0x97:set_uppc(); break; //上位机直接控制
case 0x98:set_datesch(); break; //设置日计划
case 0x99:set_datadis(); break; //设置日计划调度表
case 0x9a:set_nowsch(); break; //设置当前控制方案
case 0x9c:set_caperiod(); break; //设置统计周期
case 0x9f:switch(second_flag){ //新中新增补协议设置区
case 0x02: break;
case 0x0d: set_remote(); break;
default:break;
}
break; //遥控设置 0D
//查询
case 0x81:bid_flag(); break; //查询信号机标识
case 0x82:bid_mark(); break; //查询信号机特征参数
case 0x83:bid_time(); break; //查询信号机时间
case 0x84:bid_phase(); break; //查询相位配置
case 0x85:bid_stage(); break; //查询阶段表
case 0x86:bid_consch(); break; //查询控制方案
case 0x88:bid_datesch(); break; //查询日计划
case 0x89:bid_datadis(); break; //查询日计划调度表信息
case 0x8a:bid_nowsch(); break; //查询当前控制方案信息
case 0x8b:bid_nowstae(); break; //查询信号机当前状态
case 0x8c:bid_caperiod();break; //查询统计周期
case 0x8d:bid_inform(); break; //查询统计数据
// case 0x8f:bid_remote(); break; //查询遥控状态//此处增加 0D
case 0x8f:switch(second_flag){ //新中新增补协议查询区
case 0x02: break;
case 0x0d: bid_remote(); break;
default:break;
}
break; //查询遥控状态//此处增加 0D
default:break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -