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

📄 hualong_v10.h

📁 嵌入式单片机开发,嵌入式单片机开发,嵌入式单片机开发
💻 H
📖 第 1 页 / 共 5 页
字号:

// fa song zu zen write fou ren 写命令错误应答帧aaaaaaaaaaaaaaaa
send_write_err_v10(errvalue)
unsigned char errvalue;
{unsigned char a;

       set_buffer_first();
       *(rbuffer+9+2)=0xc5;
       *(rbuffer+10+2)=0x1;
       *(rbuffer+11+2)=errvalue+0x33;
        *(rbuffer+12+2)=0x00;
        for(a=3;a<12+2;a++)
 	     *(rbuffer+12+2)=*(rbuffer+12+2)+*(rbuffer+a);
       *(rbuffer+13+2)=0x16;
       send_from_tongdao(14+2);
       
}
extern unsigned char quanguo_mima_ok_err(unsigned char pian);
unsigned char v10_write(codel,codeh,rdisplay_info_status)
unsigned char codel,codeh,*rdisplay_info_status;
{unsigned char l,value,value1,l1,l2;
  unsigned int code;
  unsigned char a[104],len;
  unsigned char uselen;
  unsigned int useaddr,i;
  unsigned char type;
  unsigned char *point;
 code=256*codeh+codel;
 value=0;
 value1=1;
 l=*(rbuffer+12);// mima quan xain
 if(l>2) 
 	value1=0;
 len=*(rbuffer+9);
 if(len<6) // mima 4,codel codeh
 	value1=0;
 // changed by zhanglong ---->start
//  if(value1==1 )
 if((value1==1 ) &&(code!=0xfe00))
 // changed by zhanglong ---->end
 	{data_addr.addri=FM_MIMA1+3*l;
         read(FM,3);
         if(0==quanguo_mima_ok_err(2))
         	{
			if(*rdisplay_info_status!=INFO_GUANGBO)
				{
				send_write_err_v10(0x4);
				}
			return 1;
         	}
         	//value1=0;
 	}
 for(l=0;l<100;l++)
 	a[l]=*(rbuffer+16+l);
 
 //condition  factory
 if(code!=0xee81)
 	// changed by zhanglong ---->start
	 //if((code==0xbe01)||(codeh==0xee) ||(code==0xfe00))
	if((code==0xbe01)||(codeh==0xee))
	 // changed by zhanglong ---->end
	 	{
	 	  data_addr.addri=EPLOCK_FACTORY_ENABLE;
		  read(EPLOCK,1);
		  if(wr_data[0]!=0xa5)
		  	value1=0;
	 	}

 //an quan ren zhen
 type=0;
 point=&cuofengshiduan_onetimeprog;
 if(1==value1)
	 switch(code)
	 	{
	 	 	case 0xb000:
			case 0xb001:
				// add by zhanglong ---->start
			case 0xb00f:
				// add by zhanglong ---->end
			case 0xb030:
			case 0xb031:
			case 0xb032:
			case 0xb033:
			case 0xbd00:
			case 0xbd01:
			case 0xbd02:
						type=1;//kwh time
						value1=quanguo_canwrite_kwh();
						break;
			case 0xc001:
			case 0xc01f:
			case 0xc02f:
			case 0xc03f:
			case 0xc04f:
			case 0xc05f:
			case 0xc0df:
			case 0xc11f:
			case 0xc12f:
						type=2;//price
						value1=quanguo_canwrite_price();
						break;
			case 0xb080:
			case 0xb081:
						type=3;//zhu fu cuo feng shi duan	
						 point=&cuofengshiduan_onetimeprog;
						 value1=testcuofengshiduan(&a[0]);
						break;
			case 0xb082:
			case 0xb083:
						type=4;//zhu fu cuofeng ding zhi
						point=&cuofengvalue_onetimeprog;
						break;
			case 0xb084:
						type=5;//zhu fu fe lv yu yue
						point=&priceyuyue_onetimeprog;
						break;
			case 0xb085:
				      		type=6;//zhu fu cuo feng shi duan qie huang
				      		point=&cuofengshiduan_switch_onetimeprog;
				      		break;
			case 0xb086:
						type=7;//zhu fu ding zhi qie huang
						point=&cuofengvalue_switch_onetimeprog;
						break;
			
	 	}
// if(code==0xbd02)
// 	if(RFLAG_DEMANGCLR_LOCK!=0)//add 2005-128
//		value1=0;
if(type>2)
	if(type<8)// lock day==0
		{
			data_addr.addri=FM_LOCK_CUOFENGSHIDUAN+type-3;
			read(FM,1);
			if(wr_data[0]!=0)
				value1=0;
		}
if(1==value1)
{
	if((progfunction_security==yes)&&(RSTATUS_RUN==TEST)) 
	{ switch(code)
	 	{
	 	case 0xb000:	// set data
		case 0xb001:// set time 
		case 0xb00f:// set data time
		case 0xB030: // set  zhengxiangyougong
		case 0xB031:// set fanxiang yougong 
		case 0xB032:// set zhengxiang wugong
		case 0xB033:// set fanxiang wugong
		case 0xBD00:// zongqing
		case 0xBD01:// dianliang didu qingling 
		case 0xBD02:// xuliang qingling 
		// case 0xBD03:// shijian (event) qingling
		// case 0xBD04: // fuhejilu qingling
			 	if (0!=*(rbuffer+12))
					{
						send_write_err_v10(0x01);
						return 1;
			 		}
				break;
		default:
			break;
		 	
		}
	}
}
	
if(1==value1)
	{	
	// add by zhanglong ---->start
	// wan neng xie ming ling 
	// ============================== wan neng xie ming ling ======
	
	if (0xfe00==code)
		{
			type=a[0];
			l1=a[1];
			l2=a[2];
			l=a[3];
			uselen=a[4];
			len=len-11;
			if (uselen!=len)
				value1=0;
			if(uselen>100) 
				value1=0;
			
			switch(type)
				{
					case RRAM:
					case FM:
					case EP1:
//					case EP2:
					case EPLOCK:
								break;
					default:
						        value1=0;
								break;
				}
			if(1==value1)
				{
					value=1;
					data_addr.addrc[3]=0;
					data_addr.addrc[2]=l;
					data_addr.addrc[0]=l1;
					data_addr.addrc[1]=l2;
					for (l=0;l<uselen;l++)
						wr_data[l]=a[l+5];
					if (1==write(type,uselen))
						send_write_ok_v10();
					else 
						send_write_err_v10(01);
				}
			else
				{
					send_write_err_v10(01);
				}
			return 1;
			
		}
	
	// ============================wan neng xie ming ling ==============
	// add by zhanglong ---->end



	
		value1=table_v10write_count;// table must connect   ok
		for(l=0;l<table_v10write_count;l++)
			{
				if(table_v10write[l].code==code)// search command
					{
						value1=l;
						break;
					}
			}
		if(value1<table_v10write_count)
		     {
		       uselen=table_v10write[value1].len;
			useaddr=table_v10write[value1].waddr;
			if(uselen<=100)
				{
					len=len-6;
					l=0;
					// add by zhanglong ---->start
					// teli chuli
					// DISPLAY AUTO  and DISPLAY KEY
					if(((0xc210<code )&&( code<0xc216))||((0xc220<code )&&( code<0xc226)))
						{
						if (0==(len%4))
							{
							for(l1=len;l1<uselen;l1++)
								{
								a[l1]=0x00;
								}
							len=uselen;
							}
						}
					// Feilv 0xc01f;0xc02f;0xc03f;0xc04f;0xc05f
					if((0xc01f<=code)&&(code<=0xc05f))
						{
						if (0==(len%3))
							{
							for(l1=len;l1<uselen;l1++)
								{
								a[l1]=0x00;
								}
							len=uselen;
							}
							
						}
					// fuheqi 0xc0df ;jiejiari 0xc11f \0xc12f  teshu chuli
					if ((0xc11f==code)||(0xc12f==code)||(0xc0df==code))
						{
						if(0==(len%3))
							for(l1=len;l1<uselen;l1++)
								{
								a[l1]=0x00;
								}
							len=uselen;
						}
					if(uselen==len)
						{
					// add by zhanglong ---->end
							l=0;
							if(uselen==0)
								l=1;
							else
								{
									l=v10writeok(&a[0],uselen,table_v10write[value1].format);
									// add by zhanglong ----start>
									if (0xb063==table_v10write[value1].code)
										{
										for(l1=0;l1<4;l1++)
											{
											if((a[l1]>0x16)||(0==a[l1]))
												l=0;
											}
										}
									// add by zhanglong ---->end
										
								}
						}
					if(1==l)
						{     
							value=1;
							if(uselen!=0)
								{
									switch(table_v10write[value1].type)
										{
											case w_rfm:	
												if(code==0xb084)
													set_cuofengyuyue_envent_before(1);
												for(l=0;l<uselen;l++)
													RAM[useaddr+l]=a[l];
												copy_ram_to_fm(useaddr,uselen,useaddr);
												onetime_biancheng(1,0x10,table_v10write[value1].recordecode);
												if(code>0xb07f)
													if(code<0xb087)
														if(code!=0xb084)
															set_cuofengyuyue_envent_end(0);
												if(code==0xb084)
													set_cuofengyuyue_envent_end(1);
												if(type>2)
													if(type<8)
														*point=1;//cuo feng yu yue set ok
												send_write_ok_v10();
												break;
											case w_rfmfm1:
												if((code==0xc11f)||(code==0xc12f))// jie jia ri
													set_before(TYPE_EP1_HOLIDAYPROGRAM_RECORD);
												if(code==0xc0df)// fu he qi
													set_before(TYPE_EP1_SEASONPROGRAM_RECORD);
												if(code>0xc01e)
													if(code<0xc060)// price
														{current_num_price_prog=(codel>>4)-1;
													         set_before(TYPE_EP1_PRICEPROGRAM_RECORD);
														}
												if(code==0xc001)
													set_before(TYPE_FM_WORKOFFPROGRAM_RECORD);
												if(code==0xb022)
													set_before(TYPE_FM_CHAOBIAORIPROGRAM_RECORD);
												if(code>0xb02f)
													if(code<0xb034)
														set_before(TYPE_FM_KVARHMODEPROGRAM_RECORD);
												if((code==0xb032)||(code==0xb033)) 
													uselen=1;//wugongzuhe  qiang xing zhuan huan zi jie shu
												if(code==0xb063) 
													uselen=4;//mochong 4 ge  qiang xing zhuan huan zi jie shu

													// dong jie yong
												l2=1;
												if(code!=0xb026) 
													l2=0;
												for(l=0;l<4;l++)
													{
														if(a[l]!=0x99)
															l2=0;
													}
												if(1==l2)
													rdongjie_qingqiu=1;
												else
													{
														for(l=0;l<uselen;l++)
															RAM[useaddr+l]=a[l];												
														copy_ram_to_fm_fm1(useaddr,uselen,useaddr);
														onetime_biancheng(1,0x10,table_v10write[value1].recordecode);
													}
												if(code==0xb012) 
													recoder_shiduan_yonghuhao_biaohao_addr(recorde_biaoaddr);
                 	   									if(code==0xb010) 
													recoder_shiduan_yonghuhao_biaohao_addr(recorde_biaohao);
                      									if(code==0xb011) 
                             									recoder_shiduan_yonghuhao_biaohao_addr(recorde_yonghuhao);  
												if(code==0xb022)
													set_end(TYPE_FM_CHAOBIAORIPROGRAM_RECORD,1);
												if(code>0xb02f)
													if(code<0xb034)
														set_end(TYPE_FM_KVARHMODEPROGRAM_RECORD,1);
												if(code==0xc001)
													set_end(TYPE_FM_WORKOFFPROGRAM_RECORD,1);
												if(code>0xc01e)
													if(code<0xc060)
														set_end(TYPE_EP1_PRICEPROGRAM_RECORD,1);
												if((code==0xc11f)||(code==0xc12f))
													set_end(TYPE_EP1_HOLIDAYPROGRAM_RECORD,1);
												if(code==0xc0df)
													set_end(TYPE_EP1_SEASONPROGRAM_RECORD,1);
												if(type==2)
													shiduan_onetimeprog=1;
												if(*rdisplay_info_status!=INFO_GUANGBO)
													send_write_ok_v10();
												break;
											case w_ep1:
												if(uselen==100)
													{
														for(l=0;l<4;l++)

															{
																for(l1=0;l1<25;l1++)

																	wr_data[l1]=a[25*l+l1];


																data_addr.addri=useaddr+25*l;
																write(EP1,25);
																watchdog();
															}														

													}
												else
													{
														for(l=0;l<uselen;l++)
															wr_data[l]=a[l];
														data_addr.addri=useaddr;
														write(EP1,uselen);
													}
												onetime_biancheng(1,0x10,table_v10write[value1].recordecode);
												if(table_v10write[value1].recordecode>0x63)
													if(table_v10write[value1].recordecode<0x68)
														gdisplay_auto_key_comm();													
												send_write_ok_v10();

⌨️ 快捷键说明

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