📄 protocol.c
字号:
Trs_Buf[7]=0;
Trs_Buf[8]=Trs_Comm;
Trs_Buf[9]=Station;
Trs_Buf[10]=0;
Trs_Buf[11]=Trs_Comm_Bak;
Trs_Check=0;
for(i=8;i<12;i++)
{
Trs_Check+=Trs_Buf[i];
}
Trs_Buf[12]=Trs_Check;
Trs_Wp=13;
break;
case (0xc4):
eb90();
//Trs_Length=5;
//Trs_Buf[6]=Trs_Length;
Trs_Buf[7]=0;
Trs_Buf[8]=Trs_Comm;
Trs_Buf[9]=Station;
Trs_Buf[10]=0;
Trs_Buf[11]=House_R;
if(Start&0x80)
{
Trs_Length=12;
Trs_Buf[6]=Trs_Length;
Trs_Buf[12]=0x81;
Trs_Buf[13]=Read1B(159+House_R*2+0x100);
Trs_Buf[14]=Read1B(158+House_R*2+0x100);
Trs_Buf[15]=Read1B(79+House_R*2+0x100);
Trs_Buf[16]=Read1B(78+House_R*2+0x100);
Trs_Buf[17]=Read1B(House_R*2-1+0x100);
Trs_Buf[18]=Read1B(House_R*2-2+0x100);
Trs_Check=0;
for(i=8;i<19;i++)
{
Trs_Check+=Trs_Buf[i];
}
Trs_Buf[19]=Trs_Check;
Trs_Wp=20;
}
else
{
Trs_Length=6;
Trs_Buf[6]=Trs_Length;
Trs_Buf[12]=0x80 ;
for(i=8;i<13;i++)
{
Trs_Check+=Trs_Buf[i];
}
Trs_Buf[13]=Trs_Check;
Trs_Wp=14;
}
//Trs_Check=0;
//for(i=8;i<18;i++)
// {
// Trs_Check+=Trs_Buf[i];
// }
//Trs_Buf[18]=Trs_Check;
//Trs_Wp=19;
break;
case (0xc5):
eb90();
Trs_Length=5;
Trs_Buf[6]=Trs_Length;
Trs_Buf[7]=0;
Trs_Buf[8]=Trs_Comm_Bak;
Trs_Buf[9]=Station;
Trs_Buf[10]=0;
Trs_Buf[11]=House_R;
Trs_Check=0;
for(i=8;i<12;i++)
{
Trs_Check+=Trs_Buf[i];
}
Trs_Buf[12]=Trs_Check;
Trs_Wp=13;
case (0xe0):
eb90();
Trs_Length=6;
Trs_Buf[6]=Trs_Length;
Trs_Buf[7]=0;
Trs_Buf[8]=Trs_Comm;
Trs_Buf[9]=Station;
Trs_Buf[10]=0;
Trs_Buf[11]=House_R;
Trs_Buf[12]=Read1B(200+(House_R-1)+0x100);
Trs_Check=0;
for(i=8;i<13;i++)
{
Trs_Check+=Trs_Buf[i];
}
Trs_Buf[13]=Trs_Check;
Trs_Wp=14;
default:
break;
}
DIR485=0;
if(Trs_Buf[0]==0xeb && Trs_Buf[1]==0x90)
{
SBUF=0xfe;
Trs_Rp=0;
}
else
{
SBUF=Trs_Buf[0];
Trs_Rp=1;
}
}
void Rcv_Pro(void)
{
BYTE i;//,YkNo,YkHf;
BYTE Rcv_Check,Rcv_Length,Rcv_Tmp,Tmp;
if((Rcv_Wp-Rcv_Rp)>(Rcv_Buf[Rcv_Rp+4]+5) && Rcv_Wp>11)
{
Rcv_Flag=0;
Rcv_Wp=0;
Rcv_Length=Rcv_Buf[Rcv_Rp+4];
Rcv_Check=0;
for(i=Rcv_Rp+6;i<Rcv_Rp+Rcv_Length+5;i++)
{
Rcv_Check+=Rcv_Buf[i];
}
Rcv_Comm=0;
if(Rcv_Check==Rcv_Buf[Rcv_Rp+5+Rcv_Length])
{
Rcv_Comm=Rcv_Buf[Rcv_Rp+6];
}
switch (Rcv_Comm)
{
case (0x20):
if(Rcv_Buf[Rcv_Rp+7]==Station
||(Rcv_Buf[Rcv_Rp+7]==0xff&&Rcv_Buf[Rcv_Rp+8]==0xff)&&(!Key))
{
Trs_Comm=0xaa;
Trs_Comm_Bak=0xa0;
Trs_Flag=1;
}
break;
case (0x21):
if(!Key)
{
Station=Rcv_Buf[Rcv_Rp+7];
Write1B(Station,164);
Trs_Comm=0xaa;
Trs_Comm_Bak=0xa1;
Trs_Flag=1;
}
break;
case (0x24):
if(Rcv_Buf[Rcv_Rp+7]==Station
||(Rcv_Buf[Rcv_Rp+7]==0xff&&Rcv_Buf[Rcv_Rp+8]==0xff))
{
Start=Rcv_Buf[Rcv_Rp+9];
if((Start&0x80)==0x80)
Write1B(0x80,255);
else
Write1B(0x00,255);
Flash=0;
for(i=0;i<5;i++)
{
Short_New[i]=0;
Break_New[i]=0;
}
Alarm_Check=1;
}
if(Rcv_Buf[Rcv_Rp+7]==Station)
{
Trs_Comm=0xaa;
Trs_Comm_Bak=0xa4;
Trs_Flag=1;
}
break;
case (0x30):
if(Rcv_Buf[Rcv_Rp+7]==Station)
{
Trs_Comm=0xb0;
House_R=Rcv_Buf[Rcv_Rp+9];
Trs_Flag=1;
}
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);
Short_Bak=Read1B(170+(House_R-1)/8);
Break_Bak=Read1B(175+(House_R-1)/8);
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);
Write1B(Short_Bak,170+(House_R-1)/8);
Write1B(Break_Bak,175+(House_R-1)/8);
//Type
Rcv_Tmp=Rcv_Buf[Rcv_Rp+10]&0x0f;
i=Read1B((House_R-1)+200);
i&=0xf0;
Rcv_Tmp|=i;
Write1B(Rcv_Tmp,(House_R-1)+200);
}
if(Rcv_Buf[Rcv_Rp+11]!=0xff)
{
Write1B(Rcv_Buf[Rcv_Rp+11],(House_R-1)*3+0x100);
}
if(Rcv_Buf[Rcv_Rp+12]!=0xff)
{
Write1B(Rcv_Buf[Rcv_Rp+12],(House_R-1)*3+1+0x100);
}
if(Rcv_Buf[Rcv_Rp+13]!=0xff)
{
Write1B(Rcv_Buf[Rcv_Rp+13],(House_R-1)*3+2+0x100);
}
//Point
if(Rcv_Buf[Rcv_Rp+16]!=0xff)
{
Rcv_Tmp=Rcv_Buf[Rcv_Rp+16];
Rcv_Tmp<<=4;
i=Read1B((House_R-1)+200);
i&=0x0f;
Rcv_Tmp|=i;
Write1B(Rcv_Tmp,(House_R-1)+200);
}
//CONST
if(Rcv_Buf[Rcv_Rp+14]!=0xff)
{
Rcv_Tmp=Rcv_Buf[Rcv_Rp+14];
Rcv_Tmp<<=4;
i=Read1B((House_R-1)+120+0x100);
i&=0x0f;
Rcv_Tmp|=i;
Write1B(Rcv_Tmp,(House_R-1)+120+0x100);
}
//RANGE
if(Rcv_Buf[Rcv_Rp+15]!=0xff)
{
Rcv_Tmp=Rcv_Buf[Rcv_Rp+15]&0x0f;
i=Read1B((House_R-1)+120+0x100);
i&=0xf0;
Rcv_Tmp|=i;
Write1B(Rcv_Tmp,(House_R-1)+120+0x100);
}
Rcv_Tmp=Rcv_Buf[Rcv_Rp+17];
if(Rcv_Tmp!=0xff)
{
Short_En=Read1B(240+(House_R-1)/8);
Short_Bak=Read1B(170+(House_R-1)/8);
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);
Write1B(Short_Bak,170+(House_R-1)/8);
Break_En=Read1B(245+(House_R-1)/8);
Break_Bak=Read1B(175+(House_R-1)/8);
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);
Write1B(Break_Bak,175+(House_R-1)/8);
Power_En=Read1B(160+(House_R-1)/8+0x100);
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+0x100);
}
}
else //0xff
{
if(Rcv_Buf[Rcv_Rp+10]!=0xff)
{
if (Rcv_Buf[Rcv_Rp+10]&0x80) //Hdd_En
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -