📄 setscr.cpp
字号:
#include "SetScr.h"
#include "lcd.h"
#include "inputedit.h"
#include "string.h"
//--------------输入编辑框--------------
uCHAR Current_EditItem=0;
uCHAR Modify_PassWord=0;
uCHAR PassInput_Error=0;
uCHAR PassInput_Differ=0;
//--------------------显示设定菜单-----------------
void DisPlay_SetMenu()
{
uINT i=0;
char String[8][32]={"电池维护","报警维护","通讯设置","系统校时","口令修改","音响参数","记录删除","出厂设置"};
Clear_Lcd();
DisPlay_TopLabel(1);
DisPlay_StartView(1);//1为返回, 0为开始 位置固定
for(i=0;i<8;i++)
{
if(i%3==0)
Display_String(8,96+64*(i/3),String[i],1);
else if(i%3==1)
Display_String(88,96+64*(i/3),String[i],1);
else if(i%3==2)
Display_String(168,96+64*(i/3),String[i],1);
}
//-------------显示图标按钮----------
Display_SetBitmap();
}
//----------------------------------
void Set_BatteryPara(uCHAR Battery_No,uCHAR KeyCode)
{
uINT i=0;
uCHAR bFlag=0;
char TempString[32];
char Battery_String[4][32]={"阀控式铅酸蓄电池","防酸式铅酸蓄电池",
"高倍率铬镍蓄电池","中倍率铬镍蓄电池"};
char String[14][32]={"电池类型:","电池数量:","电池容量:","浮充电压:","均充电压:",
"充电限流:","定时均充:","均充周期:","均充时间:",
"转换电流:","转换时间:","温度补偿:","补偿基准:","补偿系数:"};
char Select_String[2][32]={"否","是"};
char Base_String[2][32]={"20℃","25℃"};
sFLOAT TempFloat=220.0;
if(System_Voltage==0)
TempFloat=220.0;
else if(System_Voltage==1)
TempFloat=110.0;
else if(System_Voltage==2)
TempFloat=48.0;
else
TempFloat=24.0;
//------------------每次进入新菜单时都要将Key_MenuItem置0------------------
if(Key_MenuItem==0)//键盘输入框不可见
{
//-------------------键嘛值从21-35----------------------
if((KeyCode<=35)&&(KeyCode>=21))
{
//---------------------显示键盘输入框-----------------------
Display_KeyFrame();//
if((KeyCode==21)||(KeyCode==27)||(KeyCode==32)||(KeyCode==33))
strcpy(TempString,"请选择");
else
strcpy(TempString,"请输入");
strcat(TempString,String[KeyCode-21]);
Display_String(32,112,TempString,0);
Current_EditItem=KeyCode-21;
switch(Current_EditItem)
{
case 0: //电池了行
{
Init_SelectText(ValueSelect[0],32,128,4,Battery_Index[Battery_No],1);
for(i=0;i<4;i++)
strcpy(ValueSelect[0]->TempString[i],Battery_String[i]);
Display_String(ValueSelect[0]->StartX,ValueSelect[0]->StartY,ValueSelect[0]->TempString[Battery_Index[Battery_No]],1);
break;
}
case 1: //电池只数
{
Init_EditText(ValueEdit[0],32,128,3,0,1,128,2);
GetString_FromInt(Battery_CellCount[Battery_No],ValueEdit[0]->TempString);
strcpy(TempString,ValueEdit[0]->TempString);
strcat(TempString,"只");
Display_String(ValueEdit[0]->StartX,ValueEdit[0]->StartY,TempString,0);
break;
}
case 2: //电池容量
{
Init_EditText(ValueEdit[0],32,128,4,0,1,3000,20);
GetString_FromInt(Full_Capacity[Battery_No],TempString);
strcpy(ValueEdit[0]->TempString,TempString);//去掉单位
strcat(TempString,"Ah");
Display_String(ValueEdit[0]->StartX,ValueEdit[0]->StartY,TempString,0);
break;
}
case 3: //浮充电压
{
Init_EditText(ValueEdit[0],32,128,4,0,1,1.2*TempFloat,TempFloat);
GetString_FromFloat(Float_SetVoltage[Battery_No],0,TempString);
strcpy(ValueEdit[0]->TempString,TempString);
strcat(TempString,"V");
Display_String(ValueEdit[0]->StartX,ValueEdit[0]->StartY,TempString,0);
break;
}
case 4: //均充电压
{
Init_EditText(ValueEdit[0],32,128,4,0,1,1.28*TempFloat,1.05*TempFloat);
GetString_FromFloat(Equal_SetVoltage[Battery_No],0,TempString);
strcpy(ValueEdit[0]->TempString,TempString);
strcat(TempString,"V");
Display_String(ValueEdit[0]->StartX,ValueEdit[0]->StartY,TempString,0);
break;
}
case 5: //限流值
{
Init_EditText(ValueEdit[0],32,128,4,0,1,0.25*Full_Capacity[Battery_No],0.08*Full_Capacity[Battery_No]);
GetString_FromFloat(Current_SetVoltage[Battery_No],0,TempString);
strcpy(ValueEdit[0]->TempString,TempString);
strcat(TempString,"A");
Display_String(ValueEdit[0]->StartX,ValueEdit[0]->StartY,TempString,1);
break;
}
case 6://定时均充
{
Init_SelectText(ValueSelect[0],32,128,2,Has_Periodic[Battery_No],1);
for(i=0;i<2;i++)
strcpy(ValueSelect[0]->TempString[i],Select_String[i]);
Display_String(ValueSelect[0]->StartX,ValueSelect[0]->StartY,ValueSelect[0]->TempString[Has_Periodic[Battery_No]],1);
break;
}
case 7://均充周期
{
Init_EditText(ValueEdit[0],32,128,3,0,1,180,90);
GetString_FromInt(Periodic_Time[Battery_No],TempString);
strcpy(ValueEdit[0]->TempString,TempString);//去掉单位
strcat(TempString,"天");
Display_String(ValueEdit[0]->StartX,ValueEdit[0]->StartY,TempString,0);
break;
}
case 8://均充时间
{
Init_EditText(ValueEdit[0],32,128,3,0,1,12,5);
GetString_FromInt(ECharge_Time[Battery_No],TempString);
strcpy(ValueEdit[0]->TempString,TempString);//去掉单位
strcat(TempString,"小时");
Display_String(ValueEdit[0]->StartX,ValueEdit[0]->StartY,TempString,0);
break;
}
case 9://转换电流
{
Init_EditText(ValueEdit[0],32,128,5,0,1,0.05*Full_Capacity[Battery_No],0.01*Full_Capacity[Battery_No]);
GetString_FromFloat(Change_Current[Battery_No],1,TempString);
strcpy(ValueEdit[0]->TempString,TempString);
strcat(TempString,"A");
Display_String(ValueEdit[0]->StartX,ValueEdit[0]->StartY,TempString,0);
break;
}
case 10: //转换时间
{
Init_EditText(ValueEdit[0],32,128,1,0,1,3,1);
GetString_FromInt(Change_SetTime[Battery_No],TempString);
strcpy(ValueEdit[0]->TempString,TempString);//去掉单位
strcat(TempString,"小时");
Display_String(ValueEdit[0]->StartX,ValueEdit[0]->StartY,TempString,0);
break;
}
case 11: //温度补偿
{
Init_SelectText(ValueSelect[0],32,128,2,Has_TempCorrect[Battery_No],1);
for(i=0;i<2;i++)
strcpy(ValueSelect[0]->TempString[i],Select_String[i]);
Display_String(ValueSelect[0]->StartX,ValueSelect[0]->StartY,ValueSelect[0]->TempString[Has_TempCorrect[Battery_No]],1);
break;
}
case 12: //补偿基准
{
Init_SelectText(ValueSelect[0],32,128,2,Temp_Base[Battery_No],1);
for(i=0;i<2;i++)
strcpy(ValueSelect[0]->TempString[i],Base_String[i]);
Display_String(ValueSelect[0]->StartX,ValueSelect[0]->StartY,ValueSelect[0]->TempString[Temp_Base[Battery_No]],1);
break;
}
case 13: //补偿系数
{
Init_EditText(ValueEdit[0],32,128,4,0,1,0.5,0.1);
GetString_FromFloat(Temp_CompFactor[Battery_No],1,TempString);
strcpy(ValueEdit[0]->TempString,TempString);
strcat(TempString,"V/℃");
Display_String(ValueEdit[0]->StartX,ValueEdit[0]->StartY,TempString,0);
break;
}
}
Key_MenuItem=1;
}
//--
}
else
{
if((KeyCode<=18))
{
switch(Current_EditItem)
{
case 0: //电池了行
{
if(SelectDeal(KeyCode,ValueSelect[0],0))
{
bFlag=1;
if(Battery_Index[Battery_No]!=ValueSelect[0]->Current_Index)
{
Battery_Index[Battery_No]=ValueSelect[0]->Current_Index;
//GetString_FromInt(Battery_Index[Battery_No],TempString);
//Write_Config(315+Battery_No,TempString);
}
}
break;
}
case 1: //电池只数
{
if(InputDeal(KeyCode,ValueEdit[0],0)==1)
{
bFlag=1;
Battery_CellCount[Battery_No]=Get_IntFromString(ValueEdit[0]->TempString);
//Write_Config(319+Battery_No,ValueEdit[0]->TempString);
}
else if(InputDeal(KeyCode,ValueEdit[0],0)==2)//输入无效
{
GetString_FromInt(Battery_CellCount[Battery_No],ValueEdit[0]->TempString);
strcpy(TempString,ValueEdit[0]->TempString);
strcat(TempString,"只");
Display_String(ValueEdit[0]->StartX,ValueEdit[0]->StartY,TempString,0);
}
break;
}
case 2: //电池容量
{
if(InputDeal(KeyCode,ValueEdit[0],0)==1)
{
bFlag=1;
Full_Capacity[Battery_No]=Get_IntFromString(ValueEdit[0]->TempString);
//Write_Config(317+Battery_No,ValueEdit[0]->TempString);
}
else if(InputDeal(KeyCode,ValueEdit[0],0)==2)
{
GetString_FromInt(Full_Capacity[Battery_No],TempString);
strcpy(ValueEdit[0]->TempString,TempString);//去掉单位
strcat(TempString,"Ah");
Display_String(ValueEdit[0]->StartX,ValueEdit[0]->StartY,TempString,0);
}
break;
}
case 3: //浮充电压
{
if(InputDeal(KeyCode,ValueEdit[0],1)==1)
{
bFlag=1;
Float_SetVoltage[Battery_No]=Get_FloatFromString(ValueEdit[0]->TempString);
//Write_Config(321+Battery_No,ValueEdit[0]->TempString);
}
else if(InputDeal(KeyCode,ValueEdit[0],1)==2)
{
GetString_FromFloat(Float_SetVoltage[Battery_No],0,TempString);
strcpy(ValueEdit[0]->TempString,TempString);
strcat(TempString,"V");
Display_String(ValueEdit[0]->StartX,ValueEdit[0]->StartY,TempString,0);
}
break;
}
case 4: //均充电压
{
if(InputDeal(KeyCode,ValueEdit[0],1)==1)
{
bFlag=1;
Equal_SetVoltage[Battery_No]=Get_FloatFromString(ValueEdit[0]->TempString);
//Write_Config(323+Battery_No,ValueEdit[0]->TempString);
}
else if(InputDeal(KeyCode,ValueEdit[0],1)==2)
{
GetString_FromFloat(Equal_SetVoltage[Battery_No],0,TempString);
strcpy(ValueEdit[0]->TempString,TempString);
strcat(TempString,"V");
Display_String(ValueEdit[0]->StartX,ValueEdit[0]->StartY,TempString,0);
}
break;
}
case 5: //限流值
{
if(InputDeal(KeyCode,ValueEdit[0],1)==1)
{
bFlag=1;
Current_SetVoltage[Battery_No]=Get_FloatFromString(ValueEdit[0]->TempString);
//Write_Config(325+Battery_No,ValueEdit[0]->TempString);
}
else if(InputDeal(KeyCode,ValueEdit[0],1)==2)
{
GetString_FromFloat(Current_SetVoltage[Battery_No],0,TempString);
strcpy(ValueEdit[0]->TempString,TempString);
strcat(TempString,"V");
Display_String(ValueEdit[0]->StartX,ValueEdit[0]->StartY,TempString,0);
}
break;
}
case 6://定时均充
{
if(SelectDeal(KeyCode,ValueSelect[0],0))
{
bFlag=1;
if(Has_Periodic[Battery_No]!=ValueSelect[0]->Current_Index)
Has_Periodic[Battery_No]=ValueSelect[0]->Current_Index;
//GetString_FromInt(Has_Periodic[Battery_No],TempString);
//Write_Config(335+Battery_No,TempString);
}
break;
}
case 7://均充周期
{
if(InputDeal(KeyCode,ValueEdit[0],0)==1)
{
bFlag=1;
Periodic_Time[Battery_No]=Get_IntFromString(ValueEdit[0]->TempString);
//Write_Config(333+Battery_No,ValueEdit[0]->TempString);
}
else if(InputDeal(KeyCode,ValueEdit[0],0)==2)
{
GetString_FromInt(Periodic_Time[Battery_No],TempString);
strcpy(ValueEdit[0]->TempString,TempString);//去掉单位
strcat(TempString,"天");
Display_String(ValueEdit[0]->StartX,ValueEdit[0]->StartY,TempString,0);
}
break;
}
case 8://均充时间
{
if(InputDeal(KeyCode,ValueEdit[0],0)==1)
{
bFlag=1;
ECharge_Time[Battery_No]=Get_IntFromString(ValueEdit[0]->TempString);
//Write_Config(337+Battery_No,ValueEdit[0]->TempString);
}
else if(InputDeal(KeyCode,ValueEdit[0],0)==2)
{
GetString_FromInt(ECharge_Time[Battery_No],TempString);
strcpy(ValueEdit[0]->TempString,TempString);//去掉单位
strcat(TempString,"小时");
Display_String(ValueEdit[0]->StartX,ValueEdit[0]->StartY,TempString,0);
}
break;
}
case 9://转换电流
{
if(InputDeal(KeyCode,ValueEdit[0],1)==1)
{
bFlag=1;
Change_Current[Battery_No]=Get_FloatFromString(ValueEdit[0]->TempString);
//Write_Config(339+Battery_No,ValueEdit[0]->TempString);
}
else if(InputDeal(KeyCode,ValueEdit[0],1)==2)
{
GetString_FromFloat(Change_Current[Battery_No],1,TempString);
strcpy(ValueEdit[0]->TempString,TempString);
strcat(TempString,"A");
Display_String(ValueEdit[0]->StartX,ValueEdit[0]->StartY,TempString,0);
}
break;
}
case 10: //转换时间
{
if(InputDeal(KeyCode,ValueEdit[0],0)==1)
{
bFlag=1;
Change_SetTime[Battery_No]=Get_IntFromString(ValueEdit[0]->TempString);
//Write_Config(341+Battery_No,ValueEdit[0]->TempString);
}
else if(InputDeal(KeyCode,ValueEdit[0],0)==2)
{
GetString_FromInt(Change_SetTime[Battery_No],TempString);
strcpy(ValueEdit[0]->TempString,TempString);//去掉单位
strcat(TempString,"小时");
Display_String(ValueEdit[0]->StartX,ValueEdit[0]->StartY,TempString,0);
}
break;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -