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

📄 hualong.h

📁 嵌入式单片机开发,嵌入式单片机开发,嵌入式单片机开发
💻 H
📖 第 1 页 / 共 4 页
字号:
             	                              					{
             	                              						rstatus_485_mima_youxiao_0=zhangji_mima_youxiao_yes;
                                              						rtime_485_zhangjimima_0=600;
                                              						rzhangji_485_mima_use_second_0=RSOFT_RTC_SECOND;
             	                              					}
                                        					else
             	                                					{
	         	                           						rstatus_zhangji_mima_youxiao=zhangji_mima_youxiao_yes;
                                                						rtime_zhangjimima=600;
                                               							rzhangji_mima_use_second=RSOFT_RTC_SECOND;
                                              						}
                                 					hualong_send_ack();
	   	               					}
	        	    				}
	              
                    			  }                
	  
	   			break;
case 0x2:
	  // xiu gai mi ma
	      l1=1;
	      if(8!=(*(rbuffer+5))) // len
		  	l1=0;
	      if(*(rbuffer+6)>1) // mi ma deng ji
		  	l1=0;
	      if(*(rbuffer+10)>1) // mi ma deng ji
		  	l1=0;
	      if(*(rbuffer+6)>(*(rbuffer+10))) // <= ok
		  	l1=0;
	      if(8!=testbcdnum(rbuffer+6,8)) // bcd check
		  	l1=0;
	      if(l1==1)        
	      		{
	              	 	data_addr.addri=FM_MIMA1+3*(*(rbuffer+6));
	               		if(0==read(FM,3)) 
					l1=0;
	               		for(l=0;l<3;l++)
	   	            		if(wr_data[l]!=*(rbuffer+6+l+1))
	   	                		{
	   	                			l1=0;
	                        			l=5;
						}
	      	        }
	      if(l1==1)
	   	     	{
	   	     		for(l=0;l<3;l++)
	   	            		 wr_data[l]=*(rbuffer+11+l);
	             		data_addr.addri=FM_MIMA1+3*(*(rbuffer+10));
	             		write(FM,3);
                   		onetime_biancheng(0,2,0x31);
                    		hualong_send_ack();
	   	      	}
	   	break;
case 0x3:
	  // xie ru zhang ji hao
	      if((4==testbcdnum(rbuffer+6,4))&&(*(rbuffer+5)==4))// bcd and len==4
	   	     {
                    		if(tongdao==comm485_1)
                        		{
                        			if(rstatus_485_mima_youxiao!=zhangji_mima_youxiao_start)
                    	          			{ 
                    	          				for(l=0;l<4;l++)
	   	                         				zhangjihao_485[l]=*(rbuffer+6+l);
	                          				rstatus_485_mima_youxiao=zhangji_mima_youxiao_inhao;// deng lu
                                				rtime_485_5second=5;// 5second
                                 				rzhangji_485_mima_use_second=RSOFT_RTC_SECOND;
                                 				hualong_send_ack();
                                 			}                     
                      			}
                   		else
                   	    		{
	                   	    		if(tongdao==comm485_0)
	                           			{
	                           				if(rstatus_485_mima_youxiao_0!=zhangji_mima_youxiao_start)
	                    	          				{ 
	                    	          					for(l=0;l<4;l++)
		   	                         					zhangjihao_485_0[l]=*(rbuffer+6+l);
		                          					rstatus_485_mima_youxiao_0=zhangji_mima_youxiao_inhao;// deng lu
	                                					rtime_485_5second_0=5;// 5second
	                                 					rzhangji_485_mima_use_second_0=RSOFT_RTC_SECOND;
	                                 					hualong_send_ack();
	                                 				}
	                     
	                      				}
	                       			else
	                   	   			 // remote
	              	         			{
	              	         				if(rstatus_zhangji_mima_youxiao!=zhangji_mima_youxiao_start)
	               	              					{
	 	   	                       					for(l=0;l<4;l++)
		   	                           						zhangjihao[l]=*(rbuffer+6+l);
		                              					rstatus_zhangji_mima_youxiao=zhangji_mima_youxiao_inhao;
	                                    		 			rtime_remote_5second=5;// 5second
	                                     					rzhangji_mima_use_second=RSOFT_RTC_SECOND;
	                                     					hualong_send_ack();
	                                   				}
	                                            
		   	           			}
	                   		}
	        	 }	  
	   	break;
case 0xf2:// changed f
                if(*(rbuffer+5)==2)
                	{
                		data_addr.addri=eeprom_rtc8025_addclk_by_ic;
                       		wr_data[0]=*(rbuffer+6);
                      	 	wr_data[1]=*(rbuffer+7);
                       		write(EP1,2);
                       		hualong_send_ack();
                	}
                break;
case 0xf5:// changed display  zhang jie lun display
                if(*(rbuffer+5)==2)
                	{
                      	wr_data[0]=*(rbuffer+6);
                      	 wr_data[1]=*(rbuffer+7);
                       	if((wr_data[0]==0xff)&&(wr_data[1]==0xff))
                       		{
                       			RDISPLAY_ENVENT=DISPLAY_ENVENT_NO;
                              		RLCD_DISPLAY_STATUS=DISPLAY_LIGHT;
                              		RDISPLAY_TIMER=8;
                       		}
                       	else
                       		{
                       			RAPPOINT_REFERENCE=wr_data[1]*256+wr_data[0];  
                       	  		if(display_yesorno(RAPPOINT_REFERENCE)==yes)
                                    		RDISPLAY_ENVENT=DISPLAY_ENVENT_POINT;         
                                
                       		}
                	}
                break;
// TEST USE ---------------------------->END
case 0xdd:
	   // qu xiao gong chang zhuang tai
	    if(RSTATUS_RUN==TEST)	   
	    	{
	        	if(*(rbuffer+5)==1)
	          		{
	            			RSTATUS_RUN=RUN;
					shiduan_onetimeprog=0;
					cuofengvalue_onetimeprog=0;
           				cuofengshiduan_onetimeprog=0;
           				priceyuyue_onetimeprog=0;
           				cuofengshiduan_switch_onetimeprog=0;
          				cuofengvalue_switch_onetimeprog=0;
	            			wr_data[0]=RUN;
	            			data_addr.addri=FM_STATUS_RUN;
	            			write(FM,1);                 
	            			RSTATUS_TEST_TIMER=0;                   
                   			move_int_to_fm(RSTATUS_TEST_TIMER,FM_STATUS_TEST_TIMER);
	           			hualong_send_ack();
	            			clr_4_dot();
					// changed by zhanglong ---->start
					//clr_had_jiaoshi();
					// changed by zhanglong ---->end
	        		}
	         }	  
	   break;
case 0xea:
	    // shi jian qing ling
	    // ram qing ling
	    // add	   
	     if(*(rbuffer+5)==1)//&&(1==hualong_canwrite_kwh()))
	        	{
	        		if(1==envent_clr())
                 			hualong_send_ack();
	     		}
            break;
case 0xec:
	  // xu liang qing ling
	  if((RFLAG_DEMANGCLR_LOCK==0)&(*(rbuffer+5)==1)&&(1==hualong_canwrite_kwh()))
	  	{
	        	xuliangqingling_qingqiu=1;
               		onetime_biancheng(0,2,0x28);
	        	hualong_send_ack();
		}
	  else 
	   	 	hualong_send_noack();	     
         break;
case 0xed:
	   // diang liang qing ling wu you
	     if((*(rbuffer+5)==1)&&(1==hualong_canwrite_kwh()))
	          {
	          	onetime_biancheng(0,2,0x29);
	          	clr_kwh();
	            	hualong_send_ack();
	     	   }
            	break;
case 0xee:
	// zon qing wu you
	// ram
	  	if((*(rbuffer+5)==1)&&(1==hualong_canwrite_kwh()))
	        	{
	        		if(1==zongqing(0x55aa,0))	 
               				{               					
						onetime_biancheng(0,2,0x30);
						hualong_send_ack();
	        			}
	 		}
            break;
  default:
  	       hualong_send_noack();
	}
}
		

 

void hualong_write()	
{
unsigned char code,l;
code=*(rbuffer+3);
switch(*(rbuffer+4))
	{
		case 0x10: // dianliang
                 		if((1==zhangjizhuangtai())&&(1==hualong_canwrite_kwh()))                 
                        		hualong_write_10();
                 		else 
					hualong_send_noack();
                 		break;
 		case 0x17:  // 17
                      		hualong_write_17();
                 		break;
 		case 0x20:   //20
                 		l=1;
                		if((code<0xa)||(code>=0x4e))
                			l=0;
                		if((1==zhangjizhuangtai())||(l==0))
                      			hualong_write_20();
                		else 
					hualong_send_noack();
                 		break;
		case 0x60: // 60
                		if((code==1)||(code==3)||(code==0x30)||(code==0xf5))
                      			hualong_write_60();
                		else
                	  		if(1==zhangjizhuangtai())
                		 		hualong_write_60();
                		break;
		default:
	     			hualong_send_noack();
				break;
	     
	}
comm_do_endcheck();
}
                 


phualong(rlen,rdisplay_info_status,rstatus)
 unsigned char *rlen,*rdisplay_info_status,*rstatus;
// rlen----------     len num  rec
// rdisplay_info_status------myaddr, broadcast, start
// rstatus----------------> rec,send,start,err 
{ unsigned char d1,d2,d3;  
	if(*rlen>=8)
   		{
   			if((*(rbuffer+1)==0xa6)||(*(rbuffer+1)==RAM[R_BIAOADDR_L]))
      				{
        				if(*rdisplay_info_status!=INFO_ME)   
      	     					{
      	     						*rdisplay_info_status=INFO_ME;
	       						display_comm=2;
                				}
        			}
        		else
         			{  
                			my_tongdao_start();
                 		}
   		} 
      	if(*rdisplay_info_status==INFO_ME)  
      		{
      			if(*rlen>=8)
         // read pan
        			switch(*(rbuffer+2))
        				{
         					case 0xbb:
         	           						// read
                       						if(*(rbuffer+4)==0xf0)
                            						{
                            							read_hualong_f0(rlen);
                             							*rdisplay_info_status=INFO_START;
			        					}
                       						else         	        
         	           						{                               
         	           	  						my_tongdao_start();               	      
                       							}
                         						break;
         					case 0xcc:
         	            						// write
                         						// add 0xf0
                         						if(*(rbuffer+4)==0xf0)
                         	 						{ 
                         	 							*rdisplay_info_status=INFO_START;                            
                               							//write_hualong_f0(rlen);
                                  						}
                       						else
                       							{         	            
                              							if(*rlen>=(8+*(rbuffer+5)))
                        	     								{
         	                    	 								d3=0;
         	                     								if(*(rbuffer+5)>64) 
														d3=1;// cut 2003-5-7   
         	                     								if(*(rbuffer+7+(*(rbuffer+5)))!=0x0d) 
														d3=1;
                                   								d2=0;
         	                     								for(d1=3;d1<6+*(rbuffer+5);d1++)
         	            	          									d2=d2+*(rbuffer+d1);
         	                    									if(*(rbuffer+6+*(rbuffer+5))!=d2) 
														d3=1;
         	                    									if((d3==0)&&((1==RFLAG_PROG)||((*(rbuffer+3)==0xf5)&&(*(rbuffer+4)==0x60))))
         	            	          									{ 
         	            	          										hualong_write();
         	                          										*rdisplay_info_status=INFO_START;
														}
         	                   									else
         	                  	    									{
                                        										my_tongdao_start();               	              
                                        									}
                       	      								 }
                       	   						 }
                         						break;
         				 	default:           	        
                       	 				my_tongdao_start();               	
                          					break;
        			}

      			}
      
}















⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -