void SetVoltLevel(void) { unchar s[5]; switch(MenuStatus) { case 2: if(CURPATH.CurrentDirStarClusID !=0) { CURPATH.CurrentDirStarClusID = 0; } Str_8x16(1, 0,"添加电压等级" ); if((ReadFile("CONFIG TXT", Temp, 22,2)!=0xff))//取出系统默认的电压等级 { s[0] = *(unint*)Temp/1000+0x30; s[1] = (*(unint*)Temp%1000)/100+0x30; s[2] = ((*(unint*)Temp%1000)%100)/10+0x30; s[3] = ((*(unint*)Temp%1000)%100)%10+0x30; s[4] = '\0'; if(((unint)Temp !=2)||((unint)Temp !=6)||((unint)Temp !=12)) { Str_8x16(1,0, "非法的电压等级"); return; } Str_8x16(1,0, Temp); if(*(unint*)Temp ==2) Index =0; if((unint)Temp[0]==6 ) Index = 1; if((unint)Temp[0]==12) Index =2; DispFanBai(1,0,4); MenuStatus=1000; } else { //配置文件不存在。 return; } break; case 1000: switch(GetKey1()) { case ENTER_KEY: if(ModefyModel ==0) { if(ModifyFile("CONFIG TXT", &Temp[Index],64+CurrentBatGrp*64+16, 2) !=0xff) { Str_8x16(1,0,"设置已经保存成功"); return; } } return; //break; case UP_KEY: if (Index ==2) Index =0; else Index++; s[0] = BatVoltLevel[Index]/10; s[1] = BatVoltLevel[Index]%10; s[2] = 0; Str_8x16(1,0,s); DispFanBai(1,0,2); break; case DOWN_KEY: if (Index ==0) Index =2; else Index--; s[0] = BatVoltLevel[Index]/10; s[1] = BatVoltLevel[Index]%10; s[2] = 0; Str_8x16(1,0,s); DispFanBai(1,0,2); break; case ESC_KEY: return; //break; default: break; //break; } } }
//************************************** //功能 :设置ip地址,子网掩码,网关 //************************************ void SetIp(void) { unchar s[5]; switch(MenuStatus) { case 2: if(CURPATH.CurrentDirStarClusID !=0) { CURPATH.CurrentDirStarClusID = 0; } unint32 offset; if(pCurrentMenu == &MyMenu[16])//如果这是设置IP地址。 { Str_8x16(0, 0,"IP地址设置" ); offset =4; } if(pCurrentMenu == &MyMenu[17])//如果这是设置子网掩码。 { Str_8x16(0, 0,"子网掩码设置" ); offset=8; } if(pCurrentMenu == &MyMenu[18])//如果这是设置网关地址。 { Str_8x16(0, 0,"网关设置" ); offset=12; } if((ReadFile("CONFIG TXT", Temp, offset,4)!=0xff)) { //显示ip s[0] = Temp[0]/100+0x30; s[1] = (Temp[0]%100)/10+0x30; s[2] = (Temp[0]%100)%10+0x30; s[3]= '.'; s[4] =0; Str_8x16(1, 0, s); s[0] = Temp[1]/100+0x30; s[1] = (Temp[1]%100)/10+0x30; s[2] = (Temp[1]%100)%10+0x30; s[3]= '.'; s[4] = 0; Str_8x16(1, 4, s); s[0] = Temp[2]/100+0x30; s[1] = (Temp[2]%100)/10+0x30; s[2] = (Temp[2]%100)%10+0x30; s[3]= '.'; s[4] = 0; Str_8x16(1, 8, s); s[0] = Temp[3]/100+0x30; s[1] = (Temp[3]%100)/10+0x30; s[2] = (Temp[3]%100)%10+0x30; s[3] = '\0'; Str_8x16(1, 12, s); //反白显示第一项。 Index=0; DispFanBai(1,0,3); MenuStatus =1000; } else { //文件不存在提示文件不存在确定键返回; return; } break; case 1000: switch(GetKey1()) { case ENTER_KEY: if(Index ==3) { //保存数据到sd卡并退到上级菜单。 if(pCurrentMenu == &MyMenu[16])//如果这是设置IP地址。 { ModifyFile("CONFIG TXT", Temp,4, 4); MenuStatus =3; return; } if(pCurrentMenu == &MyMenu[18])//如果这是设置网关地址。 { ModifyFile("CONFIG TXT", Temp,12, 4); MenuStatus =3; return; } if(pCurrentMenu == &MyMenu[17])//如果这是设置子网掩码还需知道子网掩码的合法性。 { unint32 mask; mask=(unint32)&Temp[0]; if(((mask-1)|mask)==0xffffffff)//(mask -1 | mask) == 0xFFFFFFFF ,如果是TRUE就是子网掩码,是FALSE就不是子网掩码。 { //是合法的子网掩码;保存退出。 ModifyFile("CONFIG TXT", Temp,8, 4); MenuStatus =3; return; } MenuStatus =3; return;//放弃不保存退出。 } } else //改变反白显示的位置 DispFanBai(1,Index*4,3); //取消原先的反白 Index++; DispFanBai(1,Index*4,3);//改为当前的反白 break; case UP_KEY: if(Temp[Index]==255) Temp[Index]=0; else Temp[Index]++; s[0] = Temp[Index]/100+0x30; s[1] = (Temp[Index]%100)/10+0x30; s[2] = (Temp[Index]%100)%10+0x30; s[4] = '\0'; Str_8x16(1, Index*4, s); DispFanBai(1,Index*4,3); break; case DOWN_KEY: if(Temp[Index]==0) Temp[Index] = 255; else Temp[Index]--; s[0] = Temp[Index]/100+0x30; s[1] = (Temp[Index]%100)/10+0x30; s[2] = (Temp[Index]%100)%10+0x30; s[4] = '\0'; Str_8x16(1, Index*4, s); DispFanBai(1,Index*4,3); break; case ESC_KEY: if(Index ==0) { } else if(Index==3) { ////放弃数据并退到上级菜单 MenuStatus = 3; return; } else { //改变反白显示的位置 DispFanBai(1,Index*4,3); //取消原先的反白 Index--; DispFanBai(1,Index*4,3);//改为当前的反白 } break; default: break; } break; default: break; } }
//----------------------------------------------------------------------------- bool dFileTouch(const char * name) { return ModifyFile(name, TOUCH); }
//********************************************** // 1.3.2功能 电池数量 //功能:设置当前电池组的电池数量。 //****************************** SetCurrentBatNumbers() { unchar s[5]; switch(MenuStatus) { case 2: if(CURPATH.CurrentDirStarClusID !=0) { CURPATH.CurrentDirStarClusID = 0; } Str_8x16(1, 0,"添加电池数量" ); if(ReadFile("CONFIG TXT", Temp, 20,2)!=0xff) { s[0] = (unint)Temp/1000+0x30; s[1] = ((unint)Temp%1000)/100+0x30; s[2] = (((unint)Temp%1000)%100)/10+0x30; s[3] = (((unint)Temp%1000)%100)%10+0x30; s[4] = '\0'; Str_8x16(1,0, Temp); DispFanBai(1,0,4); MenuStatus=1000; } else { //配置文件不存在。 } break; case 1000: switch(GetKey1()) { case ENTER_KEY: if(ModefyModel ==0) { if(ModifyFile("CONFIG TXT", Temp,64+CurrentBatGrp*64, 2) !=0xff) { Str_8x16(1,0,"设置已经保存成功"); return; } } return; //break; case UP_KEY: if((unint)Temp==9999) *(unint*)Temp=0; else (unint)Temp[0]++; s[0] =(unint) Temp/1000+0x30; s[1] = ((unint)Temp%1000)/100+0x30; s[2] = (((unint)Temp%1000)%100)/10+0x30; s[3] = (((unint)Temp%1000)%100)%10+0x30; s[4] = '\0'; Str_8x16(1,0, Temp); DispFanBai(1,0,4); break; case DOWN_KEY: if((unint)Temp ==0) *(unint*)Temp=9999; else (unint)Temp[0]--; s[0] =(unint) Temp/1000+0x30; s[1] = ((unint)Temp%1000)/100+0x30; s[2] = (((unint)Temp%1000)%100)/10+0x30; s[3] = (((unint)Temp%1000)%100)%10+0x30; s[4] = '\0'; Str_8x16(1,0, Temp); DispFanBai(1,0,4); break; case ESC_KEY: break; default: break; //break; } } }
//----------------------------------------------------------------------------- bool dFileDelete(const char * name) { return ModifyFile(name, DELETE); }