Files
CHJ/user/Interface/StdKeyEdit 0810.c

1306 lines
47 KiB
C
Raw Normal View History

2026-03-20 21:16:58 +08:00
#include "../main/SystemInclude.h"
//##############################################################################
#if(ENABLE_KEY_FUNCTION)
//##############################################################################
//==============================================================================
unsigned int keyDealFlag;
bool isKeyPressed, keySetPoint; // <20><><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
unsigned int timerTar;
unsigned int keyFlag, menuIndex; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><D6BE><EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD><EFBFBD>
unsigned int setKeyType, setIndex; // <20><><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD><EFBFBD>Ƕ<EFBFBD><C7B6>
unsigned int PassWord; // <20><><EFBFBD><EFBFBD>
unsigned int keyValue, keyBuff, totalTime; // <20><>ֵ<EFBFBD>ж<EFBFBD>
unsigned int modifyBit, keyFlashTime; // <20><><EFBFBD>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD>˸λ<CBB8><CEBB>ʱ<EFBFBD><CAB1>
unsigned long int setKeyBuffer; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB>浥Ԫ
unsigned long int temp_dcoefNode[DCOEF_MAX];
unsigned int temp_dcoefNum, temp_dcoefVal[DCOEF_MAX];
unsigned char setMin[6], setMax[6];
unsigned int parameterSetError;
/******************************************************************************/
const unsigned char PRTCL_Prompt[]={WORD_F, 1, WORD_NULL, WORD_NULL, WORD_P, WORD_R, WORD_T, WORD_C, WORD_L}; // F1 ͨѶЭ<D1B6><D0AD> PRTCL
const unsigned char ADDR_Prompt[]={WORD_F, 2, WORD_NULL, WORD_NULL, WORD_A, WORD_D, WORD_D, WORD_R, WORD_NULL}; // F2 <09>ӻ<EFBFBD><D3BB><EFBFBD>ַ ADDR
const unsigned char BPS_Prompt[]={WORD_F, 3, WORD_NULL, WORD_NULL, WORD_B, WORD_P, WORD_S, WORD_NULL, WORD_NULL}; // F3 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> BPS
//------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD>ࣨF11-F30<33><30>
const unsigned char OFFST_Prompt[]={WORD_F, 1, 1, WORD_NULL, WORD_O, WORD_F, WORD_F, WORD_S, WORD_T}; // F11 У׼<D0A3><D7BC><EFBFBD><EFBFBD> OFFST
const unsigned char GCF_Prompt[]={WORD_F, 1, 2, WORD_NULL, WORD_G, WORD_C, WORD_F, WORD_NULL, WORD_NULL}; // F12 GCF GCF
const unsigned char FACTR_Prompt[]={WORD_F, 1, 3, WORD_NULL, WORD_F, WORD_A, WORD_C, WORD_T, WORD_R}; // F13 <09>DZ<EFBFBD>ϵ<EFBFBD><CFB5> FACTR
const unsigned char CORR_Prompt[]={WORD_F, 1, 4, WORD_NULL, WORD_C, WORD_O, WORD_R, WORD_R, WORD_NULL}; // F14 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5> CORR
const unsigned char FS_Prompt[]={WORD_F, 1, 5, WORD_NULL, WORD_F, WORD_S, WORD_NULL, WORD_NULL, WORD_NULL}; // F15 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> FS
const unsigned char RESPS_Prompt[]={WORD_F, 1, 6, WORD_NULL, WORD_R, WORD_E, WORD_S, WORD_P, WORD_S}; // F16 <09><>Ӧʱ<D3A6><CAB1> RESPS
//------------------------------------------------------------------------------
const unsigned char CUTF_Prompt[]={WORD_F, 2, 8, WORD_NULL, WORD_C, WORD_U, WORD_T, WORD_LINE, WORD_F}; // F28 С<><D0A1><EFBFBD><EFBFBD><EFBFBD>г<EFBFBD> CUT-F
const unsigned char DIAM_Prompt[]={WORD_F, 2, 9, WORD_NULL, WORD_D, WORD_I, WORD_A, WORD_M, WORD_NULL}; // F29 <09>ܾ<EFBFBD><DCBE><EFBFBD><EFBFBD><EFBFBD> DIAM
//------------------------------------------------------------------------------
// <20><>ʾ<EFBFBD>ࣨF31-F40<34><30>
const unsigned char UNTA_Prompt[]={WORD_F, 3, 1, WORD_NULL, WORD_U, WORD_N, WORD_T, WORD_LINE, WORD_A}; // F31 <09>ۻ<EFBFBD><DBBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ UNT-A
const unsigned char UNTF_Prompt[]={WORD_F, 3, 2, WORD_NULL, WORD_U, WORD_N, WORD_T, WORD_LINE, WORD_F}; // F32 ʵʱ<CAB5><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ UNT-F
const unsigned char UNTP_Prompt[]={WORD_F, 3, 3, WORD_NULL, WORD_U, WORD_N, WORD_T, WORD_LINE, WORD_P}; // F33 ѹ<><D1B9><EFBFBD><EFBFBD>λ UNT-P
const unsigned char DISP_Prompt[]={WORD_F, 3, 9, WORD_NULL, WORD_D, WORD_I, WORD_S, WORD_P, WORD_NULL}; // F39 <09><>ʾģʽ DISP
//------------------------------------------------------------------------------
// ģ<><C4A3><EFBFBD>ӿ<EFBFBD><D3BF>ࣨF31-F40<34><30>
const unsigned char PULSE_Prompt[]={WORD_F, 4, 1, WORD_NULL, WORD_P, WORD_U, WORD_L, WORD_S, WORD_E}; // F41 <09><><EFBFBD><EFBFBD><E5B5B1> PULSE
//------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD>ࣨF41-F50<35><30>
const unsigned char ALMH_Prompt[]={WORD_F, 5, 1, WORD_NULL, WORD_A, WORD_L, WORD_M, WORD_LINE, WORD_H}; // F51 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ALM-H
const unsigned char ALML_Prompt[]={WORD_F, 5, 2, WORD_NULL, WORD_A, WORD_L, WORD_M, WORD_LINE, WORD_L}; // F52 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ALM-L
const unsigned char ALMA_Prompt[]={WORD_F, 5, 3, WORD_NULL, WORD_A, WORD_L, WORD_M, WORD_LINE, WORD_A}; // F53 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ALM-A
const unsigned char ALMT_Prompt[]={WORD_F, 5, 4, WORD_NULL, WORD_A, WORD_L, WORD_M, WORD_LINE, WORD_T}; // F54 ʱ<><EFBFBD><E4B1A8> ALM-T
//------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD>ࣨF71-F90<39><30>
const unsigned char LRID_Prompt[]={WORD_F, 7, 1, WORD_NULL, WORD_L, WORD_R, WORD_LINE, WORD_I, WORD_D}; // F71 LORA<52><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ LR-ID
const unsigned char NETID_Prompt[]={WORD_F, 7, 2, WORD_NULL, WORD_N, WORD_E, WORD_T, WORD_I, WORD_D}; // F72 LORA<52>ϼ<EFBFBD><CFBC><EFBFBD>ַ NETID
const unsigned char LRCH_Prompt[]={WORD_F, 7, 3, WORD_NULL, WORD_L, WORD_R, WORD_LINE, WORD_C, WORD_H}; // F73 LORA<52>ŵ<EFBFBD> LR_CH
//------------------------------------------------------------------------------
// <20><><EFBFBD><EFBFBD><EFBFBD>ࣨF91-F98<39><38>
const unsigned char PASS_Prompt[]={WORD_F, 9, 1, WORD_NULL, WORD_P, WORD_A, WORD_S, WORD_S, WORD_NULL}; // F91 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> PASS
const unsigned char CLRA_Prompt[]={WORD_F, 9, 2, WORD_NULL, WORD_C, WORD_L, WORD_R, WORD_LINE, WORD_A}; // F92 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CLR-A
const unsigned char CLRT_Prompt[]={WORD_F, 9, 3, WORD_NULL, WORD_C, WORD_L, WORD_R, WORD_LINE, WORD_T}; // F93 <09><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> CLR-T
const unsigned char RS2ND_Prompt[]={WORD_F, 9, 4, WORD_NULL, WORD_R, WORD_S, WORD_2, WORD_N, WORD_D}; // F94 <09>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> RS2ND
//------------------------------------------------------------------------------
const unsigned char QUIT_Prompt[]={WORD_F, 9, 9, WORD_NULL, WORD_Q, WORD_U, WORD_I, WORD_T, WORD_NULL}; // F99 <09>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD> QUIT
//------------------------------------------------------------------------------
const unsigned char SAVE_Prompt[]={WORD_S, WORD_A, WORD_V, WORD_E, WORD_Y, WORD_E, WORD_S, WORD_NULL, WORD_NULL};
const unsigned char PassWord_Prompt[]={WORD_P, WORD_A, WORD_S, WORD_S, WORD_NULL, WORD_0, WORD_0, WORD_0, WORD_0};
//==============================================================================
// for key value
const unsigned char YESNO_VALUE[]={WORD_N, WORD_O, WORD_NULL, WORD_NULL, WORD_NULL, WORD_Y, WORD_E, WORD_S, WORD_NULL, WORD_NULL};
const unsigned char RS2ND_VALUE[]={WORD_R, WORD_T, WORD_N, WORD_NULL, WORD_NULL, WORD_R, WORD_E, WORD_S, WORD_E, WORD_T};
/******************************************************************************/
// for display buffer
const unsigned char DisOffset[] = {FUN_BUF_PROMPT1, FUN_BUF_PROMPT2, FUN_BUF_PROMPT3, FUN_BUF_PROMPT4, FUN_BUF_PROMPT5, FUN_BUF_DECIMAL};
/******************************************************************************/
void DisplayForKeyOperation(void)
{
display_data[FUN_BUF_PROMPT1] = CodeACC[Dis1[FUN_PROMPT1]];
display_data[FUN_BUF_PROMPT2] = CodeACC[Dis1[FUN_PROMPT2]];
display_data[FUN_BUF_PROMPT3] = CodeACC[Dis1[FUN_PROMPT3]];
display_data[FUN_BUF_PROMPT4] = CodeACC[Dis1[FUN_PROMPT4]];
display_data[FUN_BUF_PROMPT5] = CodeACC[Dis1[FUN_PROMPT5]];
display_data[FUN_BUF_DECIMAL] = CodeACC[Dis1[FUN_DECIMAL]];
display_data[FUN_BUF_CODE1] = CodeFlowRate[Dis1[FUN_CODE_1]];
display_data[FUN_BUF_CODE2] = CodeFlowRate[Dis1[FUN_CODE_2]];
display_data[FUN_BUF_CODE3] = CodeFlowRate[Dis1[FUN_CODE_3]];
display_data[FUN_BUF_CODE4] = CodeFlowRate[Dis1[FUN_CODE_4]];
if(keySetPoint) display_data[KEYSET_DOT] |= KEYSET_DOT_BIT;
LcdWriteDisplay();
}
/******************************************************************************/
#pragma vector = KEY_VECTOR
__interrupt void KeyInterrupt_isr(void)
{
intVector = KEY_IV;
intVector &= M_KEY_VECTOR+ INC_KEY_VECTOR + DEC_KEY_VECTOR;
if(intVector != 0)
{
isKeyPressed = 1;
systemProcessing |= KEY_HANDLE;
LPM1_EXIT;
}
}
/******************************************************************************/
void KeyReset(void)
{
KEY_INPUT();
keyFlag = DIS_PARA_INT;
isKeyPressed = 0;
keyValue = 0;
menuIndex = 0;
setKeyType = 0;
setIndex = 0;
PassWord = 0;
timerTar = 0;
keyDealFlag = 0;
systemProcessing &= ~KEY_HANDLE;
}
/******************************************************************************/
void DisableKeyInterrupt(void)
{
KEY_IE &= ~KEY_PIN;
KEY_IFG &= ~KEY_PIN; //<2F><><EFBFBD><EFBFBD><EFBFBD>жϱ<D0B6>־
}
/******************************************************************************/
void EnableKeyInterrupt(void)
{
KEY_IES |= KEY_PIN;
KEY_IFG &= ~KEY_PIN; //<2F><><EFBFBD><EFBFBD><EFBFBD>жϱ<D0B6>־
KEY_IE |= KEY_PIN;
}
/******************************************************************************/
void KeyEditInit(void)
{
// key intput interrupt
KEY_INPUT();
}
/******************************************************************************/
void FlashBitForSetup(void)
{
unsigned char tempT, I;
if(keyFlag != FLASH_BIT) return;
if(keyFlashTime == RTCSEC) return;
keyFlashTime = RTCSEC;
I = DisOffset[modifyBit];
tempT = display_data[I];
tempT &= ~BIT0;
if(tempT == 0) display_data[I] |= CodeACC[Dis1[modifyBit]];
else display_data[I] &= (unsigned char)BIT0;
//LcdWriteDisplayFirst();
LcdWriteDisplay();
}
/******************************************************************************/
void ComputeTime(void)
{
unsigned int timerTemp;
// main timer: 1s = 16384
// 50ms: 820
timerTemp = MAINTAR;
if(timerTar == 0) timerTar = timerTemp;
else
{
if(timerTar == 65535) return;
if(timerTar < timerTemp) timerTemp -= timerTar;
else timerTemp += 65535 - timerTar;
if(timerTemp >= KEY_RESPONSE_TIME) timerTar = 65535; //timerTar = KEY_RESPONSE_TIME;
}
}
/******************************************************************************/
void ReadKeyValue(void)
{
KeyEditInit();
keyValue = READ_KEY_VALUE();
if(keyValue != KEY_PIN)
{
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
if(keyBuff != keyValue)
{
timerTar = MAINTAR;
keyBuff = keyValue;
totalTime = RTCSEC;
}
else ComputeTime();
keyValue = 0;
}
else // <20><><EFBFBD><EFBFBD><EFBFBD>ͷţ<CDB7><C5A3>жϰ<D0B6><CFB0><EFBFBD>
{
keyValue = 0;
DisableKeyInterrupt();
if((keyBuff == 0) || (keyBuff == KEY_PIN))
{
keyBuff = KEY_PIN;
if(IDvalidTime >= EXIT_30S) KeyReset();
EnableKeyInterrupt();
return;
}
// <20>жϰ<D0B6><CFB0><EFBFBD>ʱ<EFBFBD><EFBFBD><E4BCB0>ֵ<EFBFBD>ж<EFBFBD>
// ComputeTime();
// if(totalTime > KEY_RESPONSE_TIME)
if(timerTar == 65535)
{
keyBuff = ~keyBuff;
keyBuff &= KEY_PIN;
if(keyBuff == M_KEY)
{
keyValue = RTCSEC;
if(totalTime > keyValue) totalTime = keyValue + 60 - totalTime;
else totalTime = keyValue - totalTime;
if(totalTime > 1) keyValue = LONG_M_KEY;
else keyValue = M_KEY;
//if(totalTime < KEY_HOLD_TIME) keyValue = M_KEY;
//else keyValue = LONG_M_KEY;
}
else if(keyBuff == INC_KEY) keyValue = INC_KEY;
else if(keyBuff == DEC_KEY) keyValue = DEC_KEY;
else keyValue = 0;
}
totalTime = 0;
keyBuff = KEY_PIN;
}
}
/******************************************************************************/
unsigned long int ComputeSumOfFiveDigits(unsigned int modifyFirstBit, unsigned int modifyLastBit)
{
unsigned long int computeSum = 0;
for(; modifyFirstBit <= modifyLastBit; modifyFirstBit++)
{
computeSum *= (unsigned long int)10;
computeSum += (unsigned long int)Dis1[modifyFirstBit];
}
return computeSum;
}
/******************************************************************************/
void JudgeKeySetMax(unsigned int setBit, unsigned int endBit)
{
unsigned int I;
for(I = 0; setBit <= endBit; setBit++, I++)
{
if(Dis1[setBit] < setMax[I]) return;
else if(Dis1[setBit] > setMax[I])
{
Dis1[setBit] = setMax[I];
parameterSetError = 1;
}
}
}
/******************************************************************************/
void JudgeKeySetMin(unsigned int setBit, unsigned int endBit)
{
unsigned int I;
for(I = 0; setBit <= endBit; setBit++, I++)
{
if(Dis1[setBit] > setMin[I]) return;
else if(Dis1[setBit] < setMin[I])
{
Dis1[setBit] = setMin[I];
parameterSetError = 1;
}
}
}
/******************************************************************************/
// <20><><EFBFBD>ð<EFBFBD><C3B0><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>
void SettingKeyPrompt(const unsigned char *Prompt)
{
unsigned int I;
for(I = FUN_CODE_1; I <= FUN_CODE_4; I++) Dis1[I] = *Prompt++;
for(I = FUN_PROMPT1; I <= FUN_PROMPT5; I++) Dis1[I] = *Prompt++;
Dis1[FUN_DECIMAL] = WORD_NULL;
keyValue = 0;
keySetPoint = 0;
SetDisplayArray(0);
}
/******************************************************************************/
void InitOfSettingArea(unsigned long int setValue, unsigned int startBit, unsigned int setLen)
{
unsigned int I;
for(I = FUN_PROMPT1; I<=FUN_DECIMAL; I++) Dis1[I] = WORD_NULL;
modifyBit = startBit;
keyValue = 0;
keyFlag = FLASH_BIT;
setKeyBuffer = setValue;
ConvertHEXToBCDArray(setValue, &Dis1[startBit], setLen, HIGH_FIRST);
}
/******************************************************************************/
void InitOfSettingPrompt(const unsigned char *PromptF, const unsigned char *Prompt)
{
unsigned int I;
for(I = FUN_CODE_1; I <= FUN_CODE_4; I++) Dis1[I] = *PromptF++;
for(I = FUN_PROMPT1; I <= FUN_PROMPT5; I++) Dis1[I] = *Prompt++;
Dis1[FUN_DECIMAL] = WORD_NULL;
setKeyBuffer = 0;
modifyBit = FUN_PROMPT1;
keyValue = 0;
keyFlag = FLASH_BIT;
}
/******************************************************************************/
void ReturnKeySetup(void)
{
menuIndex = STD_RETURN; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD>
keyFlag = DIS_PARA_INT;
keyValue = 0xff;
}
/******************************************************************************/
bool KeyValueOperation(unsigned int modifyFirstBit, unsigned int modifyLastBit)
{
switch(keyValue)
{
case LONG_M_KEY:
keyFlag = 0xff;
keyDealFlag = STD_RETURN; // <20>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20>˵<EFBFBD>״ֱ̬<CCAC><D6B1><EFBFBD>˳<EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҳ<EFBFBD><D2B3>
parameterSetError = 0;
JudgeKeySetMax(modifyFirstBit, modifyLastBit);
JudgeKeySetMin(modifyFirstBit, modifyLastBit);
setKeyBuffer = (unsigned long int)ComputeSumOfFiveDigits(modifyFirstBit, modifyLastBit);
return 1;
case M_KEY:
modifyBit++;
keyValue = 0;
keyDealFlag = 0;
if((modifyBit <= modifyLastBit) && (modifyBit >= modifyFirstBit)) break;
parameterSetError = 0;
JudgeKeySetMax(modifyFirstBit, modifyLastBit);
JudgeKeySetMin(modifyFirstBit, modifyLastBit);
setKeyBuffer = (unsigned long int)ComputeSumOfFiveDigits(modifyFirstBit, modifyLastBit);
return 1;
case INC_KEY:
if(Dis1[modifyBit] >= 9) break;
Dis1[modifyBit]++;
break;
case DEC_KEY:
if(Dis1[modifyBit] == 0) break;
Dis1[modifyBit]--;
break;
default:
keyValue = 0;
return 0;
}
JudgeKeySetMax(modifyFirstBit, modifyBit);
JudgeKeySetMin(modifyFirstBit, modifyBit);
keyValue = 0;
return 0;
}
/******************************************************************************/
bool KeyValueOperateForPrompt(const unsigned char *Prompt)
{
unsigned int I;
switch(keyValue)
{
case LONG_M_KEY: keyDealFlag = STD_RETURN;
case M_KEY:
keyFlag = DIS_PARA_INT;
//setKeyType = 3;
return 1;
case INC_KEY:
Prompt += 5;
for(I = FUN_PROMPT1; I <= FUN_PROMPT5; I++) Dis1[I] = *Prompt++;
setKeyBuffer = 1;
break;
case DEC_KEY:
for(I = FUN_PROMPT1; I <= FUN_PROMPT5; I++) Dis1[I] = *Prompt++;
setKeyBuffer = 0;
break;
}
keyValue = 0;
return 0;
}
/******************************************************************************/
void DisplaySetIndex(void)
{
if(keyFlag != DISPLAY_MENU) return;
setKeyType = 0;
switch(keyValue)
{
case LONG_M_KEY:
keyFlag = 0xff;
menuIndex = STD_RETURN; // <20>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
break;
case M_KEY:
keyFlag = DIS_PARA_INT;
keyValue = 0;
break;
case DEC_KEY:
if(menuIndex > 1) menuIndex--;
else menuIndex = STD_KEY_QUIT;
break;
case INC_KEY:
menuIndex++;
if(menuIndex > STD_KEY_QUIT) menuIndex = 1;
break;
}
}
/******************************************************************************/
unsigned int SaveModifyValue(void)
{
if(keyFlag == DIS_PARA_INT)
{
modifyBit = FUN_PROMPT1;
keyFlag = FLASH_BIT;
SettingKeyPrompt(&SAVE_Prompt[0]);
}
switch(keyValue)
{
case LONG_M_KEY:
case M_KEY:
keyValue = 0;
if( Dis1[FUN_PROMPT1] == WORD_Y ) return SAVE;
return NO;
case INC_KEY:
case DEC_KEY:
if(Dis1[FUN_PROMPT1] == WORD_N)
{
Dis1[FUN_PROMPT1] = WORD_Y;
Dis1[FUN_PROMPT2] = WORD_E;
Dis1[FUN_PROMPT3] = WORD_S;
}
else
{
Dis1[FUN_PROMPT1] = WORD_N;
Dis1[FUN_PROMPT2] = WORD_O;
Dis1[FUN_PROMPT3] = WORD_NULL;
}
break;
default:
break;
}
keyValue = 0;
return NEXT;
}
/******************************************************************************/
void ExitKeyOperation(void)
{
if(keyFlag == DISPLAY_MENU)
{
SettingKeyPrompt(&QUIT_Prompt[0]);
return;
}
else if(keyFlag == DIS_PARA_INT)
{
InitOfSettingPrompt(&QUIT_Prompt[0], &YESNO_VALUE[0]);
setKeyBuffer = 0;
}
if(KeyValueOperateForPrompt(&YESNO_VALUE[0]))
{
keyValue = 0xFF;
if(setKeyBuffer == 1) menuIndex = STD_RETURN;
else keyFlag = DISPLAY_MENU;
}
}
/******************************************************************************/
void JudgeSaveAndReturn(unsigned long int judgeValue, unsigned int setGain)
{
setKeyBuffer *= (unsigned long int)setGain;
// <20><><EFBFBD><EFBFBD>Ϊ<EFBFBD>˳<EFBFBD><CBB3><EFBFBD>־<EFBFBD><D6BE><EFBFBD>Ҳ<EFBFBD><D2B2><EFBFBD>δ<EFBFBD><CEB4><EFBFBD>޸<EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD>˳<EFBFBD>
if(keyDealFlag == STD_RETURN)
{
if((parameterSetError != 0) || (setKeyBuffer == judgeValue))
{
ReturnKeySetup();
return;
}
}
else if(parameterSetError == 1)
{
setKeyType = 0;
keyFlag = DISPLAY_MENU;
return;
}
keyFlag = DIS_PARA_INT;
setKeyType = 1;
}
/******************************************************************************/
bool KeyPasswordInput(void)
{
if(keyFlag == DIS_PARA_INT)
{
SetDisplayArray(0);
modifyBit = FUN_PROMPT2;
keyFlag = FLASH_BIT;
ClearDisplay();
SettingKeyPrompt(&PassWord_Prompt[0]);
ConvertHEXToBCDArray((unsigned long int)9999, &setMax[0], 4, HIGH_FIRST);
ConvertHEXToBCDArray((unsigned long int)0, &setMin[0], 4, HIGH_FIRST);
}
keyFlag = FLASH_BIT;
if(KeyValueOperation(FUN_PROMPT2, FUN_PROMPT5))
{
PassWord = (unsigned int)setKeyBuffer;
return 1;
}
else return 0;
}
/******************************************************************************/
void JudgePasswordInput(unsigned int activePassword)
{
if(PassWord == activePassword)
{
setKeyType++;
keyFlag = DIS_PARA_INT;
return;
}
else if(!KeyPasswordInput()) return;
if(keyDealFlag == STD_RETURN)
{
keyFlag = 0xff;
menuIndex = STD_RETURN; // <20>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20>˵<EFBFBD>״ֱ̬<CCAC><D6B1><EFBFBD>˳<EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҳ<EFBFBD><D2B3>
}
else if(PassWord == activePassword)
{
setKeyType++;
keyFlag = DIS_PARA_INT;
}
else
{
keyFlag = DISPLAY_MENU;
setKeyType = 0;
keyValue = 0xff;
}
}
/******************************************************************************/
bool ExitCurrentSetup(void)
{
unsigned int I;
I = SaveModifyValue();
keyValue = 0;
if(I == NEXT) return 0; // <20><><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD>Ƿ񱣴棿
PassWord = 0;
setKeyType = 0;
keyFlag = DISPLAY_MENU;
keyValue = 0xff;
if(keyDealFlag == STD_RETURN) menuIndex = STD_RETURN;
if(I != SAVE) return 0; // ִ<>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD>
return 1;
}
/******************************************************************************/
// <20><><EFBFBD><EFBFBD><EFBFBD>DZ<EFBFBD>ϵ<EFBFBD><CFB5>
void ModifyMeterFactor(void)
{
if(setKeyType == 0)
{
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>
// F13 <09>DZ<EFBFBD>ϵ<EFBFBD><CFB5> FACTR
if(keyFlag == DISPLAY_MENU)
{
SettingKeyPrompt(&FACTR_Prompt[0]);
return;
}
else if(keyFlag == DIS_PARA_INT) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
{
InitOfSettingArea((unsigned long int)MeterFactor, FUN_PROMPT1, 5); // <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ConvertHEXToBCDArray((unsigned long int)METER_PARAMETER_MAX, &setMax[0], 5, HIGH_FIRST);
ConvertHEXToBCDArray((unsigned long int)METER_PARAMETER_MIN, &setMin[0], 5, HIGH_FIRST);
}
// <20><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>
if(KeyValueOperation(FUN_PROMPT1, FUN_PROMPT5)) JudgeSaveAndReturn((unsigned long int)MeterFactor, 1);
}
//===========================================================================
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>
if(setKeyType != 1) return;
if(!ExitCurrentSetup()) return;
if(MeterFactor == setKeyBuffer) return;
tempL.DWord = (unsigned long int)setKeyBuffer;
MeterFactor = WriteShortParameterToEEPROM(METER_FACTOR, METER_FACTOR_WIDTH);
}
/******************************************************************************/
//<2F>޸Ķ<DEB8><C4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void SelectDcoefNode(void)
{
if(keyFlag == DIS_PARA_INT)
{
SetDisplayArray(0);
modifyBit = FUN_PROMPT5;
keyValue = 0;
keySetPoint = 0;
keyFlag = FLASH_BIT;
//STD_KEY_CORR 14 // F14 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5> CORR
Dis1[FUN_CODE_1] = WORD_F;
Dis1[FUN_CODE_2] = 1;
Dis1[FUN_CODE_3] = 4;
Dis1[FUN_CODE_4] = WORD_NULL;
Dis1[FUN_PROMPT1] = WORD_C;
Dis1[FUN_PROMPT2] = WORD_O;
Dis1[FUN_PROMPT3] = WORD_R;
Dis1[FUN_PROMPT4] = WORD_LINE;
Dis1[FUN_PROMPT5] = setIndex+1;
Dis1[FUN_DECIMAL] = WORD_NULL;
setMax[0] = 9;
setMin[0] = 1;
//ConvertHEXToBCDArray((unsigned long int)METER_PARAMETER_MAX, &setMax[0], 5, HIGH_FIRST);
//ConvertHEXToBCDArray((unsigned long int)METER_PARAMETER_MIN, &setMin[0], 5, HIGH_FIRST);
}
if(KeyValueOperation(FUN_PROMPT5, FUN_PROMPT5))
{
if(keyDealFlag == STD_RETURN) ReturnKeySetup();
else
{
if(Dis1[FUN_PROMPT5] > dcoefNum)
{
//Dis1[FUN_PROMPT5] = dcoefNum;
setKeyType = 0;
keyValue = 0xff;
keyFlag = DISPLAY_MENU;
return;
}
setIndex = Dis1[FUN_PROMPT5]-1;
keyFlag = DIS_PARA_INT;
setKeyType++;
temp_dcoefNode[setIndex] = dcoefNode[setIndex];
temp_dcoefVal[setIndex] = dcoefVal[setIndex];
}
}
if(Dis1[FUN_PROMPT5] > dcoefNum)
{
//Dis1[FUN_PROMPT5] = dcoefNum;
setKeyType = 0;
keyValue = 0xff;
keyFlag = DISPLAY_MENU;
}
}
/******************************************************************************/
void ModifyDcoefNode(void)
{
//unsigned long int temp;
if(keyFlag == DIS_PARA_INT)
{
SetDisplayArray(0);
modifyBit = FUN_PROMPT2;
keyValue = 0;
keyFlag = FLASH_BIT;
Dis1[FUN_CODE_1] = WORD_P;
Dis1[FUN_CODE_2] = setIndex+1;
Dis1[FUN_CODE_3] = WORD_LINE;
Dis1[FUN_CODE_4] = WORD_LINE;
Dis1[FUN_PROMPT1] = WORD_NULL;
ConvertHEXToBCDArray(dcoefNode[setIndex]/100, &Dis1[FUN_PROMPT2], 5, HIGH_FIRST);
ConvertHEXToBCDArray((unsigned long int)99999, &setMax[0], 5, HIGH_FIRST);
ConvertHEXToBCDArray((unsigned long int)0, &setMin[0], 5, HIGH_FIRST);
keySetPoint = 1;
}
//<2F><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>
if(KeyValueOperation(FUN_PROMPT2, FUN_DECIMAL))
{
temp_dcoefNode[setIndex] = setKeyBuffer * 100;
if(keyDealFlag == STD_RETURN) setKeyType = 5;
else setKeyType++;
keyFlag = DIS_PARA_INT;
}
keyValue = 0;
}
/******************************************************************************/
void ModifyDcoefVal(void)
{
if(keyFlag == DIS_PARA_INT)
{
SetDisplayArray(0);
modifyBit = FUN_PROMPT1;
keyValue = 0;
keyFlag = FLASH_BIT;
keySetPoint = 0;
Dis1[FUN_CODE_1] = WORD_P;
Dis1[FUN_CODE_2] = setIndex+1;
Dis1[FUN_CODE_3] = WORD_LINE;
Dis1[FUN_CODE_4] = WORD_LINE;
Dis1[FUN_PROMPT1] = WORD_NULL;
Dis1[FUN_DECIMAL] = WORD_NULL;
ConvertHEXToBCDArray(dcoefVal[setIndex], &Dis1[FUN_PROMPT1], 5, HIGH_FIRST);
ConvertHEXToBCDArray((unsigned long int)METER_PARAMETER_MAX, &setMax[0], 5, HIGH_FIRST);
ConvertHEXToBCDArray((unsigned long int)METER_PARAMETER_MIN, &setMin[0], 5, HIGH_FIRST);
}
//<2F><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>
if(KeyValueOperation(FUN_PROMPT1, FUN_PROMPT5))
{
temp_dcoefVal[setIndex] = (unsigned int)setKeyBuffer;
//if(menuIndex == STD_RETURN) setKeyType = 5;
if(keyDealFlag == STD_RETURN) setKeyType = 5;
else setKeyType++;
keyFlag = DIS_PARA_INT;
}
}
/******************************************************************************/
void ModifyDcoefNodeAndValue(void)
{
if(setKeyType == 0)
{
if(keyFlag == DISPLAY_MENU)
{
//STD_KEY_CORR 14 // F14 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5> CORR
SettingKeyPrompt(&CORR_Prompt[0]);
setIndex = 0;
return;
}
else if(keyFlag == DIS_PARA_INT) setKeyType = 1;
}
if(setKeyType == 1) JudgePasswordInput(LEVEL_2_PASSWORD); //2222
if(setKeyType == 2) SelectDcoefNode();
if(setKeyType == 3) ModifyDcoefNode();
if(setKeyType == 4) ModifyDcoefVal();
//===========================================================================
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>
if(setKeyType != 5) return;
unsigned int keyState;
if(keyDealFlag == STD_RETURN)
{
if((dcoefNode[setIndex] == temp_dcoefNode[setIndex]) && (dcoefVal[setIndex] == temp_dcoefVal[setIndex]))
{
ReturnKeySetup();
return;
}
}
keyState = SaveModifyValue();
keyValue = 0;
if(keyState == NEXT) return; // <20><><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD>Ƿ񱣴棿
if(keyDealFlag == STD_RETURN) menuIndex = STD_RETURN; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD>
setKeyType = 2;
keyFlag = DIS_PARA_INT;
keyValue = 0xff;
if(keyState != SAVE) return; // ִ<>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD>
// <20><EFBFBD><E6B4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5>
dcoefNode[setIndex] = temp_dcoefNode[setIndex];
dcoefVal[setIndex] = temp_dcoefVal[setIndex];
StoreDevCoefNodeAndValue(setIndex);
// RetriveDevCoef();
}
/******************************************************************************/
void ModifyMaxFlowRate(void)
{
if(setKeyType == 0)
{
if(keyFlag == DISPLAY_MENU) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>
{
// STD_KEY_ADDR 2 // F15 FS
SettingKeyPrompt(&FS_Prompt[0]);
return;
}
else if(keyFlag == DIS_PARA_INT)
{
InitOfSettingArea((unsigned long int)maxFlowRate/100, FUN_PROMPT2, 5); // <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ConvertHEXToBCDArray((unsigned long int)99999, &setMax[0], 5, HIGH_FIRST);
ConvertHEXToBCDArray((unsigned long int)0, &setMin[0], 5, HIGH_FIRST);
display_data[ACC_POINT] |= (unsigned char)ACC_POINT_BIT;
}
// <20><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>
if(KeyValueOperation(FUN_PROMPT2, FUN_DECIMAL)) JudgeSaveAndReturn((unsigned long int)maxFlowRate, 100);
}
//===========================================================================
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>
if(setKeyType != 1) return;
if(!ExitCurrentSetup()) return;
if(maxFlowRate == setKeyBuffer) return;
tempDev.DWord[0] = (unsigned long int)setKeyBuffer;
maxFlowRate = WriteLongParameterToEEPROM(MAX_FLOW, MAX_FLOW_WIDTH);
}
/******************************************************************************/
void ModifyWorkDiameter(void)
{
if(setKeyType == 0)
{
if(keyFlag == DISPLAY_MENU) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>
{
// F29 DIAM
SettingKeyPrompt(&DIAM_Prompt[0]);
return;
}
else if(keyFlag == DIS_PARA_INT)
{
InitOfSettingArea((unsigned long int)workDiameter, FUN_PROMPT2, 4); // <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ConvertHEXToBCDArray((unsigned long int)1500, &setMax[0], 4, HIGH_FIRST);
ConvertHEXToBCDArray((unsigned long int)25, &setMin[0], 4, HIGH_FIRST);
}
// <20><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>
if(KeyValueOperation(FUN_PROMPT2, FUN_PROMPT5)) JudgeSaveAndReturn((unsigned long int)workDiameter, 1);
}
//===========================================================================
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>
if(setKeyType != 1) return;
if(!ExitCurrentSetup()) return;
if(workDiameter == setKeyBuffer) return;
tempL.DWord = (unsigned int)setKeyBuffer;
workDiameter = WriteShortParameterToEEPROM(WORK_DIAMETER, WORK_DIAMETER_WIDTH);
}
/******************************************************************************/
void ModifySamplingInterval(void)
{
if(setKeyType == 0)
{
if(keyFlag == DISPLAY_MENU) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>
{
//F16 <09><>Ӧʱ<D3A6><CAB1> RESPS
SettingKeyPrompt(&RESPS_Prompt[0]);
return;
}
else if(keyFlag == DIS_PARA_INT)
{
InitOfSettingArea((unsigned long int)factoryInterval, FUN_PROMPT5, 1); // <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
setMax[0] = SAMPLE_PERIOD_MAX;
setMin[0] = SAMPLE_PERIOD_MIN;
}
// <20><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>
if(KeyValueOperation(FUN_PROMPT5, FUN_PROMPT5)) JudgeSaveAndReturn((unsigned long int)factoryInterval, 1);
}
//===========================================================================
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>
if(setKeyType != 1) return;
if(!ExitCurrentSetup()) return;
if(factoryInterval == setKeyBuffer) return;
tempL.DWord = (unsigned int)setKeyBuffer;
factoryInterval = WriteShortParameterToEEPROM(SAMPLE_PERIOD, SAMPLE_PERIOD_WIDTH);
}
/*******************************************************************************
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У׼С<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У׼С<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߱<EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
1<EFBFBD><EFBFBD><EFBFBD>ܵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹ<EFBFBD><EFBFBD>
2<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>£<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1min
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>п<EFBFBD><EFBFBD>ܶ<EFBFBD>У<EFBFBD><EFBFBD><EFBFBD>Ľ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD>
ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><EFBFBD>У<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾУ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SET<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD>У<EFBFBD><EFBFBD>״̬<EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪУ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD>ִ<EFBFBD>д˲<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>ѡ<EFBFBD>񲻴<EFBFBD>޸<EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD>򡰼<EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD>
*******************************************************************************/
void CalibrateOffsetC(void)
{
if(setKeyType == 0)
{
if(keyFlag == DISPLAY_MENU)
{
//STD_KEY_OFFST 11 // F11 У׼<D0A3><D7BC><EFBFBD><EFBFBD> OFFST
SettingKeyPrompt(&OFFST_Prompt[0]);
return;
}
else if(keyFlag == DIS_PARA_INT) setKeyType++;
}
if(setKeyType == 1) JudgePasswordInput(LEVEL_3_PASSWORD); // 0520
if(setKeyType == 2)
{
if(keyFlag == DIS_PARA_INT)
{
modifyBit = FUN_PROMPT5;
keyValue = INC_KEY;
keyFlag = FLASH_BIT;
}
//<2F><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>
switch(keyValue)
{
case LONG_M_KEY:
if(offsetGas == setIndex)
{
keyValue = 0xff;
menuIndex = STD_RETURN;
return;
}
keyDealFlag = STD_RETURN;
case M_KEY:
keyValue = 0;
setKeyType++;
keyFlag = DIS_PARA_INT;
break;
case INC_KEY:
Dis1[FUN_CODE_1] = WORD_C;
Dis1[FUN_CODE_2] = WORD_U;
Dis1[FUN_CODE_3] = WORD_R;
Dis1[FUN_CODE_4] = WORD_NULL;
setKeyBuffer = voltageDetected[NIDX]; //ReadDataFromMovingAverage(NIDX);
ConvertHEXToBCDArray((unsigned long int)setKeyBuffer, &Dis1[FUN_PROMPT1], 5, HIGH_FIRST);
break;
case DEC_KEY:
Dis1[FUN_CODE_1] = WORD_O;
Dis1[FUN_CODE_2] = WORD_L;
Dis1[FUN_CODE_3] = WORD_D;
Dis1[FUN_CODE_4] = WORD_NULL;
ConvertHEXToBCDArray((unsigned long int)offsetGas, &Dis1[FUN_PROMPT1], 5, HIGH_FIRST);
break;
default: break;
}
keyValue = 0;
}
if(setKeyType != 3) return;
if(!ExitCurrentSetup()) return;
//if(offsetGas == (unsigned long int)setKeyBuffer)
tempL.DWord = (unsigned long int)setKeyBuffer;
offsetGas = WriteShortParameterToEEPROM(OFFSET_GAS, OFFSET_GAS_WIDTH);
#if(ENABLE_A_TYPE_FLOWRATE)
tempL.DWord = (unsigned long int)ReadDataFromMovingAverage(SDT);
offsetGasA = WriteShortParameterToEEPROM(OFFSET_A, OFFSET_A_WIDTH);
#endif
}
/*********************************************************************************/
//<2F>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD><E5B5B1>
void ModifyLPFactoryLiterPerPulse(void)
{
if(setKeyType == 0)
{
if(keyFlag == DISPLAY_MENU)
{
// STD_KEY_PULSE 41 // F41 <09><><EFBFBD><EFBFBD><E5B5B1> PULSE
SettingKeyPrompt(&PULSE_Prompt[0]);
return;
}
else if(keyFlag == DIS_PARA_INT)
{
InitOfSettingArea((unsigned long int)factoryUnitPerPulse, FUN_PROMPT2, 5); // <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ConvertHEXToBCDArray((unsigned long int)10000, &setMax[0], 5, HIGH_FIRST); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
ConvertHEXToBCDArray((unsigned long int)100, &setMin[0], 5, HIGH_FIRST); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Сֵ
}
display_data[ACC_POINT] |= (unsigned char)ACC_POINT_BIT;
if(KeyValueOperation(FUN_PROMPT2, FUN_DECIMAL)) JudgeSaveAndReturn((unsigned long int)factoryUnitPerPulse, 1);
}
//===========================================================================
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>
if(setKeyType != 1) return;
if(!ExitCurrentSetup()) return;
if(factoryUnitPerPulse == (unsigned int)setKeyBuffer) return;
lastRemaining = 0;
tempL.DWord = (unsigned long int)setKeyBuffer;
factoryUnitPerPulse = WriteShortParameterToEEPROM(PULSE_UNIT, PULSE_UNIT_WIDTH);
}
/******************************************************************************/
void ModifyModBusAdr(void)
{
if(setKeyType == 0)
{
if(keyFlag == DISPLAY_MENU) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>
{
// STD_KEY_ADDR 2 // F2 <09>ӻ<EFBFBD><D3BB><EFBFBD>ַ ADDR
SettingKeyPrompt(&ADDR_Prompt[0]);
return;
}
else if(keyFlag == DIS_PARA_INT)
{
InitOfSettingArea((unsigned long int)localAddress, FUN_PROMPT3, 3); // <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ConvertHEXToBCDArray((unsigned long int)247, &setMax[0], 3, HIGH_FIRST); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
ConvertHEXToBCDArray((unsigned long int)1, &setMin[0], 3, HIGH_FIRST); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Сֵ
}
// <20><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>
if(KeyValueOperation(FUN_PROMPT3, FUN_PROMPT5)) JudgeSaveAndReturn((unsigned long int)localAddress, 1);
}
//===========================================================================
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>
if(setKeyType != 1) return;
if(!ExitCurrentSetup()) return;
if(localAddress == (unsigned int)setKeyBuffer) return;
tempL.DWord = (unsigned long int)setKeyBuffer;
localAddress = WriteShortParameterToEEPROM(SLAVER_ADDR, SLAVER_ADDR_WIDTH);
}
/******************************************************************************/
//void ModifyDisplayMod(voiod)
//{
// if(setKeyType == 0)
// {
// if(keyFlag == DISPLAY_MENU) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>
// {
// // STD_KEY_ADDR 2 // F2 <09>ӻ<EFBFBD><D3BB><EFBFBD>ַ ADDR
// SettingKeyPrompt(&DISMod_Prompt[0]);
// return;
// }
// else if(keyFlag == DIS_PARA_INT)
// {
// InitOfSettingArea((unsigned long int)SysLcd, FUN_PROMPT3, 3); // <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// ConvertHEXToBCDArray((unsigned long int)247, &setMax[0], 3, HIGH_FIRST); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
// ConvertHEXToBCDArray((unsigned long int)1, &setMin[0], 3, HIGH_FIRST); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Сֵ
// }
//
// // <20><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>
// if(KeyValueOperation(FUN_PROMPT3, FUN_PROMPT5)) JudgeSaveAndReturn((unsigned long int)localAddress, 1);
// }
//
// //===========================================================================
// // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>
// if(setKeyType != 1) return;
// if(!ExitCurrentSetup()) return;
//
// if(localAddress == (unsigned int)setKeyBuffer) return;
// tempL.DWord = (unsigned long int)setKeyBuffer;
// localAddress = WriteShortParameterToEEPROM(SLAVER_ADDR, SLAVER_ADDR_WIDTH);
//}
/******************************************************************************/
void ModifyUartDecimalPoint(void)
{
// if(setKeyType == 0)
// {
// if(keyFlag == DISPLAY_MENU) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>
// {
// // STD_UART_Decimal 2 // F2 <09>ӻ<EFBFBD><D3BB><EFBFBD>ַ ADDR
// SettingKeyPrompt(&DECI_Prompt[0]);
// return;
// }
// else if(keyFlag == DIS_PARA_INT)
// {
// modifyBit = FUN_PROMPT5;
// keyValue = 0;
// keyFlag = FLASH_BIT;
//
// setKeyBuffer = uartDecimalPoint;
// Dis1[FUN_PROMPT1] = WORD_NULL;
// Dis1[FUN_PROMPT2] = WORD_NULL;
// Dis1[FUN_PROMPT3] = WORD_NULL;
// Dis1[FUN_PROMPT4] = WORD_NULL;
// Dis1[FUN_PROMPT5] = (unsigned char)setKeyBuffer;
// Dis1[FUN_DECIMAL] = WORD_NULL;
// setMax[0] = 4;
// setMin[0] = 3;
// }
//
// if(KeyValueOperation(FUN_PROMPT5, FUN_PROMPT5)) JudgeSaveAndReturn((unsigned long int)uartDecimalPoint, 1);
// }
//
// //===========================================================================
// // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>
// if(setKeyType != 1) return;
// if(!ExitCurrentSetup()) return;
//
// if(uartDecimalPoint == (unsigned int)setKeyBuffer) return;
// tempL.DWord = (unsigned long int)setKeyBuffer;
// uartDecimalPoint = WriteShortParameterToEEPROM(COM_DECIMAL_POINT, COM_DECIMAL_POINT_WIDTH);
}
/******************************************************************************/
void ResetDcoefNodeAndValue(void)
{
if(setKeyType == 0)
{
if(keyFlag == DISPLAY_MENU) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>
{
// F94 RS2ND
SettingKeyPrompt(&RS2ND_Prompt[0]);
return;
}
else if(keyFlag == DIS_PARA_INT) setKeyType = 1;
}
if(setKeyType == 1) JudgePasswordInput(LEVEL_2_PASSWORD); //2222
if(setKeyType == 2)
{
if(keyFlag == DIS_PARA_INT)
{
InitOfSettingPrompt(&RS2ND_Prompt[0], &RS2ND_VALUE[0]);
setKeyBuffer = 0;
}
if(KeyValueOperateForPrompt(&RS2ND_VALUE[0])) setKeyType = 3;
}
//===========================================================================
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>
if(setKeyType != 3) return;
if(!ExitCurrentSetup()) return;
if(setKeyBuffer == 0) return;
DefaultDevCoef();
}
/******************************************************************************/
/******************************************************************************/
/******************************************************************************/
/******************************************************************************/
/******************************************************************************/
void KeyInputProcessing(void)
{
FlashBitForSetup();
ReadKeyValue();
while(keyValue != 0)
{
IDvalidTime = 0;
DisplaySetIndex();
switch(menuIndex)
{
case STD_INIT_PASSWORD: // input password
if(keyFlag == DIS_PARA_INT)
{
if(keyValue == SHIFT_KEY) { KeyReset(); return; }
if(keyValue == UPPER_KEY) { KeyReset(); return; }
}
if(!KeyPasswordInput()) break;
keyValue = 0xff;
keyFlag = DISPLAY_MENU;
if(PassWord != LEVEL_1_PASSWORD) menuIndex = STD_RETURN;
else menuIndex = STD_KEY_ADDR;
continue;
//=====================================================================
// <20>ӿ<EFBFBD><D3BF>ࣨF1-F9<46><39>
//case STD_KEY_PRTCL // F1 ͨѶЭ<D1B6><D0AD> PRTCL
case STD_KEY_ADDR: ModifyModBusAdr(); break; // F2 <09>ӻ<EFBFBD><D3BB><EFBFBD>ַ ADDR
//case STD_KEY_BPS // F3 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> BPS
//=====================================================================
// <20><><EFBFBD><EFBFBD><EFBFBD>ࣨF11-F30<33><30>
case STD_KEY_OFFST: CalibrateOffsetC(); break; // F11 У׼<D0A3><D7BC><EFBFBD><EFBFBD> OFFST (0520)
//-----------------------------------------------------------------------
// case STD_KEY_GCF: // F12 GCF GCF
case STD_KEY_FACTR: ModifyMeterFactor(); break; // F13 <09>DZ<EFBFBD>ϵ<EFBFBD><CFB5> FACTR
case STD_KEY_CORR: ModifyDcoefNodeAndValue(); break; // F14 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5> CORR
//-----------------------------------------------------------------------
case STD_KEY_FS: ModifyMaxFlowRate(); break; // F15 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> FS
case STD_KEY_RESPS: ModifySamplingInterval(); break; // F16 <09><>Ӧʱ<D3A6><CAB1> RESPS
//case STD_KEY_CUT_F // F28 С<><D0A1><EFBFBD><EFBFBD><EFBFBD>г<EFBFBD> CUT-F
//=====================================================================
#if(ENABLE_PLUG_IN_FLOWRATE)
case STD_KEY_DIAM: ModifyWorkDiameter(); break; // F29 <09>ܾ<EFBFBD><DCBE><EFBFBD><EFBFBD><EFBFBD> DIAM
#endif
//=======================================================================
// <20><>ʾ<EFBFBD>ࣨF31-F40<34><30>
//case STD_KEY_UNT_A // F31 <09>ۻ<EFBFBD><DBBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ UNT-A
//case STD_KEY_UNT_F // F32 ʵʱ<CAB5><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ UNT-F
//case STD_KEY_UNT_P // F33 ѹ<><D1B9><EFBFBD><EFBFBD>λ UNT-P
//case STD_KEY_DISP: ModifyDisplayMod(); break; // F39 <09><>ʾģʽ DISP
//=======================================================================
// ģ<><C4A3><EFBFBD>ӿ<EFBFBD><D3BF>ࣨF31-F40<34><30>
case STD_KEY_PULSE: ModifyLPFactoryLiterPerPulse(); break; // F41 <09><><EFBFBD><EFBFBD><E5B5B1> PULSE
//=======================================================================
// <20><><EFBFBD><EFBFBD><EFBFBD>ࣨF41-F50<35><30>
//case STD_KEY_ALM_H // F51 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ALM-H
//case STD_KEY_ALM_L // F52 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ALM-L
//case STD_KEY_ALM_A // F53 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ALM-A
//case STD_KEY_ALM_T // F54 ʱ<><EFBFBD><E4B1A8> ALM-T
//=======================================================================
//case STD_KEY_LORA_ADDR: // F71 LORA<52><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ LR-ID
//case STD_KEY_LORA_ID: // F72 LORA<52>ϼ<EFBFBD><CFBC><EFBFBD>ַ NETID
//case STD_KEY_LORA_CHAN: // F73 LORA<52>ŵ<EFBFBD> LR_CH
//=======================================================================
// <20><><EFBFBD><EFBFBD><EFBFBD>ࣨF91-F98<39><38>
//case STD_KEY_PASS // F91 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> PASS
//case STD_KEY_CLR_A // F92 <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> CLR-A
//case STD_KEY_CLR_T // F93 <09><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> CLR-T
case STD_KEY_RESET_DCOEF: ResetDcoefNodeAndValue(); break; // F94 <09>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> RS2ND
//=======================================================================
// <20>˳<EFBFBD>
case STD_KEY_QUIT: ExitKeyOperation(); break; // F99 <09>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD> QUIT
case STD_RETURN:
KeyReset();
DisableKeyInterrupt();
NumericPrepForOutputAndDisplay();
return;
default: continue;
}
DisplayForKeyOperation();
}
}
//##############################################################################
#endif
//##############################################################################