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

📄 addparse.c

📁 讲述ADE7755芯片的基本知识和一些基本应用包含C语言编程
💻 C
字号:
#include <REG932.H>
#include <Define.h>
#include <Stdio.h>

//------------------------------ *** - 命令解析 - *** ------------------------------//
void AvailabilityAddParse(void)
{
    unsigned char i;
    NullityFg=0; 
    switch(InceptBuf[8])
    {
         case 0x01 :
                    DataSaveSt=0;
                    switch(InceptBuf[11])
                    {
                         case 0x90:
                                    switch(InceptBuf[10])
                                    {
                                        case 0x10:  //读当前有功总电量 --- 指令通过 68 00 00 00 00 00 00 68 01 02 43 C3 D9 16                                                 
                                                    //HwTxd=0;
                                                    CmdPick(0,0,ShowDataBuf,4);
                                                    DataSend();                                                    
                                        break;
                                        case 0x1F:  //读当前有功总电量 --- 指令通过 68 00 00 00 00 00 00 68 01 02 43 C3 D9 16                                                 
                                                    //HwTxd=0;
                                                    CmdPick(0,0,ShowDataBuf,4);
                                                    DataSend();                                                    
                                        break;
                                        default:
                                                    NullityFg=1;
                                                    DataSend();               
                                        break;
                                    }
                         case 0xC0:
                                    switch(InceptBuf[10])
                                    {     
                                        case 0x30:  //读电表脉冲常数 --- 指令通过
                                                    //68 00 00 00 00 00 00 68 01 02 63 c3 29 16
                                                    CmdPick(0xa0,0x05,0,3);
                                                    DataSend();
                                        break;  
                                        case 0x32:  //读电表地址
                                                    //68 AA AA AA AA AA AA 68 01 02 65 c3 27 16 --- 指令通过
                                                    CmdPick(0,0,MeterAdd,6);
                                                    //CmdPick(0xa0,0x10,0,6);
                                                    DataSend();                                                 
                                        break;
                                        default:
                                                    NullityFg=1;
                                                    DataSend();
                                        break;
                                    }
                         break;
                         default:
                                 NullityFg=1;
                                 DataSend();                 
                         break;
                         
                    }
         break;
         case 0x04: 
                    if(cmdwr)     
                    { 
                         DataSaveSt=1;
                         switch(InceptBuf[11])
                         {
                              case  0xc0: 
                                          switch(InceptBuf[10])
                                          {
                                                case  0x32: ////更改表通讯地址  --- 指令通过
                                                            //68 00 00 00 00 00 00 68 04 0C 65 F3 34 89 67 45 34 33 33 33 33 33 D4 16
                                                            //IicMByteWrite(0xa0,0x10,&InceptBuf[16],6);
                                                            RamCopy(MeterAdd,&InceptBuf[16],6);
                                                            CmdSave(0xa0,0x10,16,6);
                                                            //IicMByteRead(0xa0,0x10,MeterAdd,6);
                                                break;
                                                default:
                                                            NullityFg=1;
                                                            DataSend();
                                                break;
                                                
                                          }
                              break;
                              case  0xc1: 
                                          switch(InceptBuf[10])
                                          {
                                                case  0x19: //底数设置
                                                            //68 00 00 00 00 00 00 68 04 0A 4C F4 34 89 67 45 33 33 33 33 53 16          
                                                            CmdSave(0xa0,0x00,16,4);
                                                            //RamCopy(iicEData,&InceptBuf[16],4);
                                                            //IicMByteWrite(0xa0,0x00,&InceptBuf[16],4);
                                                            for(i=0;i<4;i++)
                                                            {
                                                                iicEData[i]=rbyteiic(0xa0,i);
                                                                EData[i]=BcdToHex(iicEData[i]);
                                                            }
                                                            inpulse=0;
                                                            LedFull();
                                                break; 
                                                case  0x11: //初始化
                                                            //68 00 00 00 00 00 00 68 04 06 44 F4 34 89 67 45 7B 16 
                                                            for(i=0;i<5;i++)
                                                            {
                                                                 wbyteiic(0xa0,i,0x00);
                                                            }
                                                             for(i=10;i<16;i++)
                                                             {
                                                                 wbyteiic(0xa0,i,0x00);
                                                             }
                                                             wbyteiic(0xa0,0x20,0x56);
                                                             wbyteiic(0xa0,0x21,0x34);
                                                             wbyteiic(0xa0,0x22,0x12);
                                                             wbyteiic(0xa0,0x05,0x16);
                                                             wbyteiic(0xa0,0x06,0x00);
                                                             InceptBuf[9]=0x02;
                                                             DataSend();
                                                             LedFull();
                                                break;
                                                default:
                                                            NullityFg=1;
                                                            DataSend();            
                                                break;              
                                          }
                              break;
                              default:
                                      NullityFg=1;
                                      DataSend();
                              break;
                         } 
                    } 
                    else
                    {
                        NullityFg=1;
                        InceptBuf[9]=0x01;
                        InceptBuf[10]=0x00;
                        InceptBuf[10]=InceptBuf[10]|0x01;
                        DataSend();
                    }
         break;
         case 0x0f:  
                   if(cmdwr)   
                   {   
                         DataSaveSt=1;
                         AdBit=1;
                         //修改编程密码  --- 指令通过
      				  	 //68 01 00 00 00 00 00 68 0F 08 34 89 67 45 34 89 67 45 BA 16
                         if(InceptBuf[14]==0x01|InceptBuf[14]==0x00)
      					 {
      				  	  	  Answer=1;
      				  	  	  CmdSave(0xa0,0x20,15,3);
      				  	  	  Answer=0;
      					 }
      		             else
                         {
                                  NullityFg=1;
                                  DataSend();
                         }
                   }
                   else
                   {
                        NullityFg=1;
                        InceptBuf[9]=0x01;
                        InceptBuf[10]=0x00;
                        InceptBuf[10]=InceptBuf[10]|0x01;
                        DataSend();
                   }
         break;
         default:
                     NullityFg=1;
                     DataSend();
         break;

    } 

}
void BroadcastAddParse(void)
{   
    AdBit=1;
    switch(InceptBuf[8])
    {
        case 0x01: //广播读地址  --- 指令通过
                   //68 99 99 99 99 99 99 68 01 02 65 F3 C1 16
                   if(InceptBuf[10]==0x32)
                   {
                        if(InceptBuf[11]==0xc0)
                        {
                            CmdPick(0,0,MeterAdd,6);
                        }
                   }
                  DataSend();
        break;
        default:
                     NullityFg=1;
                     DataSend();
        break;
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -