📄 hualong.h
字号:
l=0;
if((*fp1)>9)
l=0;
}
//add2004-5-18
if(l==1)
{
num=12;
for(l1=0;l1<12;l1++)
{
fp1=rbuffer+6+3*l1;
fp2=&a[3*l1];
*fp2=(*(fp1+1));// minute
*(fp2+1)=(*(fp1+2));// hour
*(fp2+2)=(*fp1);//price
}
if(0==set_price_ok(num,&a[0]))
l=0;
}
if(l==1)
{
set_before(type_biao);
for(l1=0;l1<12;l1++)
{
fp1=rbuffer+6+3*l1;
fp2=&RAM[addr+3*l1];
*fp2=(*(fp1+1));// minute
*(fp2+1)=(*(fp1+2));// hour
*(fp2+2)=(*fp1);//price
}
copy_ram_to_fm_fm1(addr,36,addr);
set_end(type_biao,0);
onetime_biancheng(0,1,code);
shiduan_onetimeprog=1;
recoder_shiduan_yonghuhao_biaohao_addr(recorde_shiduan);
hualong_send_ack();
}
else
hualong_send_noack();
}
}
void hualong_write_fuhe()
{unsigned char l,l1;
unsigned char num,a[36];
unsigned char *fp1,*fp2;
if((*(rbuffer+5))==36)
{
l=1;
for(l1=0;l1<12;l1++)
{
if(2!=testbcd(*(rbuffer+7+3*l1))+testbcd(*(rbuffer+8+3*l1)))
l=0;// day month
if((*(rbuffer+6+3*l1))>5) // shi tao hao
l=0;
}
//add2004-5-18
if(l==1)
{//num=0;
num=12;
for(l1=0;l1<12;l1++)
{
fp1=&a[3*l1];
fp2=rbuffer+6+3*l1;
*fp1=(*(fp2+1));// day
*(fp1+1)=(*(fp2+2));// month
*(fp1+2)=(*(fp2));//num tao
}
if(0==set_fuhe_ok(num,&a[0]))
l=0;
}
if(l==1)
{
set_before(TYPE_EP1_SEASONPROGRAM_RECORD);
for(l1=0;l1<12;l1++)
{
fp1=&RAM[R_ONUS_1+3*l1];
fp2=rbuffer+6+3*l1;
*fp1=(*(fp2+1));// day
*(fp1+1)=(*(fp2+2));// month
*(fp1+2)=(*(fp2));// num tao
}
copy_ram_to_fm_fm1(R_ONUS_1,36,FM_ONUS_1);
set_end(TYPE_EP1_SEASONPROGRAM_RECORD,0);
onetime_biancheng(0,1,0x96);
shiduan_onetimeprog=1;
recoder_shiduan_yonghuhao_biaohao_addr(recorde_shiduan);
hualong_send_ack();
}
else
hualong_send_noack();
}
}
const unsigned int table_hualong_write_fuhejilu_use[]=
{
R_RECORD_INTERVAL_1,
R_RECORD_INTERVAL_2,
R_RECORD_INTERVAL_3,
R_RECORD_INTERVAL_4,
R_RECORD_INTERVAL_5,
R_RECORD_INTERVAL_6
};
const unsigned char table_hualong_write_fuhejilu_code[]={0x16,0x17,0x18,0x19,0x20,0x21};
void hualong_write_fuhejilujiange()
{unsigned char l,code;
unsigned int addr;
l=1;
code=*(rbuffer+3)-0x56;
if(1!=testbcd(*(rbuffer+6)))
l=0;
if(1!=(*(rbuffer+5)))
l=0;
if(l==1)
{
addr=table_hualong_write_fuhejilu_use[code];
RAM[addr]=*(rbuffer+6);
RAM[addr+1]=0;
copy_ram_to_fm_fm1(addr,2,addr);
onetime_biancheng(1,2,table_hualong_write_fuhejilu_code[code]);
hualong_send_ack();
}
else
hualong_send_noack();
}
void hualong_write_20_use(set_type,addr,num)
unsigned char set_type,num;
unsigned int addr;
{unsigned char l;
if((num!=0)&&(*(rbuffer+5)==num))
{
set_before(set_type);
for(l=0;l<num;l++)
RAM[addr+l]=*(rbuffer+6+l);
copy_ram_to_fm_fm1(addr,num,addr);
if(set_type!=TYPE_FM_CHAOBIAORIPROGRAM_RECORD)
set_end(set_type,0);
else
set_end(set_type,1);// chao biao ri wu
hualong_send_ack();
}
}
void hualong_write_20()
{unsigned char l;
switch(*(rbuffer+3))
{
case 0x2: // chao biao ri
if((2==testbcdnum(rbuffer+6,2))&&((*(rbuffer+7))<0x29))
{
hualong_write_20_use(TYPE_FM_CHAOBIAORIPROGRAM_RECORD,R_CHAOBIAORI,2);
onetime_biancheng(1,1,0x32);
}
else
hualong_send_noack();
break;
case 0x3:
// hua cha
if((1==thevalueisbcd1to60(*(rbuffer+6)))&&(*(rbuffer+5)==1))//add
{
RAM[R_HUACHA]=*(rbuffer+6);
copy_ram_to_fm_fm1(R_HUACHA,1,R_HUACHA);
onetime_biancheng(1,1,0x33);
hualong_send_ack();
}
else
hualong_send_noack();
break;
case 0x5:
// xuliang zhou qi
if((1==thevalueisbcd1to60(*(rbuffer+6)))&&(*(rbuffer+5)==1))
{
RAM[R_XULIANGZHOUQI]=*(rbuffer+6);
copy_ram_to_fm_fm1(R_XULIANGZHOUQI,1,R_XULIANGZHOUQI);
onetime_biancheng(1,1,0x35);
hualong_send_ack();
}
else
hualong_send_noack();
break;
case 0x8:
// fu he ji lu qi shi
if((1==testminutehour(rbuffer+6))&&(*(rbuffer+5)==4)&&(1==testdaymonth(rbuffer+8)))
{
for(l=0;l<4;l++)
RAM[R_RECORD_START_TIME+l]=*(rbuffer+6+l);
copy_ram_to_fm_fm1(R_RECORD_START_TIME,4, R_RECORD_START_TIME);
onetime_biancheng(1,1,0x38);
hualong_send_ack();
}
else
hualong_send_noack();
break;
case 0x9:
// lun xian shi jian
if((0!=(*(rbuffer+6)))&&(1==testbcd(*(rbuffer+6)))&&(*(rbuffer+5)==1))
{
RAM[R_DISPLAY_TIMER]=*(rbuffer+6);
copy_ram_to_fm_fm1(R_DISPLAY_TIMER,1,R_DISPLAY_TIMER);
onetime_biancheng(1,1,0x39);
hualong_send_ack();
}
else
hualong_send_noack();
break;
case 0xb:
// gong xiu JI SHI DUAN
// rbuffer+6 gong xiu ri rbuffer+7 gong xiu ri shi tao
if((*(rbuffer+7)<6)&&(*(rbuffer+7)!=0)&&(1==hualong_canwrite_price()))
{
hualong_write_20_use(TYPE_FM_WORKOFFPROGRAM_RECORD,R_WORKOFFDAY,2);
onetime_biancheng(0,1,0x41);
shiduan_onetimeprog=1;
}
else
hualong_send_noack();
break;
case 0x4e: // mo chong shu cuo
hualong_write_canshubianchen_use(R_PLUSEMODE,4,2,0x8);
break;
case 0x51:
// duan liu shi liu lost i condition
hualong_write_canshubianchen_use(R_LOSTI_CONDITION,4,2,0x11);
break;
case 0x52:
// wu gong zu he fan shi//chang 2005-2-4
if((*(rbuffer+6)<7)&&(*(rbuffer+7)<7)
&&(1==zhangjizhuangtai())&&(1==hualong_canwrite_kwh()))
{
hualong_write_20_use(TYPE_FM_KVARHMODEPROGRAM_RECORD,R_KVARHMODE_F,2);
onetime_biancheng(0,2,0x12);
}
else
hualong_send_noack();
break;
case 0x53:
// zhen xian gong lv chao xiang
hualong_write_canshubianchen_use(R_KW_F_MAX,3,2,0x13);
break;
case 0x54:
// fan xian gong lv chao xiang
hualong_write_canshubianchen_use(R_KW_R_MAX,3,2,0x14);
break;
case 0x55:
// dong jie shi ke(ding shi
l=1;
if(0==testminutehour(rbuffer+6))
l=0;
if((1!=testday(*(rbuffer+8)))&&(0x99!=(*(rbuffer+8))))
l=0;
if((1!=testmonth(*(rbuffer+9)))&&(0x99!=(*(rbuffer+9))))
l=0;
if(l!=0)
hualong_write_canshubianchen_use(R_FREEZE_TIME,4,2,0x15);
else
hualong_send_noack();
break;
case 0xc:
case 0x12:
case 0x1e:
case 0x2a:
case 0x36:
hualong_write_shitao();
break;
default:
//
if((0x42==(*(rbuffer+3)))&&(1==hualong_canwrite_price()))
hualong_write_fuhe();
else
{
if((0x55<(*(rbuffer+3)))&&(*(rbuffer+3)<0x5c))
hualong_write_fuhejilujiange();
else
hualong_send_noack();
}
}
}
unsigned char hualong_mima_ok_err(value)
unsigned char value;
{unsigned char l,l1,l2;
unsigned int addr;
l=value;
if(progfunction_security==yes)
if(l==0)
g_errmima_function();
// an quan
if(progfunction_security==yes)
{
if((RSTATUS_RUN==LOCK_DEED)||(0==RFLAG_PROG))
l=0;
if(l==1)
if(RAM[R_SECURITY_LOCK_NUM]!=0)
{
RAM[R_SECURITY_LOCK_NUM]=0;
data_addr.addri=FM_SECURITY_LOCK_NUM;
wr_data[0]=RAM[R_SECURITY_LOCK_NUM];
write(FM,1);
}
}
else
{
l1=*(rbuffer+6);
l=gmima_function(l,l1); // fei an quan ren zheng
}
return l;
}
void hualong_write_60()
{unsigned char l,l1,a,value;
unsigned int i;
switch(*(rbuffer+3))
{
case 0x1:
// jiao yuan mi ma
if((4==(*(rbuffer+5)))&&(*(rbuffer+6)<2)) // len==4 mima deng ji 0 1
{
data_addr.addri=FM_MIMA1+3*(*(rbuffer+6));// QUAN GUO
if(1==read(FM,3))
{
value=1;
for(l=0;l<3;l++)
if(wr_data[l]!=*(rbuffer+7+l))
{
value=0;
l=5;
}
if(1==hualong_mima_ok_err(value))
{
hualong_mima_quanxiang=*(rbuffer+6);
if(tongdao==comm485_1)
{
rstatus_485_mima_youxiao=zhangji_mima_youxiao_yes;
rtime_485_zhangjimima=600;
rzhangji_485_mima_use_second=RSOFT_RTC_SECOND;
}
else
if(tongdao==comm485_0)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -