Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
NextionPages.cpp
00001 #include <cstdlib> 00002 #include <string> 00003 #include "main.h" 00004 #include "Functions.h" 00005 #include "Definitions.h" 00006 #include "Boolean.h" 00007 #include "NextionLCD.h" 00008 #include "mbed_debug.h" 00009 #include "mbed.h" 00010 #include "Languages.h" 00011 #include "Ser25lcxxx.h" 00012 #include "NVM.h" 00013 #include "Watchdog.h" 00014 #include "Controls.h" 00015 #include "Threads.h" 00016 #include "FastPWM.h" 00017 00018 /////////////////////////////////////////////////////////////////////////////// 00019 // MBED OBJECTS 00020 /////////////////////////////////////////////////////////////////////////////// 00021 extern NextionLCD lcd;//Tx, Rx, Nextion Port 00022 00023 /////////////////////////////////////////////////////////////////////////////// 00024 // VARIABLES 00025 /////////////////////////////////////////////////////////////////////////////// 00026 bool calComplete = false; 00027 uint8_t precision = 0; 00028 uint8_t adjustItem = ADJ_FLOW_UNITS; 00029 uint8_t menuStringID = FLOW_U_STRING_LIST;//store the last displayed list 00030 00031 /////////////////////////////////////////////////////////////////////////////// 00032 // STRINGS 00033 /////////////////////////////////////////////////////////////////////////////// 00034 extern string HARDWARE; 00035 extern string SOFTWARE; 00036 extern string BUILD; 00037 extern string DATE; 00038 extern string AUTHOR; 00039 00040 /////////////////////////////////////////////////////////////////////////////// 00041 // FUNCTIONS 00042 /////////////////////////////////////////////////////////////////////////////// 00043 uint8_t nexPage(uint8_t presentTask, uint8_t savedTask){ 00044 00045 const uint8_t x=0,y=1,z=2; 00046 static uint8_t i[3]={x,y,z}; 00047 uint8_t task = presentTask;//return the present task unless task in re-assigned by pages 00048 00049 switch(page){ 00050 case PAGE_0: break; 00051 00052 case PAGE_1_HOME: 00053 /////////////////////////////////////////////////////////////////////////////// 00054 // PAGE 1 HOME 00055 /////////////////////////////////////////////////////////////////////////////// 00056 if(touchBtn(PAGE_1_HOME, P1_INC, PUSH)){ 00057 tPush.start(); 00058 tSpeed.start(); 00059 tPop.stop(); 00060 tPop.reset(); 00061 incFlag = true; 00062 scrnUpdate = true; 00063 led1=1; 00064 led2=0; 00065 } 00066 else 00067 if(touchBtn(PAGE_1_HOME, P1_DEC, PUSH)){ 00068 tPush.start(); 00069 tSpeed.start(); 00070 tPop.stop(); 00071 tPop.reset(); 00072 decFlag = true; 00073 scrnUpdate = true; 00074 led3=1; 00075 led1=0; 00076 } 00077 else 00078 if(touchBtn(PAGE_1_HOME, P1_INC, POP)){ 00079 tPush.stop(); 00080 tPush.reset(); 00081 tPop.start(); 00082 incFlag = false; 00083 led1=0; 00084 led2=1; 00085 } 00086 00087 if(touchBtn(PAGE_1_HOME, P1_DEC, POP)){ 00088 tPush.stop(); 00089 tPush.reset(); 00090 tPop.start(); 00091 decFlag = false; 00092 led3=0; 00093 led1=1; 00094 } 00095 else 00096 if(touchBtn(PAGE_1_HOME, P1_MAX, PUSH)){ 00097 maxBtnPress = true; 00098 task = MAX; 00099 } 00100 else 00101 if(touchBtn(PAGE_1_HOME, P1_MAX, POP)){ 00102 maxBtnPress = false; 00103 } 00104 else 00105 if(touchBtn(PAGE_1_HOME, P1_SET, PUSH)){//load the auto restart button with its NVM setting 00106 00107 if(nvm.autoRestart == AUTO_RESTART_ON) 00108 lcd.nexSetDSBtn("bt0",ON); 00109 else 00110 if(nvm.autoRestart == AUTO_RESTART_OFF) 00111 lcd.nexSetDSBtn("bt0",OFF); 00112 } 00113 break; 00114 00115 case PAGE_2_INFO: 00116 break; 00117 case PAGE_3_MAIN: 00118 /////////////////////////////////////////////////////////////////////////////// 00119 // PAGE 3 MAIN MENU 00120 /////////////////////////////////////////////////////////////////////////////// 00121 /* 00122 if(touchBtn(PAGE_3_MAIN, P3_FLUID_LEV_MON, PUSH)){ 00123 00124 } 00125 else 00126 if(touchBtn(PAGE_3_MAIN, P3_SECURITY, PUSH)){ 00127 00128 } 00129 else 00130 if(touchBtn(PAGE_3_MAIN, P3_CONT_SETTINGS, PUSH)){ 00131 00132 00133 } 00134 else 00135 */ 00136 if(touchBtn(PAGE_3_MAIN, P3_INFO, PUSH)){ 00137 00138 //lcd.nexChgPage(BLANK_PAGE); 00139 00140 00141 00142 lcd.nexChgPage(PAGE_27_ABOUT); 00143 lcd.nexSendTxt("hardware",HARDWARE); 00144 lcd.nexSendTxt("software",SOFTWARE); 00145 lcd.nexSendTxt("date",__DATE__); 00146 lcd.nexSendTxt("time",__TIME__); 00147 lcd.nexSendTxt("author",AUTHOR); 00148 00149 } 00150 else 00151 if(touchBtn(PAGE_3_MAIN, P3_BACK, PUSH)) 00152 task = retLastStoredTask(savedTask); 00153 00154 break; 00155 00156 00157 case PAGE_7_FLUID_LEV_SET: 00158 /////////////////////////////////////////////////////////////////////////////// 00159 // PAGE 7 FLUID LEVEL SETTINGS 00160 /////////////////////////////////////////////////////////////////////////////// 00161 /* 00162 if(touchBtn(PAGE_7_FLUID_LEV_SET, P7_HOME, PUSH)) 00163 task = retLastStoredTask(savedTask); 00164 */ 00165 break; 00166 00167 case PAGE_8_FLOWU_ADJ: 00168 00169 /////////////////////////////////////////////////////////////////////////////// 00170 // PAGE 8 FLOW UNIT ADJUSTMENT 00171 /////////////////////////////////////////////////////////////////////////////// 00172 if(touchBtn(PAGE_8_FLOWU_ADJ, P8_DEC, PUSH)) 00173 dispList(i, DEC, menuStringID, menuStringArray, P8_MENU_ITEMS); 00174 else 00175 if(touchBtn(PAGE_8_FLOWU_ADJ, P8_INC, PUSH)) 00176 dispList(i, INC, menuStringID, menuStringArray, P8_MENU_ITEMS); 00177 else 00178 if(touchBtn(PAGE_8_FLOWU_ADJ, P8_OK, PUSH)){ 00179 lcd.nexSetFontCol("data", GREEN); 00180 nvm.flowUnits = uFlowUnitID[i[1]]; 00181 writeNVMByte(NVM_FLOW_UNITS,nvm.flowUnits); 00182 decodeByteNVM(nvm.flowUnits, &precision); 00183 nvm.flowUnitVal = ((flowPercent/100)*maxScale); 00184 writeNVMfloat(NVM_FLOWU_VAL,nvm.flowUnitVal); 00185 } 00186 else 00187 if(touchBtn(PAGE_8_FLOWU_ADJ, P8_HOME, PUSH)) 00188 task = retLastStoredTask(savedTask); 00189 else 00190 if(touchBtn(PAGE_8_FLOWU_ADJ, P8_BACK, PUSH)) 00191 lcd.nexChgPage(PAGE_9_SETTINGS); 00192 break; 00193 00194 case PAGE_9_SETTINGS: 00195 /////////////////////////////////////////////////////////////////////////////// 00196 // PAGE 9 GENERAL SETTINGS 00197 /////////////////////////////////////////////////////////////////////////////// 00198 if(touchBtn(PAGE_9_SETTINGS, P9_AUTO_RESTART, PUSH)){ 00199 if(nvm.autoRestart == AUTO_RESTART_ON){//read the present auto restart state and toggle to alternative state 00200 lcd.nexSetDSBtn("bt0",OFF); 00201 00202 nvm.autoRestart = AUTO_RESTART_OFF; 00203 writeNVMByte(NVM_AUTO_RESTART, nvm.autoRestart); 00204 } 00205 else 00206 if(nvm.autoRestart == AUTO_RESTART_OFF){ 00207 lcd.nexSetDSBtn("bt0",ON); 00208 00209 nvm.autoRestart = AUTO_RESTART_ON; 00210 writeNVMByte(NVM_AUTO_RESTART, nvm.autoRestart); 00211 } 00212 //DO NOT RETURN TO A TASK 00213 } 00214 else 00215 if(touchBtn(PAGE_9_SETTINGS, P9_FLOW_UNITS, PUSH)){ 00216 lcd.nexChgPage(PAGE_8_FLOWU_ADJ); 00217 //lcd.nexSendTxt("title","Flow Units"); 00218 //lcd.nexSendTxt("btnOK","OK"); 00219 00220 menuStringID = FLOW_U_STRING_LIST; 00221 00222 i[y] = decodeByteNVM(nvm.flowUnits, &precision); 00223 00224 if(i[y] == 0){i[x] = 9; i[z] = 1;} 00225 else 00226 if(i[y] == 9){i[x] = 8; i[z] = 0;} 00227 else{i[x] = (i[1]-1); i[z] = (i[1]+1);} 00228 00229 lcd.nexSendTxt("top",menuStringArray[0][i[x]]); 00230 lcd.nexSendTxt("data",menuStringArray[0][i[y]]); 00231 lcd.nexSendTxt("bot",menuStringArray[0][i[z]]); 00232 } 00233 /* 00234 else 00235 if(touchBtn(PAGE_9_SETTINGS, P9_ASS_NUM, PUSH)){ 00236 00237 } 00238 else 00239 if(touchBtn(PAGE_9_SETTINGS, P9_PUMP_LAB, PUSH)){ 00240 00241 } 00242 else 00243 if(touchBtn(PAGE_9_SETTINGS, P9_RESTORE, PUSH)){ 00244 00245 } 00246 else 00247 if(touchBtn(PAGE_9_SETTINGS, P9_LANG, PUSH)){ 00248 00249 } 00250 else 00251 */ 00252 if(touchBtn(PAGE_9_SETTINGS, P9_BACK, PUSH)) 00253 task = retLastStoredTask(savedTask); 00254 00255 break; 00256 00257 case PAGE_11_RESET: 00258 /////////////////////////////////////////////////////////////////////////////// 00259 // PAGE 11 RESET RUN HOURS / RESET VOLUME COUNTER 00260 /////////////////////////////////////////////////////////////////////////////// 00261 if(touchBtn(PAGE_11_RESET, P11_RESET, PUSH)){ 00262 00263 lcd.nexChgPage(PAGE_11_RESET); 00264 /* 00265 if(runHours) 00266 lcd.nexSendFloat("info1",0.0); 00267 else 00268 if(volCntr) 00269 lcd.nexSendFloat("info1",0.0); 00270 */ 00271 } 00272 break; 00273 00274 case PAGE_12_MODE: 00275 /////////////////////////////////////////////////////////////////////////////// 00276 // PAGE 12 CHANGE MODE 00277 /////////////////////////////////////////////////////////////////////////////// 00278 if(touchBtn(PAGE_12_MODE, P12_MANUAL, PUSH)){ 00279 nvm.runMode = MANUAL;//set manual mode 00280 writeNVMByte(NVM_RUN_MODE, nvm.runMode);//update EEPROM with manual mode 00281 //lcd.nexChgPage(PAGE_1_HOME); 00282 task = STOP_SCRN; 00283 } 00284 else 00285 if(touchBtn(PAGE_12_MODE, P12_ANALOGUE, PUSH)){ 00286 nvm.runMode = ANALOGUE;//set analogue mode 00287 writeNVMByte(NVM_RUN_MODE, nvm.runMode);//update EEPROM with analogue mode 00288 //lcd.nexChgPage(PAGE_1_HOME); 00289 task = ANALOGUE_SET; 00290 } 00291 else 00292 if(touchBtn(PAGE_12_MODE, P12_ANA_CAL, PUSH)){ 00293 00294 calComplete = false;//for new calibration entry make sure this flag is cleared 00295 00296 lcd.nexChgPage(PAGE_18_ANA_CAL_MODE); 00297 //lcd.nexSendTxt("btnLeft","Analogue"); 00298 //lcd.nexSendTxt("btnRight","Manual"); 00299 //lcd.nexSendTxt("title","4-20mA Calibration"); 00300 //lcd.nexSendTxt("info1","Select Analogue Signal"); 00301 //lcd.nexSendTxt("info2","or"); 00302 //lcd.nexSendTxt("info3","Manual Input"); 00303 //lcd.nexSendTxt("info4","Calibration"); 00304 } 00305 else 00306 if(touchBtn(PAGE_12_MODE, P12_CONTACT, PUSH)){ 00307 //nvm.runMode = CONTACT; 00308 //writeNVMByte(NVM_RUN_MODE,nvm.runMode); 00309 //task = runModeNVM(nvm.runMode);//reload page 1 titles 00310 } 00311 else 00312 if(touchBtn(PAGE_12_MODE, P12_FLUID_REC, PUSH)){ 00313 //nvm.runMode = FLUIDREC; 00314 //writeNVMByte(NVM_RUN_MODE,nvm.runMode); 00315 //task = runModeNVM(nvm.runMode);//reload page 1 titles 00316 } 00317 else 00318 if(touchBtn(PAGE_12_MODE, P12_FLOW_CAL, PUSH)){ 00319 00320 } 00321 else 00322 if(touchBtn(PAGE_12_MODE, P12_BACK, PUSH)){ 00323 task = retLastStoredTask(savedTask); 00324 } 00325 break; 00326 00327 case PAGE_14_ANA_CAL: 00328 /////////////////////////////////////////////////////////////////////////////// 00329 // PAGE 14 ANALOGUE CALIBRATION CONTROLS 00330 /////////////////////////////////////////////////////////////////////////////// 00331 if(touchBtn(PAGE_14_ANA_CAL, P14_INC, PUSH)){ 00332 tPush.start(); 00333 tPop.stop(); 00334 tPop.reset(); 00335 incFlag = true; 00336 scrnUpdate = true; 00337 led1=1; 00338 led2=0; 00339 } 00340 else 00341 if(touchBtn(PAGE_14_ANA_CAL, P14_DEC, PUSH)){ 00342 tPush.start(); 00343 tPop.stop(); 00344 tPop.reset(); 00345 decFlag = true; 00346 scrnUpdate = true; 00347 led3=1; 00348 led1=0; 00349 } 00350 else 00351 if(touchBtn(PAGE_14_ANA_CAL, P14_INC, POP)){ 00352 tPush.stop(); 00353 tPush.reset(); 00354 tPop.start(); 00355 incFlag = false; 00356 led1=0; 00357 led2=1; 00358 } 00359 else 00360 if(touchBtn(PAGE_14_ANA_CAL, P14_DEC, POP)){ 00361 tPush.stop(); 00362 tPush.reset(); 00363 tPop.start(); 00364 decFlag = false; 00365 led3=0; 00366 led1=1; 00367 } 00368 else 00369 if(touchBtn(PAGE_14_ANA_CAL, P14_OK, PUSH)){ 00370 okFlag = true; scrnUpdate = true; 00371 } 00372 else 00373 if(touchBtn(PAGE_14_ANA_CAL, P14_BACK, PUSH)){ 00374 stopLED = OFF; 00375 task = STOP_SCRN; 00376 00377 } 00378 break; 00379 00380 case PAGE_18_ANA_CAL_MODE: 00381 /////////////////////////////////////////////////////////////////////////////// 00382 // PAGE 18 4-20mA CALIBRATION MODE 00383 /////////////////////////////////////////////////////////////////////////////// 00384 if(touchBtn(PAGE_18_ANA_CAL_MODE, P18_MAN, PUSH)){ 00385 if(calComplete){ 00386 nvm.runMode = MANUAL; 00387 writeNVMByte(NVM_RUN_MODE, nvm.runMode);//update EEPROM with manual mode 00388 task = STOP_SCRN; 00389 } 00390 else 00391 { 00392 reset(); 00393 manFlag = true;//manual cal mode 00394 lcd.nexChgPage(PAGE_14_ANA_CAL); 00395 calState = CAL1_SCRN; 00396 scrnUpdate = true; 00397 task = ANA_CAL; 00398 } 00399 } 00400 else 00401 if(touchBtn(PAGE_18_ANA_CAL_MODE, P18_INPUT, PUSH)){ 00402 if(calComplete){ 00403 nvm.runMode = ANALOGUE; 00404 writeNVMByte(NVM_RUN_MODE,nvm.runMode); 00405 task = STOP_SCRN; 00406 } 00407 else{ 00408 reset(); 00409 manFlag = false;//signal cal mode 00410 lcd.nexChgPage(PAGE_14_ANA_CAL); 00411 calState = CAL1_SCRN; 00412 scrnUpdate = true; 00413 task = ANA_CAL; 00414 } 00415 } 00416 break; 00417 00418 case PAGE_27_ABOUT: 00419 /////////////////////////////////////////////////////////////////////////////// 00420 // PAGE 27 INFOMATION 00421 /////////////////////////////////////////////////////////////////////////////// 00422 if(touchBtn(PAGE_27_ABOUT, P27_BACK, PUSH)) 00423 task = retLastStoredTask(savedTask); 00424 break; 00425 00426 case PAGE_33_MA_OUT: 00427 /////////////////////////////////////////////////////////////////////////////// 00428 // PAGE 33 mA OUTPUT 00429 ////////////////////////////////////////////////////////////////////////////// 00430 if(touchBtn(PAGE_33_MA_OUT, P33_FULL_SCALE, PUSH)){ 00431 lcd.nexSetDSBtn("bt1", UNTICK);//display no tick 00432 lcd.nexSetDSBtn("bt0", TICK);//display output low tick 00433 nvm._4_20mAoutPut = _4_20MA_OUT_FULL_SCALE; 00434 writeNVMByte(NVM_4_20MA_OUT,nvm._4_20mAoutPut); 00435 } 00436 else 00437 if(touchBtn(PAGE_33_MA_OUT, P33_MATCH, PUSH)){ 00438 lcd.nexSetDSBtn("bt0", UNTICK);//display no tick 00439 lcd.nexSetDSBtn("bt1", TICK);//display output high tick 00440 nvm._4_20mAoutPut = _4_20MA_OUT_MATCH_INPUT_SCALE; 00441 writeNVMByte(NVM_4_20MA_OUT,nvm._4_20mAoutPut); 00442 } 00443 break; 00444 00445 case PAGE_34_START_STOP: 00446 /////////////////////////////////////////////////////////////////////////////// 00447 // PAGE 34 RUN/STOP INPUT 00448 ////////////////////////////////////////////////////////////////////////////// 00449 if(touchBtn(PAGE_34_START_STOP, P34_LOW, PUSH)){ 00450 lcd.nexSetDSBtn("bt0", UNTICK); 00451 lcd.nexSetDSBtn("bt1", TICK); 00452 nvm.rmtStopPump = RMT_STOP_PUMP_LOW; 00453 writeNVMByte(NVM_RMT_STOP_PUMP,nvm.rmtStopPump); 00454 } 00455 else 00456 if(touchBtn(PAGE_34_START_STOP, P34_HIGH, PUSH)){ 00457 lcd.nexSetDSBtn("bt0", TICK);//display no tick 00458 lcd.nexSetDSBtn("bt1", UNTICK);//display output high tick 00459 nvm.rmtStopPump = RMT_STOP_PUMP_HIGH; 00460 writeNVMByte(NVM_RMT_STOP_PUMP,nvm.rmtStopPump); 00461 } 00462 else 00463 if(touchBtn(PAGE_34_START_STOP, P34_HOME, PUSH)) 00464 lcd.nexChgPage(PAGE_1_HOME); 00465 else 00466 if(touchBtn(PAGE_34_START_STOP, P34_BACK, PUSH)) 00467 lcd.nexChgPage(PAGE_3_MAIN); 00468 break; 00469 00470 case PAGE_35_CONT_SET: 00471 /////////////////////////////////////////////////////////////////////////////// 00472 // PAGE 35 INPUT/OUTPUT CONTROL SETTINGS 00473 /////////////////////////////////////////////////////////////////////////////// 00474 if(touchBtn(PAGE_35_CONT_SET, P35_INPUT, PUSH)){//input button pressed 00475 lcd.nexChgPage(PAGE_34_START_STOP); 00476 lcd.nexSendTxt("title34","Run/Stop input"); 00477 00478 if(nvm.rmtStopPump == RMT_STOP_PUMP_LOW){//Read the settings 00479 lcd.nexSetDSBtn("bt0", UNTICK);//display info 00480 lcd.nexSetDSBtn("bt1", TICK);//display info 00481 } 00482 else 00483 if(nvm.rmtStopPump == RMT_STOP_PUMP_HIGH){//Read the settings 00484 lcd.nexSetDSBtn("bt0", TICK);//display info 00485 lcd.nexSetDSBtn("bt1", UNTICK);//display info 00486 } 00487 } 00488 else 00489 if(touchBtn(PAGE_35_CONT_SET, P35_OUTPUT1, PUSH)){//Output 1 button pressed 00490 lcd.nexChgPage(PAGE_36_CONT_ADJ); 00491 00492 if(nvm.outPut1Logic == OUT1_LOGIC_HI){//Read the settings 00493 lcd.nexSetDSBtn("bt1", TICK);//display info 00494 lcd.nexSetDSBtn("bt0", UNTICK);//display info 00495 } 00496 else 00497 if(nvm.outPut1Logic == OUT1_LOGIC_LO){//Read the settings 00498 lcd.nexSetDSBtn("bt1", UNTICK);//display info 00499 lcd.nexSetDSBtn("bt0", TICK);//display info 00500 } 00501 00502 lcd.nexSendTxt("title36","Output 1"); 00503 lcd.nexSendTxt("t0","LOW"); 00504 lcd.nexSendTxt("t1","HIGH"); 00505 menuStringID = OUTPUT1_LIST; 00506 i[y] = ReadListIndexNVM(nvm.outPut1); 00507 lcd.nexSendTxt("data",menuStringArray[menuStringID][i[y]]); 00508 } 00509 else 00510 if(touchBtn(PAGE_35_CONT_SET, P35_OUTPUT2, PUSH)){//Output 2 button pressed 00511 lcd.nexChgPage(PAGE_36_CONT_ADJ);//display 00512 00513 if(nvm.outPut2Logic == OUT2_LOGIC_HI){ 00514 lcd.nexSetDSBtn("bt1", TICK);//display info 00515 lcd.nexSetDSBtn("bt0", UNTICK);//display info 00516 } 00517 else 00518 if(nvm.outPut2Logic == OUT2_LOGIC_LO){ 00519 lcd.nexSetDSBtn("bt1", UNTICK);//display info 00520 lcd.nexSetDSBtn("bt0", TICK);//display info 00521 } 00522 00523 lcd.nexSendTxt("title36","Output 2");//display 00524 lcd.nexSendTxt("t0","LOW"); 00525 lcd.nexSendTxt("t1","HIGH"); 00526 menuStringID = OUTPUT2_LIST;//set the menu string ID for list for output 2 00527 i[y] = ReadListIndexNVM(nvm.outPut2);//get the index of the present output 2 setting from nvm 00528 lcd.nexSendTxt("data",menuStringArray[menuStringID][i[y]]);//display the current nvm setting 00529 } 00530 else 00531 if(touchBtn(PAGE_35_CONT_SET, P35_MA_OUTPUT, PUSH)){//mA output button pressed 00532 lcd.nexChgPage(PAGE_33_MA_OUT);//display 00533 lcd.nexSendTxt("title33","4-20mA Output scale"); 00534 lcd.nexSendTxt("info1","Pin 3: Full scale 0 to 125 RPM"); 00535 lcd.nexSendTxt("info2","Pin 3: Match input scale"); 00536 00537 if(nvm._4_20mAoutPut == _4_20MA_OUT_FULL_SCALE){ 00538 lcd.nexSetDSBtn("bt1", UNTICK);//display 00539 lcd.nexSetDSBtn("bt0", TICK);//display 00540 } 00541 else 00542 if(nvm._4_20mAoutPut == _4_20MA_OUT_MATCH_INPUT_SCALE){ 00543 lcd.nexSetDSBtn("bt1", TICK);//display 00544 lcd.nexSetDSBtn("bt0", UNTICK);//display 00545 } 00546 } 00547 else 00548 if(touchBtn(PAGE_35_CONT_SET, P35_SPEED_LIMIT, PUSH)){//Speed limit button pressed 00549 lcd.nexChgPage(PAGE_31_SPEED_LIMIT); 00550 //speedLimit = 00551 00552 } 00553 else 00554 if(touchBtn(PAGE_35_CONT_SET, P35_RUN_HOURS, PUSH)){//Run hours button pressed 00555 lcd.nexChgPage(PAGE_11_RESET); 00556 lcd.nexSendTxt("title11","Run Hours"); 00557 lcd.nexSendTxt("btn","RESET"); 00558 lcd.nexSendTxt("info1","159"); 00559 lcd.nexSendTxt("info5","Hours"); 00560 bool runHours = 1; 00561 bool volCntr = 0; 00562 } 00563 else 00564 if(touchBtn(PAGE_35_CONT_SET, P35_VOLUME_CNTR, PUSH)){//Reset flow counter button pressed 00565 lcd.nexChgPage(PAGE_11_RESET); 00566 lcd.nexSendTxt("title11","Volume Counter"); 00567 lcd.nexSendTxt("btn","RESET"); 00568 lcd.nexSendTxt("info1","60"); 00569 lcd.nexSendTxt("info5","Litres"); 00570 bool runHours = 0; 00571 bool volCntr = 1; 00572 } 00573 else 00574 if(touchBtn(PAGE_35_CONT_SET, P35_SCALE_FACTOR, PUSH)){ 00575 00576 } 00577 break; 00578 00579 case PAGE_36_CONT_ADJ: 00580 /////////////////////////////////////////////////////////////////////////////// 00581 // PAGE 36 CONTROL SETTINGS ADJUSTMENT 00582 /////////////////////////////////////////////////////////////////////////////// 00583 if(touchBtn(PAGE_36_CONT_ADJ, P36_DEC, PUSH)){ 00584 dispList(i, INC, menuStringID, menuStringArray, P36_MENU_ITEMS); 00585 //pc.printf("\r\n\r\nx = 0x%X, y = 0x%X, z = 0x%X, ",i[x],i[y],i[z]); 00586 } 00587 else 00588 if(touchBtn(PAGE_36_CONT_ADJ, P36_INC, PUSH)){ 00589 dispList(i, DEC, menuStringID, menuStringArray, P36_MENU_ITEMS); 00590 //pc.printf("\r\n\r\nx = 0x%X, y = 0x%X, z = 0x%X, ",i[x],i[y],i[z]); 00591 } 00592 else 00593 if(touchBtn(PAGE_36_CONT_ADJ, P36_LOW, PUSH)){//Low button pressed 00594 if(menuStringID == OUTPUT1_LIST){//Output 1 selected 00595 lcd.nexSetDSBtn("bt1", UNTICK);//Untick High 00596 lcd.nexSetDSBtn("bt0", TICK);//Tick Low 00597 nvm.outPut1Logic = OUT1_LOGIC_LO;//Set Low for output 1 in global structure 00598 writeNVMByte(NVM_OUTPUT1_LOGIC,nvm.outPut1Logic);//write Low for output 1 to NVM 00599 } 00600 else 00601 if(menuStringID == OUTPUT2_LIST){//Output 2 selected 00602 lcd.nexSetDSBtn("bt1", UNTICK);//Untick High 00603 lcd.nexSetDSBtn("bt0", TICK);//Tick Low 00604 nvm.outPut2Logic = OUT2_LOGIC_LO;//Set Low for output 2 in global structure 00605 writeNVMByte(NVM_OUTPUT2_LOGIC,nvm.outPut2Logic);//write Low for output 2 to NVM 00606 } 00607 } 00608 else 00609 if(touchBtn(PAGE_36_CONT_ADJ, P36_HIGH, PUSH)){//High button pressed 00610 if(menuStringID == OUTPUT1_LIST){//Output 1 selected 00611 lcd.nexSetDSBtn("bt0", UNTICK);//Untick Low 00612 lcd.nexSetDSBtn("bt1", TICK);//Tick High 00613 nvm.outPut1Logic = OUT1_LOGIC_HI;//Set High for output 1 in global structure 00614 writeNVMByte(NVM_OUTPUT1_LOGIC,nvm.outPut1Logic);//write High for output 1 to NVM 00615 } 00616 else 00617 if(menuStringID == OUTPUT2_LIST){//Output 2 selected 00618 lcd.nexSetDSBtn("bt0", UNTICK);//Untick Low 00619 lcd.nexSetDSBtn("bt1", TICK);//Tick High 00620 nvm.outPut2Logic = OUT2_LOGIC_HI;//Set High for output 2 in global structure 00621 writeNVMByte(NVM_OUTPUT2_LOGIC,nvm.outPut2Logic);//write High for output to NVM 00622 } 00623 } 00624 else 00625 if(touchBtn(PAGE_36_CONT_ADJ, P36_OK, PUSH)){ 00626 00627 lcd.nexSetFontCol("data", GREEN); 00628 00629 switch(menuStringID){ 00630 case OUTPUT1_LIST: 00631 nvm.outPut1 = uOutPut1_ID[i[y]]; 00632 writeNVMByte(NVM_OUTPUT1,nvm.outPut1); 00633 break; 00634 00635 case OUTPUT2_LIST: 00636 nvm.outPut2 = uOutPut2_ID[i[y]]; 00637 writeNVMByte(NVM_OUTPUT2,nvm.outPut2); 00638 break; 00639 } 00640 //task = retLastStoredTask(savedTask); 00641 } 00642 break; 00643 } 00644 return(task); 00645 } 00646 00647 /////////////////////////////////////////////////////////////////////////////// 00648 // SCAN NEXTION TOUCH KEYS 00649 /////////////////////////////////////////////////////////////////////////////// 00650 uint8_t nexKeyScan(uint8_t presentTask, uint8_t savedTask){ 00651 /* 00652 Do not place any delays or function that take too much time as this is an ISR message service, use a flag in the main routing instead 00653 */ 00654 00655 /* 00656 Nextion RX interrupt sets the keyScanFlag 00657 when a touch key command has been received 00658 the switch below filters which Nextion page 00659 has sent the command 00660 */ 00661 static uint8_t task = presentTask; 00662 00663 if(task != ANA_CAL) 00664 task = presentTask; 00665 00666 if(keyScanFlag == true){//RX ISR sets this flag 00667 keyScanFlag = false; 00668 task = nexPage(presentTask, savedTask); 00669 } 00670 return(task);//return back to the present task or next task 00671 }
Generated on Tue Jul 19 2022 00:58:42 by
1.7.2