⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 红外.txt

📁 红外通信程序
💻 TXT
📖 第 1 页 / 共 2 页
字号:
				}
				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 + -