📄 addparse.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 + -