⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 protocol.c

📁 实用的空调计费系统
💻 C
📖 第 1 页 / 共 3 页
字号:
                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 + -