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

📄 hualong.h

📁 嵌入式单片机开发,嵌入式单片机开发,嵌入式单片机开发
💻 H
📖 第 1 页 / 共 4 页
字号:
                              													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 + -