📄 hualong.h
字号:
value=0;
if(0==zhangjizhuangtai())
value=0;
}
else
if(0==hualongdenglu())
value=0;
if(value==1)
{
for(a1=0;a1<100;a1++)
wr_data[a1]=0;
for(a1=0;a1<*(rbuffer+10);a1++)
wr_data[a1]=*(rbuffer+11+a1);
if(3==code)// jie jia ri
{
set_before(TYPE_EP1_HOLIDAYPROGRAM_RECORD);
// exchang
for(a1=0;a1<30;a1++)
{
a2=wr_data[3*a1];
wr_data[3*a1]=wr_data[3*a1+1];
wr_data[3*a1+1]=wr_data[3*a1+2];
wr_data[3*a1+2]=a2;
}
}
data_addr.addrc[0]=table_allwrite_control[m][0];
data_addr.addrc[1]=table_allwrite_control[m][1];
addr=data_addr.addri;
code1=table_allwrite_control[m][2];
switch(table_allwrite_control[m][4])
{
case 10: // jie jia ri exchang
write(RRAM,code1);
//addr=data_addr.addri;
copy_ram_to_fm_fm1(addr,code1,addr);
break;
case 1: write(FM,code1);
break;
case 2:
write(EP1,code1);
break;
}
switch(code)
{
case 3:
set_end(TYPE_EP1_HOLIDAYPROGRAM_RECORD,0);// jie jia ri
shiduan_onetimeprog=1;
onetime_biancheng(0,0x4,0x3);
break;
case 0x16:
onetime_biancheng(0,0x4,code);
break;
default: // ji lu
onetime_biancheng(1,0x4,code);
break;
}
}
}
}
}
}
}
if(value==1)
hualong_send_ack();
else
hualong_send_noack();
comm_do_endcheck();// had do
}
}
*/
unsigned char readnumbyte_current_twobiaofm(twobiao_type,pian,num)
unsigned char twobiao_type,pian,num;
// read twotable data(previous block) from twotable type,offset,num
{unsigned char value;
value=1;
data_addr.addri=current_twobiaofm_block_addr(twobiao_type,0);
if(data_addr.addri==0xffff)
value=0;
else
{
data_addr.addri=data_addr.addri+pian;
if(twobiao_type>=TYPE_FM_LOSTV_RECORD)
value=read(FM,num);
else
value=read(EP1,num);
}
return value;
}
void hualong_write_10_kwh(addr,num)
unsigned char num;
unsigned int addr;
// hualong set kwh
{unsigned char a;
unsigned char l;
for(a=0;a<40;a++)
bianchengqian[a]=RAM[addr+a];
if(num!=0)
{
for(l=0;l<num;l++)
{
for(a=0;a<4;a++)
RAM[addr+4*l+a]=*(rbuffer+6+4*l+a);
dianliang_write(l);
}
onetime_kwhp(0,bianchengqian,&RAM[R_KWH_F_BAKA]);
onetime_biancheng(0,1,1);
hualong_send_ack();
}
}
void hualong_write_10_kvarh(addr,num)
unsigned char num;
unsigned int addr;
// hualong set kvarh
{unsigned char a;
unsigned char l;
for(a=0;a<40;a++)
bianchengqian[a]=RAM[addr+a];
if(num!=0)
{
for(l=0;l<num;l++)
{
for(a=0;a<4;a++)
RAM[addr+4*l+a]=*(rbuffer+6+4*l+a);
dianliang_write(l+10);
}
for(l=4;l<16;l++)
RAM[R_KWH_F_BAKA+l+80]=0;
for(l=0;l<4;l++)
RAM[R_KWH_F_BAKA+l+80]=RAM[R_KWH_F_BAKA+40+l];
for(l=0;l<4;l++)
dianliang_write(20+l);
onetime_kvarhp(0,bianchengqian,&RAM[R_KWH_F_BAKA+40]);
onetime_biancheng(0,1,0x11);
hualong_send_ack();
}
}
void hualong_write_10()
{unsigned char a;
a=1;
if(*(rbuffer+5)==40)
{
if((40==testbcdnum(rbuffer+6,40))&&(1==zhejiang_set_dianliang_ok(rbuffer+6))
&&(1==zhejiang_set_dianliang_ok(rbuffer+6+20)))
{
if(*(rbuffer+3)==1)
hualong_write_10_kwh(R_KWH_F_BAKA,10);
else
{
if(*(rbuffer+3)==0xb)
hualong_write_10_kvarh(R_KWH_F_BAKA+40,10);
else
hualong_send_noack();
}
}
else
hualong_send_noack();
}
else
hualong_send_noack();
}
void hualong_write_datetime(num)
unsigned char num;
// set date and time
{unsigned char time[7],*point,l,value;
unsigned int numsecond;
value=1;
time_to_bianchengqian();
point=&RSOFT_RTC_SECOND;
for(l=0;l<7;l++)
time[l]=(*(point+l));
switch(num)
{
case 3:
// time data
// time
for(l=0;l<3;l++)
time[l]=(*(rbuffer+6+l+3));
for(l=0;l<3;l++)
time[4+l]=(*(rbuffer+6+l));
break;
default:
value=0;
break;
}
if(1==testsecond_minute_hour_day_month_year(&time[0],&time[4]))
{
time[3]=week_from_day_month_year(&time[4]);
if(0==hualong_canwrite_kwh())
// jiao shi
{
numsecond=num_second_canjiaoshi()+60;
if(value==1)
value=compare_date_time(numsecond,&time[0],&time[4]);
if(0==oneday_can_change_time())
value=0;
}
if(value==1)
{
onetime_biancheng(0,1,0x29);
for(l=0;l<7;l++)
{
*(point+l)=time[l];
rtc8025_timevalue[l]=time[l];
}
copy_ram_to_fm(R_SOFT_SECOND,7,R_SOFT_SECOND);
rtc8025_write();// 3 CI
if(0==hualong_canwrite_kwh())
oneday_had_jiaoshi();
else
clr_had_jiaoshi();
onetime_timedatep(0,bianchengqian);
// onetime_biancheng(0,1,0x29);
powerup_changedtime_priceswitch=1;//time changed
hualong_send_ack();
}
else
hualong_send_noack();
}
else
hualong_send_noack();
}
void hualong_write_canshubianchen_use(addr,num,code1,code2)
unsigned char num,code1,code2;
unsigned int addr;
// addr ----ram[addr]
// num-----write num data
// code1 code2 --------------prog code
{unsigned char l;
if((num!=0)&&(num==(*(rbuffer+5))))// add
if(num==testbcdnum(rbuffer+6, num))
{
for(l=0;l<num;l++)
RAM[addr+l]=*(rbuffer+6+l);
copy_ram_to_fm_fm1(addr,num,addr);
onetime_biancheng(1,code1,code2);
if(code1==1)
{
if(code2==0x26)
recoder_shiduan_yonghuhao_biaohao_addr(recorde_biaoaddr);
else
{if(code2==0x27)
recoder_shiduan_yonghuhao_biaohao_addr(recorde_biaohao);
else
if(code2==0x28)
recoder_shiduan_yonghuhao_biaohao_addr(recorde_yonghuhao);
}
}
hualong_send_ack();
}
else
hualong_send_noack();
}
void hualong_write_17()
{unsigned char l;
switch(*(rbuffer+3))
{
case 0x2:
// addr
hualong_write_canshubianchen_use(R_BIAOADDR_L,1,1,0x26);
break;
case 0x3:
// biao hao
hualong_write_canshubianchen_use(R_YONGHUHAO_L,4,1,0x27);
break;
case 0x4:
// ju hao
hualong_write_canshubianchen_use(R_JUHAO_L,4,1,0x28);
break;
case 0x5:
// data day_month_year must change rtc1 rtc2
if(1==zhangjizhuangtai())
if(1==hualong_peizhi_use())
if(*(rbuffer+5)==6)
hualong_write_datetime(3);
break;
default:
hualong_send_noack();
}
}
void hualong_write_shitao()
// set price
{unsigned char l,l1,type_biao,code;
unsigned int addr;
unsigned char num,a[36];
unsigned int y0,y1;
unsigned char *fp1,*fp2;
if(((*(rbuffer+5))==36)&&(1==hualong_canwrite_price()))
{
switch(*(rbuffer+3))
{
case 0xc: //l0---------->4
addr=R_PRICE_NO5_1;
current_num_price_prog=4;
type_biao=TYPE_EP1_PRICEPROGRAM_RECORD;
code=0x42;
break;
case 0x12:
addr=R_PRICE_NO1_1;
current_num_price_prog=0;
type_biao=TYPE_EP1_PRICEPROGRAM_RECORD;
code=0x48;
break;
case 0x1e:
addr=R_PRICE_NO2_1;
current_num_price_prog=1;
type_biao=TYPE_EP1_PRICEPROGRAM_RECORD;
code=0x60;
break;
case 0x2a:
addr=R_PRICE_NO3_1;
current_num_price_prog=2;
type_biao=TYPE_EP1_PRICEPROGRAM_RECORD;
code=0x72;
break;
default:
addr=R_PRICE_NO4_1;
current_num_price_prog=3;
type_biao=TYPE_EP1_PRICEPROGRAM_RECORD;
code=0x84;
break;
}
l=1;
for(l1=0;l1<12;l1++)
{
fp1=rbuffer+6+3*l1;
if(0==testminutehour(fp1+1))
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -