📄 protocol.c
字号:
break;
case (0x31):
if(Rcv_Buf[Rcv_Rp+7]==Station)
{
House_R=Rcv_Buf[Rcv_Rp+9];
Alarm_Check=1;
if(House_R!=0xff)
{
if(Rcv_Buf[Rcv_Rp+10]!=0xff)
{
Hdd_En=Read1B(250+(House_R-1)/8,0);
Short_Bak=Read1B(170+(House_R-1)/8,0);
Break_Bak=Read1B(175+(House_R-1)/8,0);
if (Rcv_Buf[Rcv_Rp+10]&0x80)
{
Hdd_En|=(1<<((House_R-1)%8));
}
else
{
Hdd_En&=~(1<<((House_R-1)%8));
Short_Bak&=~(1<<((House_R-1)%8));
Break_Bak&=~(1<<((House_R-1)%8));
Short_New[(House_R-1)/8]=0;
Break_New[(House_R-1)/8]=0;
}
Write1B(Hdd_En,250+(House_R-1)/8,0);
Write1B(Short_Bak,170+(House_R-1)/8,0);
Write1B(Break_Bak,175+(House_R-1)/8,0);
//Type
Rcv_Tmp=Rcv_Buf[Rcv_Rp+10]&0x0f;
i=Read1B((House_R-1)+200,0);
i&=0xf0;
Rcv_Tmp|=i;
Write1B(Rcv_Tmp,(House_R-1)+200,0);
}
if(Rcv_Buf[Rcv_Rp+11]!=0xff)
{
Write1B(Rcv_Buf[Rcv_Rp+11],(House_R-1)*3,1);
}
if(Rcv_Buf[Rcv_Rp+12]!=0xff)
{
Write1B(Rcv_Buf[Rcv_Rp+12],(House_R-1)*3+1,1);
}
if(Rcv_Buf[Rcv_Rp+13]!=0xff)
{
Write1B(Rcv_Buf[Rcv_Rp+13],(House_R-1)*3+2,1);
}
//Point
if(Rcv_Buf[Rcv_Rp+16]!=0xff)
{
Rcv_Tmp=Rcv_Buf[Rcv_Rp+16];
Rcv_Tmp<<=4;
i=Read1B((House_R-1)+200,0);
i&=0x0f;
Rcv_Tmp|=i;
Write1B(Rcv_Tmp,(House_R-1)+200,0);
}
//CONST
if(Rcv_Buf[Rcv_Rp+14]!=0xff)
{
Rcv_Tmp=Rcv_Buf[Rcv_Rp+14];
Rcv_Tmp<<=4;
i=Read1B((House_R-1)+120,1);
i&=0x0f;
Rcv_Tmp|=i;
Write1B(Rcv_Tmp,(House_R-1)+120,1);
}
//RANGE
if(Rcv_Buf[Rcv_Rp+15]!=0xff)
{
Rcv_Tmp=Rcv_Buf[Rcv_Rp+15]&0x0f;
i=Read1B((House_R-1)+120,1);
i&=0xf0;
Rcv_Tmp|=i;
Write1B(Rcv_Tmp,(House_R-1)+120,1);
}
Rcv_Tmp=Rcv_Buf[Rcv_Rp+17];
if(Rcv_Tmp!=0xff)
{
Short_En=Read1B(240+(House_R-1)/8,0);
Short_Bak=Read1B(170+(House_R-1)/8,0);
if (Rcv_Tmp&0x04)
{
Short_En|=(1<<((House_R-1)%8));
}
else
{
Short_En&=~(1<<((House_R-1)%8));
Short_Bak&=~(1<<((House_R-1)%8));
Short_New[(House_R-1)/8]=0;
}
Write1B(Short_En,240+(House_R-1)/8,0);
Write1B(Short_Bak,170+(House_R-1)/8,0);
Break_En=Read1B(245+(House_R-1)/8,0);
Break_Bak=Read1B(175+(House_R-1)/8,0);
if (Rcv_Tmp&0x10)
{
Break_En|=(1<<((House_R-1)%8));
}
else
{
Break_En&=~(1<<((House_R-1)%8));
Break_Bak&=~(1<<((House_R-1)%8));
Break_New[(House_R-1)/8]=0;
}
Write1B(Break_En,245+(House_R-1)/8,0);
Write1B(Break_Bak,175+(House_R-1)/8,0);
Power_En=Read1B(160+(House_R-1)/8,1);
if (Rcv_Tmp&0x40)
{
Power_En|=(1<<((House_R-1)%8));
}
else Power_En&=~(1<<((House_R-1)%8));
Write1B(Power_En,160+(House_R-1)/8,1);
}
}
else //0xff
{
if(Rcv_Buf[Rcv_Rp+10]!=0xff)
{
if (Rcv_Buf[Rcv_Rp+10]&0x80) //Hdd_En
{
for(i=0;i<5;i++)
{
Write1B(0xff,250+i,0);
}
}
else
{
for(i=0;i<5;i++)
{
Write1B(0x0,250+i,0);
}
}
//Type
Rcv_Tmp=Rcv_Buf[Rcv_Rp+10]&0x0f;
for(i=0;i<40;i++)
{
Tmp=Read1B(200+i,0);
Tmp&=0xf0;
Rcv_Tmp|=Tmp;
Write1B(Rcv_Tmp,200+i,0);
}
}
if(Rcv_Buf[Rcv_Rp+16]!=0xff) //Point
{
Rcv_Tmp=Rcv_Buf[Rcv_Rp+16];
Rcv_Tmp<<=4;
for(i=0;i<40;i++)
{
Tmp=Read1B(200+i,0);
Tmp&=0x0f;
Rcv_Tmp|=Tmp;
Write1B(Rcv_Tmp,200+i,0);
}
}
//CONST
if(Rcv_Buf[Rcv_Rp+14]!=0xff)
{
Rcv_Tmp=Rcv_Buf[Rcv_Rp+14];
Rcv_Tmp<<=4;
for(i=0;i<40;i++)
{
Tmp=Read1B(120+i,1);
Tmp&=0x0f;
Rcv_Tmp|=Tmp;
Write1B(Rcv_Tmp,120+i,1);
}
}
//RANGE
if(Rcv_Buf[Rcv_Rp+15]!=0xff)
{
Rcv_Tmp=Rcv_Buf[Rcv_Rp+15]&0x0f;
for(i=0;i<40;i++)
{
Tmp=Read1B(120+i,1);
Tmp&=0xf0;
Rcv_Tmp|=Tmp;
Write1B(Rcv_Tmp,120+Tmp,1);
}
}
Rcv_Tmp=Rcv_Buf[Rcv_Rp+17];
if(Rcv_Tmp!=0xff)
{
//Short_En
for(i=0;i<5;i++)
{
if (Rcv_Tmp&0x04)
{
Short_En=0xff;
}
else Short_En=0;
Write1B(Short_En,240+i,0);
}
//Break_En
for(i=0;i<5;i++)
{
if (Rcv_Tmp&0x10)
{
Break_En=0xff;
}
else Break_En=0;
Write1B(Break_En,245+i,0);
}
//Power_En
for(i=0;i<5;i++)
{
if (Rcv_Tmp&0x40)
{
Power_En=0xff;
}
else Power_En=0;
Write1B(Power_En,160+i,1);
}
}
}
Trs_Comm=0xbb;
Trs_Comm_Bak=0xb1;
Trs_Flag=1;
HddEn_Count=1;
/* HddEn_Sum=0;
for (i=0;i<5;i++)
{
Hdd_En=Read1B(250+i,0);
for(j=0;j<8;j++)
{
if((Hdd_En&(1<<j))!=0)
{
HddEn_Sum++;
House_Max=i*8+j+1;
}
}
} */
}
break;
case (0x32):
if(Rcv_Buf[Rcv_Rp+7]==Station)
{
Trs_Comm=0xb2;
House_R=Rcv_Buf[Rcv_Rp+9];
Trs_Flag=1;
B3=0;
}
break;
case (0x33):
if(Rcv_Buf[Rcv_Rp+7]==Station)
{
House_R=Rcv_Buf[Rcv_Rp+9];
Hdd_Str.Hdd_B[3]=Rcv_Buf[Rcv_Rp+10];
Hdd_Str.Hdd_B[2]=Rcv_Buf[Rcv_Rp+11];
Hdd_Str.Hdd_B[1]=Rcv_Buf[Rcv_Rp+12];
Hdd_Str.Hdd_B[0]=Rcv_Buf[Rcv_Rp+13];
if(House_R==0xff)
{
for(i=0;i<40;i++)
{
Write_Hdd(i);
}
}
else
{
Write_Hdd(House_R-1);
}
Trs_Comm=0xbb;
Trs_Comm_Bak=0xb3;
Trs_Flag=1;
}
break;
case (0x34):
if(Rcv_Buf[Rcv_Rp+7]==Station)
{
House_R=Rcv_Buf[Rcv_Rp+9];
Alarm_Select=Rcv_Buf[Rcv_Rp+10];
Trs_Comm=0xb4;
Trs_Flag=1;
}
break;
case (0x35): //Clear Alarm
if(Rcv_Buf[Rcv_Rp+7]==Station)
{
Trs_Comm=0xbb;
Trs_Comm_Bak=0xb5;
Trs_Flag=1;
}
if(Rcv_Buf[Rcv_Rp+7]==Station
||(Rcv_Buf[Rcv_Rp+7]==0xff&&Rcv_Buf[Rcv_Rp+8]==0xff))
{
House_R=Rcv_Buf[Rcv_Rp+9];
Alarm_Check=1;
if(House_R!=0xff)
{
if (Rcv_Buf[Rcv_Rp+10]&0x04) //Short
{
i=Read1B(170+(House_R-1)/8,0);
i&=~(1<<((House_R-1)%8));
Write1B(i,170+(House_R-1)/8,0);
Short_New[(House_R-1)/8]=i;
}
if (Rcv_Buf[Rcv_Rp+10]&0x10) //Break
{
i=Read1B(175+(House_R-1)/8,0);
i&=~(1<<((House_R-1)%8));
Write1B(i,175+(House_R-1)/8,0);
Break_New[(House_R-1)/8]=i;
}
}
else
{
if (Rcv_Buf[Rcv_Rp+10]&0x04)
{
for(i=0;i<5;i++)
{
Write1B(0,170+i,0);
}
}
if (Rcv_Buf[Rcv_Rp+10]&0x10)
{
for(i=0;i<5;i++)
{
Write1B(0,175+i,0);
}
}
}
}
break;
/* case (0x37): //Yk TongDuan
if(Rcv_Buf[Rcv_Rp+7]==Relay_Station
||(Rcv_Buf[Rcv_Rp+7]==0xff&&Rcv_Buf[Rcv_Rp+8]==0xff))
{
House_R=Rcv_Buf[Rcv_Rp+9];
RelayOffTimes[House_R-1]=0;
}
break;
*/
case (0x60):
if(Rcv_Buf[Rcv_Rp+7]==Station)
{
Trs_Comm=0xe0;
House_R=Rcv_Buf[Rcv_Rp+9];
Trs_Flag=1;
}
break;
case (0x61):
if(Rcv_Buf[Rcv_Rp+7]==Station)
{
House_R=Rcv_Buf[Rcv_Rp+9];
Tmp=Rcv_Buf[Rcv_Rp+10];
if(House_R==0xff)
{
for(i=0;i<40;i++)
{
Write1B(Tmp,200+i,1);
}
}
else
{
Write1B(Tmp,200+House_R-1,1);
}
Trs_Comm=0xbb;
Trs_Comm_Bak=0xe1;
Trs_Flag=1;
}
break;
default:
break;
}
/* if(Rcv_Comm==0x37 || Rcv_Comm==0x53 || Rcv_Comm==0x58)
{
if(Rcv_Buf[Rcv_Rp+7]==Station
||(Rcv_Buf[Rcv_Rp+7]==0xff&&Rcv_Buf[Rcv_Rp+8]==0xff))
{
DIR2=0;
long_delay();
PSendChar(0xeb);
PSendChar(0x90);
for(i=0;i<Rcv_Rp+5+Rcv_Length+1;i++)
{
PSendChar(Rcv_Buf[Rcv_Rp+i]);
}
DIR2=1;
}
} */
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -