www.pudn.com > DDS485.rar > addparse.c
#include#include #include //------------------------------ *** - 命令解析 - *** ------------------------------// 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; } }