📄 flowunit.c
字号:
** 修 改 人:
** 日 期:
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void FuncKeyDone(void)
{
if (gbStarted || gbLogo) // 在启动键按下后或在显示LOGO标志时不能执行功能键处理程序
return;
gnParamID = pnFillTime; // 设置第一个参数的序号
gbParamSel = !gbParamSel; // 进入或退出参数选择状态
gbParamSet = FALSE; // 清除参数修改标志(尚未进入参数修改状态)
if (gbParamSel) // 已进入参数选择状态,载入第一个参数的符号名称及参数值
LoadParam();
}
// ------------------------------------------------------------------------------------------------------
/********************************************************************************************************
** 函数名称: SetKeyDone
** 功能描述: 处理设置键。当在许可范围内按下设置键后,即可对当前参数进行修改(上下键)或移位(左右键)。
** 输 入: 无
** 输 出: 无
** 全局变量: gbParamSel>>>>>>>>>指示当前是否工作在参数选择状态,0~不是,1~是;
** gbParamSet>>>>>>>>>指示当前是否工作在参数修改状态,0~不是,1~是;
** gnParamID>>>>>>>>>>代表当前用户选择的参数在参数组中的序号,取值0~PARAMS_NUMS-1;
** gnCursorID>>>>>>>>>代表当前选择的修改位(闪烁位)的序号,取值0~4;
** gnSegBuf[1][]>>>>>>代表两组段选缓冲区在SEG_CODE段选码数组中的数字索引。
** 全局常量:无
** 调用模块: ReadBytes()>>>>>>>>从STC89C54RD+单片机EEPROM读取连续K个字节数据到指定缓冲区中;
** WriteBytes()>>>>>>>将缓冲区中的连续K个字节数据写入STC89C54RD+单片机EEPROM中。
** 其它说明:
**
** 作 者: 罗建
** 日 期: 2007年02月09日
**-------------------------------------------------------------------------------------------------------
** 修 改 人: 罗建
** 日 期: 2007年03月23日
**-------------------------------------------------------------------------------------------------------
** 修 改 人: 罗建
** 日 期: 2008年06月20日,增加了流量分段系数设置功能。
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void SetKeyDone(void)
{
INT8U nBuf[5];
INT32U nAddr;
INT32U* nData;
if (gbParamSel) // 检查是否已经处于参数选择状态,若不是则退出
{
if (gbParamSet) // 检查是否已经处于参数修改状态,若是则保存数据并退出参
{ // 数修改状态
switch (gnParamID)
{
case pnFillTime: // 保存填充时间
nAddr = ADDR_FILL_TIME;
nData = &gnFillTime;
break;
case pnTestTime: // 先向EEPROM中写测试时间,如果写成功再读出来
nAddr = ADDR_TEST_TIME;
nData = &gnTestTime;
break;
case pnMaxPress: // 保存压力上限值
Encode(&nAddr, gnSegBuf[1]); // 如果设定的压力上限小于压力下限,则不允许修改
if (nAddr < gnMinPress)
return;
nAddr = ADDR_MAX_PRESS;
nData = &gnMaxPress;
break;
case pnMinPress: // 保存压力下限值
Encode(&nAddr, gnSegBuf[1]); // 如果设定的压力下限大于压力上限,则不允许修改
if (nAddr > gnMaxPress)
return;
nAddr = ADDR_MIN_PRESS;
nData = &gnMinPress;
break;
case pnMaxLeak: // 保存流量上限值
Encode(&nAddr, gnSegBuf[1]); // 如果设定的流量上限小于流量下限,则不允许修改
if (nAddr < gnMinLeak) // (2007.03.23)
return;
nAddr = ADDR_MAX_LEAK;
nData = &gnMaxLeak;
break;
case pnMinLeak: // 保存流量下限值
Encode(&nAddr, gnSegBuf[1]); // 如果设定的流量下限大于流量上限,则不允许修改
if (nAddr > gnMaxLeak)
return;
nAddr = ADDR_MIN_LEAK;
nData = &gnMinLeak;
break;
case pnLeakArea1: // 保存第1段分段流量最大值(2008.06.20)
Encode(&nAddr, gnSegBuf[1]); // 如果设定的第1段流量分段最大流量大于第2段分段最大流量,则不允许修改
if (nAddr > gnLeakArea[1])
return;
nAddr = ADDR_LEAK_AREA1;
nData = &gnLeakArea[0];
break;
case pnLeakCoef1: // 保存第1段流量比例系数(2008.06.20)
Encode(&nAddr, gnSegBuf[1]); // 如果设定的流量比例系数大于100.00,则不允许修改
if (nAddr > 10000)
return;
nAddr = ADDR_LEAK_COEF1;
nData = &gnLeakCoef[0];
break;
case pnLeakArea2: // 保存第2段分段流量最大值(2008.06.20)
Encode(&nAddr, gnSegBuf[1]); // 如果设定的第2段流量分段最大流量大于第3段分段最大流量,则不允许修改
if (nAddr > gnLeakArea[2])
return;
nAddr = ADDR_LEAK_AREA2;
nData = &gnLeakArea[1];
break;
case pnLeakCoef2: // 保存第2段流量比例系数(2008.06.20)
Encode(&nAddr, gnSegBuf[1]); // 如果设定的流量比例系数大于100.00,则不允许修改
if (nAddr > 10000)
return;
nAddr = ADDR_LEAK_COEF2;
nData = &gnLeakCoef[1];
break;
case pnLeakArea3: // 保存第3段分段流量最大值(2008.06.20)
Encode(&nAddr, gnSegBuf[1]); // 如果设定的第3段流量分段最大流量大于第4段分段最大流量,则不允许修改
if (nAddr > gnLeakArea[3])
return;
nAddr = ADDR_LEAK_AREA3;
nData = &gnLeakArea[2];
break;
case pnLeakCoef3: // 保存第3段流量比例系数(2008.06.20)
Encode(&nAddr, gnSegBuf[1]); // 如果设定的流量比例系数大于100.00,则不允许修改
if (nAddr > 10000)
return;
nAddr = ADDR_LEAK_COEF3;
nData = &gnLeakCoef[2];
break;
case pnLeakArea4: // 保存第4段分段流量最大值(2008.06.20)
Encode(&nAddr, gnSegBuf[1]); // 如果设定的第4段流量分段最大流量大于50.00Ln/min,则不允许修改
if (nAddr > 5000)
return;
nAddr = ADDR_LEAK_AREA4;
nData = &gnLeakArea[3];
break;
case pnLeakCoef4: // 保存第4段流量比例系数(2008.06.20)
Encode(&nAddr, gnSegBuf[1]); // 如果设定的流量比例系数大于100.00,则不允许修改
if (nAddr > 10000)
return;
nAddr = ADDR_LEAK_COEF4;
nData = &gnLeakCoef[3];
break;
}
if (WriteBytes(nAddr, 5, gnSegBuf[1])) // 先向EEPROM中写入要保存的数值,如果写成功再读出来
{
ReadBytes(nAddr, 5, nBuf);
Encode(nData, nBuf);
}
gbParamSet = FALSE;
}
else // 尚未进入参数修改状态,设置gbParamSet标志为TRUE
{
gnCursorID = 0;
gbParamSet = TRUE;
}
}
}
// ------------------------------------------------------------------------------------------------------
/********************************************************************************************************
** 函数名称: LeftKeyDone
** 功能描述: 处理左移键,将光标向左移动一位。
** 输 入: 无
** 输 出: 无
** 全局变量: gbParamSet>>>>>>>>>指示当前是否工作在参数修改状态,0~不是,1~是;
** gnCursorID>>>>>>>>>代表当前选择的修改位(闪烁位)的序号,取值0~4。
** 全局常量:无
** 调用模块: 无
** 其它说明:左移键仅在参数修改状态下有效。
**
** 作 者: 罗建
** 日 期: 2007年02月09日
**-------------------------------------------------------------------------------------------------------
** 修 改 人:
** 日 期:
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void LeftKeyDone(void)
{
if (gbParamSet) // 检查是否已经处于参数修改状态,若是则向左移动光标位置
{
if (++gnCursorID > 4)
gnCursorID = 0;
}
}
// ------------------------------------------------------------------------------------------------------
/********************************************************************************************************
** 函数名称: RightKeyDone
** 功能描述: 处理右移键,将光标向右移动一位。
** 输 入: 无
** 输 出: 无
** 全局变量: gbParamSet>>>>>>>>>指示当前是否工作在参数修改状态,0~不是,1~是;
** gnCursorID>>>>>>>>>代表当前选择的修改位(闪烁位)的序号,取值0~4。
** 全局常量:无
** 调用模块: 无
** 其它说明:右移键仅在参数修改状态下有效。
**
** 作 者: 罗建
** 日 期: 2007年02月09日
**-------------------------------------------------------------------------------------------------------
** 修 改 人:
** 日 期:
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void RightKeyDone(void)
{
if (gbParamSet) // 检查是否已经处于参数修改状态,若是则向右移动光标位置
{
if (--gnCursorID > 4)
gnCursorID = 4;
}
}
// ------------------------------------------------------------------------------------------------------
/********************************************************************************************************
** 函数名称: UpKeyDone
** 功能描述: 处理上翻键。
** 输 入: 无
** 输 出: 无
** 全局变量: gbParamSel>>>>>>>>>指示当前是否工作在参数选择状态,0~不是,1~是;
** gbParamSet>>>>>>>>>指示当前是否工作在参数修改状态,0~不是,1~是;
** gnParamID>>>>>>>>>>代表当前用户选择的参数在
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -