📄 红外.txt
字号:
}
else{txdbyte('A');txdbyte(0);}
}
ysrxd=240; time=0; continue;
}
if(buf_ptr->buf0[1]==7) // 集中器对时(code=7)
{
ledst(0xd7);
P1=0xf1;
time_ptr = (TIME xdata *)TIME_ADD;
if(buf_ptr->buf0[0]==3)
{
timerdpl:
time_ptr->sec =read_dallas(0x81); time_ptr->min =read_dallas(0x83);
time_ptr->hour =read_dallas(0x85); time_ptr->day =read_dallas(0x87);
time_ptr->month=read_dallas(0x89); time_ptr->week=read_dallas(0x8b);
time_ptr->year =read_dallas(0x8d); // 读时钟
buf_ptr->buf0[0]=10; buf_ptr->buf0[1]=7;
buf_ptr->buf0[2]=time_ptr->sec; buf_ptr->buf0[3]=time_ptr->min;
buf_ptr->buf0[4]=time_ptr->hour; buf_ptr->buf0[5]=time_ptr->day;
buf_ptr->buf0[6]=time_ptr->month; buf_ptr->buf0[7]=time_ptr->week;
buf_ptr->buf0[8]=time_ptr->year;
txdbyte('A');
for(s=i=0;i<9;i++)
{
txdbyte(buf_ptr->buf0[i]);
s=s+buf_ptr->buf0[i];
buf_ptr->buf0[9]+=buf_ptr->buf0[i];
}
txdbyte(s); // 累加和
}
else
if(buf_ptr->buf0[0]==10)
{
write_dallas(0x80,buf_ptr->buf0[2]); write_dallas(0x82,buf_ptr->buf0[3]);
write_dallas(0x84,buf_ptr->buf0[4]); write_dallas(0x86,buf_ptr->buf0[5]);
write_dallas(0x88,buf_ptr->buf0[6]); write_dallas(0x8A,buf_ptr->buf0[7]);
write_dallas(0x8C,buf_ptr->buf0[8]); // 重写
goto timerdpl;
}
ysrxd=240; time=0; continue;
}
if(buf_ptr->buf0[1]==8) // 启动载波集中器抄表轮抄功能(code=8)
{
ledst(0xd7);
loop_l=buf_ptr->buf0[2];
loop_l_up=1;
txdbyte('A'); txdbyte(0);
ysrxd=240; time=0; continue;
}
if(buf_ptr->buf0[1]==9) // 连续抄录集中器实时表底数据库(code=9)
{
ledst(0xd7);
jzq_ptr=(JZQ_HEAD xdata *)JZQ_ADD;
buf_ptr = (HBUF xdata *)BUF_ADD;
P1=0xf1;
cj=jzq_ptr->meter_num; // 集中器管理的电表数量
c=256*(unsigned)buf_ptr->buf0[2]+(unsigned)buf_ptr->buf0[3];
cc=c;
c=comp1(c);
dat_ptr=(DAT_ITEM xdata *)JZQ_ADD ;
while (cc<=cj)
{
i=0;
buf_ptr->buf0[i]=11; i++;
for(j=0;j<6;i++,j++)
buf_ptr->buf0[i]=dat_ptr[c].s_no[j]; // 电表表号
buf_ptr->buf0[i]=4;i++;buf_ptr->buf0[i]=1;i++;
for(j=0;j<4;i++,j++) // 总电能
{buf_ptr->buf0[i]=dat_ptr[c].s_base[j];}
buf_ptr->buf0[i]=4; i++; buf_ptr->buf0[i]=2; i++;
for(j=0;j<4;i++,j++) // 峰有功电能
{buf_ptr->buf0[i]=dat_ptr[c].s_base2[j];}
buf_ptr->buf0[i]=4; i++; buf_ptr->buf0[i]=3;i++;
for(j=0;j<4;i++,j++) // 平有功电能
{buf_ptr->buf0[i]=dat_ptr[c].s_base3[j];}
buf_ptr->buf0[i]=4; i++; buf_ptr->buf0[i]=4; i++;
for(j=0;j<4;i++,j++) // 谷有功电能
{buf_ptr->buf0[i]=dat_ptr[c].s_base4[j];}
if((dat_ptr[c].d_type&0x10)==0x0) // 无需量
{buf_ptr->buf0[0]=buf_ptr->buf0[0]-2; goto azzl3;}
buf_ptr->buf0[i]=3; i++; buf_ptr->buf0[i]=0x5; i++;
for(j=0;j<3;i++,j++) // 有功总最大需量
{buf_ptr->buf0[i]=dat_ptr[c].s_xq[j];}
buf_ptr->buf0[i]=4; i++; buf_ptr->buf0[i]=0x6; i++;
for(j=0;j<4;i++,j++) // 有功总最大需量发生时间
{buf_ptr->buf0[i]=dat_ptr[c].s_time[j];}
azzl3:
buf_ptr->buf0[i]=1; i++; buf_ptr->buf0[i]=7; i++;
buf_ptr->buf0[i]=dat_ptr[c].s_qdx; i++; // 继电器状态
buf_ptr->buf0[i]=2; i++; buf_ptr->buf0[i]=8; i++;
if(dat_ptr[c].s_xh!=0) n=dat_ptr[c].s_xh;
else n=dat_ptr[c].pre_sno;
buf_ptr->buf0[i]=(char)n; i++;
n=n>>8; buf_ptr->buf0[i]=(char)n; i++; //中继顺序号
buf_ptr->buf0[i]=4; i++; buf_ptr->buf0[i]=9; i++;
buf_ptr->buf0[i]=dat_ptr[c].c_min; i++; buf_ptr->buf0[i]=dat_ptr[c].c_hour; i++;
buf_ptr->buf0[i]=dat_ptr[c].c_day; i++; buf_ptr->buf0[i]=dat_ptr[c].c_mon; i++;
buf_ptr->buf0[i]=4; i++; buf_ptr->buf0[i]=0x0a; i++;
buf_ptr->buf0[i]=dat_ptr[c].e_min; i++; buf_ptr->buf0[i]=dat_ptr[c].e_hour; i++;
buf_ptr->buf0[i]=dat_ptr[c].e_day; i++; buf_ptr->buf0[i]=dat_ptr[c].e_mon; i++;
buf_ptr->buf0[i]=1; i++; buf_ptr->buf0[i]=0x0b; i++;
buf_ptr->buf0[i]=dat_ptr[c].e_cnt; i++; // 未抄计次
txdbyte('A');txdbyte(i+3); h=0;
if(cc==cj){txdbyte(9);h=i+3+9;}
else{txdbyte(0x89);h=i+3+0x89;}
for(j=0;j<i;j++)
{txdbyte(buf_ptr->buf0[j]); h=h+buf_ptr->buf0[j];}
txdbyte(h);
j=0;
for(ysrxd=80; ysrxd;)
{
s=P1;P1=0xf4;P1=s; // 清狗
if(RI==0) continue;
RI=0; RD=SBUF;
if(RD=='N') j=1;
if(RD=='W') j=2;
if(RD=='E') j=3;
if((j>0)&&(RD==0))
{j=(j&0x0f)+0x10; break;}
}
ysrxd=80;
if(j==0x11)
{
c++; cc++;
if(cc==448){P1=0xf9;c=1;}
if(cc==895){P1=0xf2;c=1;}
}
else if (j==0x12) continue;
else if (j==0x13) break;
else break;
}
P1=0xff;
ysrxd=240; time=0; continue;
}
if(buf_ptr->buf0[1]==0x0a) // 连续抄录集中器昨日零点冻结表底表底数据库(code=0x0A)
{
ledst(0xd7);
jzq_ptr=(JZQ_HEAD xdata *)JZQ_ADD;
buf_ptr = (HBUF xdata *)BUF_ADD;
P1=0xf1;
cj=jzq_ptr->meter_num; // 集中器管理的电表数量
c=256*(unsigned)buf_ptr->buf0[2]+(unsigned)buf_ptr->buf0[3];
cc=c;
c=comp1(c);
dat_ptr=(DAT_ITEM xdata *)JZQ_ADD ;
while (cc<=cj)
{
i=0;
buf_ptr->buf0[i]=8; i++;
for(j=0;j<6;i++,j++)
{buf_ptr->buf0[i]=dat_ptr[c].s_no[j];} // 电表表号
buf_ptr->buf0[i]=4;i++;buf_ptr->buf0[i]=0x21;i++;
for(j=0;j<4;i++,j++) // 冻总电能
{buf_ptr->buf0[i]=dat_ptr[c].z_base[j];}
buf_ptr->buf0[i]=4; i++; buf_ptr->buf0[i]=0x22; i++;
for(j=0;j<4;i++,j++) // 日冻峰有功电能
{buf_ptr->buf0[i]=dat_ptr[c].z_base2[j];}
buf_ptr->buf0[i]=4; i++; buf_ptr->buf0[i]=0x23;i++;
for(j=0;j<4;i++,j++) // 日冻平有功电能
{buf_ptr->buf0[i]=dat_ptr[c].z_base3[j];}
buf_ptr->buf0[i]=4; i++; buf_ptr->buf0[i]=0x24; i++;
for(j=0;j<4;i++,j++) // 日冻谷有功电能
{buf_ptr->buf0[i]=dat_ptr[c].z_base4[j];}
if((dat_ptr[c].d_type&0x10)==0) // 无需量
{buf_ptr->buf0[0]=buf_ptr->buf0[0]-2;goto aazzl3;}
buf_ptr->buf0[i]=3; i++; buf_ptr->buf0[i]=0x25; i++;
for(j=0;j<3;i++,j++) // 日冻有功总最大需量
{buf_ptr->buf0[i]=dat_ptr[c].z_xq[j];}
buf_ptr->buf0[i]=4; i++; buf_ptr->buf0[i]=0x26; i++;
for(j=0;j<4;i++,j++) // 日冻有功总最大需量发生时间
{buf_ptr->buf0[i]=dat_ptr[c].z_time[j];}
aazzl3:
buf_ptr->buf0[i]=1; i++; buf_ptr->buf0[i]=0x27; i++;
buf_ptr->buf0[i]=dat_ptr[c].z_qdx; i++; // 日冻继电器状态
buf_ptr->buf0[i]=1; i++; buf_ptr->buf0[i]=0x28; i++;
buf_ptr->buf0[i]=dat_ptr[c].z_mon; i++; // 日冻结时间
txdbyte('A');txdbyte(i+3);h=0;
if(cc==cj){txdbyte(0x0a);h=i+3+0x0a;}
else{txdbyte(0x8a);h=i+3+0x8a; }
for(j=0;j<i;j++)
{txdbyte(buf_ptr->buf0[j]); h=h+buf_ptr->buf0[j];}
txdbyte(h);
j=0;
for(ysrxd=80;ysrxd;) // 接收特殊命令
{
s=P1;P1=0xf4;P1=s; // 清狗
if(RI==0) continue;
RI=0; RD=SBUF;
if(RD=='N') j=1;
if(RD=='W') j=2;
if(RD=='E') j=3;
if((j>0)&&(RD==0))
{j=(j&0x0f)+0x10; break;}
}
ysrxd=80;
if(j==0x11)
{
c++; cc++;
if(cc==448){P1=0xf9; c=1;}
if(cc==895){P1=0xf2; c=1;}
}
else if (j==0x12) continue;
else if (j==0x13) break;
else break;
}
P1=0xff;
ysrxd=240;time=0;continue;
}
if(buf_ptr->buf0[1]==0x0b) // 连续抄录集中器上月冻结表底数据库(code=0x0B)
{
ledst(0xd7);
jzq_ptr=(JZQ_HEAD xdata *)JZQ_ADD;
buf_ptr = (HBUF xdata *)BUF_ADD;
P1=0xf1;
cj=jzq_ptr->meter_num; // 集中器管理的电表数量
c=256*(unsigned)buf_ptr->buf0[2]+(unsigned)buf_ptr->buf0[3];
cc=c;
c=comp1(c);
dat_ptr=(DAT_ITEM xdata *)JZQ_ADD ;
while (cc<=cj)
{
i=0;
buf_ptr->buf0[i]=8; i++;
for(j=0;j<6;i++,j++)
{buf_ptr->buf0[i]=dat_ptr[c].s_no[j];} // 电表表号
buf_ptr->buf0[i]=4;i++;buf_ptr->buf0[i]=0x31;i++;
for(j=0;j<4;i++,j++) // 月冻总电能
{buf_ptr->buf0[i]=dat_ptr[c].r_base[j];}
buf_ptr->buf0[i]=4; i++; buf_ptr->buf0[i]=0x32; i++;
for(j=0;j<4;i++,j++) // 月冻峰有功电能
{buf_ptr->buf0[i]=dat_ptr[c].r_base2[j];}
buf_ptr->buf0[i]=4; i++; buf_ptr->buf0[i]=0x33;i++;
for(j=0;j<4;i++,j++) // 月冻平有功电能
{buf_ptr->buf0[i]=dat_ptr[c].r_base3[j];}
buf_ptr->buf0[i]=4; i++; buf_ptr->buf0[i]=0x34; i++;
for(j=0;j<4;i++,j++) // 月冻谷有功电能
{buf_ptr->buf0[i]=dat_ptr[c].r_base4[j];}
if((dat_ptr[c].d_type&0x10)==0) // 无需量
{buf_ptr->buf0[0]=buf_ptr->buf0[0]-2;goto bzzl3;}
buf_ptr->buf0[i]=3; i++; buf_ptr->buf0[i]=0x35; i++;
for (j=0;j<3;i++,j++) // 月冻有功总最大需量
{buf_ptr->buf0[i]=dat_ptr[c].r_xq[j];}
buf_ptr->buf0[i]=4; i++; buf_ptr->buf0[i]=0x36; i++;
for(j=0;j<4;i++,j++) // 月冻有功总最大需量发生时间
{buf_ptr->buf0[i]=dat_ptr[c].r_time[j];}
bzzl3:
buf_ptr->buf0[i]=1; i++; buf_ptr->buf0[i]=0x37; i++;
buf_ptr->buf0[i]=dat_ptr[c].r_qdx; i++; // 月冻继电器状态
buf_ptr->buf0[i]=1; i++; buf_ptr->buf0[i]=0x38; i++;
buf_ptr->buf0[i]=dat_ptr[c].r_mon;i++; // 月冻结时间
txdbyte('A');txdbyte(i+3); h=0;
if(cc==cj){txdbyte(0x0b);h=i+3+0x0b;}
else{txdbyte(0x8b);h=i+3+0x8b;}
for(j=0;j<i;j++)
{txdbyte(buf_ptr->buf0[j]); h=h+buf_ptr->buf0[j];}
txdbyte(h);
j=0;
for(ysrxd=80;ysrxd;)
{
s=P1;P1=0xf4;P1=s; // 清狗
if(RI==0) continue;
RI=0; RD=SBUF;
if(RD=='N') j=1;
if(RD=='W') j=2;
if(RD=='E') j=3;
if((j>0)&&(RD==0)){j=(j&0x0f)+0x10;break;}
}
ysrxd=80;
if(j==0x11)
{
c++;cc++;
if(cc==448){P1=0xf9; c=1;}
if(cc==895){P1=0xf2; c=1;}
}
else if(j==0x12) continue;
else if(j==0x13) break;
else break;
}
P1=0xff;
ysrxd=240;time=0;continue;
}
}
ledstm(led_data);
int2=1;
int3=1; // 设置显示状态
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -