[Dashboard\Toyota\Hiace\Hiace ER5911 Yazaki 113]

Size(320,280); // ширина и высота

Form
{
    Group("Пробег",5,5,150,50)
 	{
	Digit(Distance," ",5,18,90);
	}
	Group("",5,55,150,30)
	{
	CheckBox(Miles2Km,"Пересчитать Мили в Км",5,10);
	}
	Group("",165,55,150,30)
	{
	CheckBox(Km2Miles,"Пересчитать Км в Мили",5,10);
	}	
     	Group("Информация",5,88,310,45)
    	{Label(message," ",0,18);}
    	Group("Описание",5,135,310,100) 
    	{
	Label(lb4,"Калькулятор пробега для Toyota Hiace ER5911.",0,20);
        Label(lb5,"EEPROM ER5911, панель Yazaki.",0,35);
        Label(lb2,"Введите нужное значение в окне ПРОБЕГ",0,50);
        Label(lb3,"и нажмите кнопку <Применить>.",0,65);
    	}
    Picture(Picture1,"Toyota.bmp",160,5,0,0);
   

}

OnShow

{	Message.Bold=1;
    	Message.Alignment=1;
	// проверяем правильность дампа
        Var0=0x71; // смещение для множителя группы
	Var1=@0x71;
	Var3=0; // счетчик ошибок
	while(Var0!=0x77)
	{	        
	Var2=@Var0; 	
	if(Var2!=Var1) {Var3=Var3+1;}
	Var0=Var0+1;
      	}
	
	if (Var3=0)
	{
	Var1=(Var1+1)&0xFF; // вычисление множителя
	message.Color = 0xFF0000;
	message= "Дамп ОК. Введите пробег.";
	Var3=@0x70; //младший байт пробега
       	Var4=0; // точное вычисление пробега, добавка
	Var5=0; // точное вычисление пробега, смещение
		while(Var5<=0x70)
		{	
		Var6=@Var5;
		if(Var6!=Var3) {Var4=Var4+1;}
		Var5 = Var5+1;
		}
   	Distance=(((Var3+1)&0xFF)*113)+Var4+(Var1*28928); 
	}
	
	else
	{
        message.Color=0x0000FF;
       	Message="Неверный дамп!";
        Distance=0;   
	}

}


OnApply

{	if(Miles2Km=1) {Var4=(Distance*16093)/10000;}
	if(Km2Miles=1) {Var4=(Distance*1000000)/16093; Var14=Var4%100; if (Var14<50) {Var4=Var4/100;} else {Var4=(Var4/100)+1;}	}
	if(Miles2Km=Km2Miles) {Var4=Distance;}
	Distance=Var4;
	Var1=Distance;
    	if(Var1>999999) {message.Color=0x0000FF; Message = "Пробег должен не более 999999 км.";}

    	else	
	{ 	// разделяем алгоритм до 113 км включительно и от 113 км
		if(Var1<114) //работа по алгоритму до 113 км включительно	
		{	Var2=0;
			while(Var2<Var1) 
				{	
				@Var2=0x00;
				Var2=Var2+1;
				}
			while(Var2<0x71) 
				{	
				@Var2=0xFF;
				Var2=Var2+1;
				}
		}
		else
		{	
			//работа по алгоритму от 113 км
			Var0=((Distance-113)/113);
        		Var1=((Distance-113)%113); // Вычисление добавки
        		Var2=0;
			//запись старшей группы
			while(Var2<Var1) 
				{
				@Var2=Var0+1;
				Var2=Var2+1;
		        	}
			//запись младшей группы
			while(Var2<0x71) 
				{
				@Var2=Var0;
				Var2=Var2+1;
		        	}
		}
		
		//запись множителя группы
		Var0=0x71; // смещение для множителя группы
		Var2=((Distance/28928)+0xFF)&0xFF; 
		while(Var0!=0x77)
		{	        
		@Var0=Var2; 	
		Var0=Var0+1;
      		}
        	message.Color=0xFF0000;
		message="Дамп ОК. Новый пробег записан.";
	}
}









