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.
Dependencies: TS_DISCO_F746NG mbed LCD_DISCO_F746NG BSP_DISCO_F746NG lvgl_RB FastPWM millis
main.cpp
00001 #include "mbed.h" 00002 #include "TS_DISCO_F746NG.h" 00003 #include "LCD_DISCO_F746NG.h" 00004 #include "lvgl/lvgl.h" 00005 #include "lv_conf.h " 00006 #include "millis.h" 00007 #include "FastPWM.h" 00008 #include <string> 00009 //#include <stdio.h> 00010 #include "lv_i18n.h" 00011 00012 #include "lv_theme_rb.h" //GABOR 00013 00014 Ticker ticker; //Initialize system tick 00015 LCD_DISCO_F746NG lcd; //Initialize display driver 00016 TS_DISCO_F746NG ts; //Initialize touchpad driver 00017 TS_StateTypeDef TS_State; //Initialize touch state sctruct 00018 00019 Serial serial(USBTX, USBRX); 00020 00021 /********************* 00022 * ENTREES SORTIES 00023 *********************/ 00024 //TENSION BATTERIE 00025 AnalogIn AI_TENSION_BAT(A4); 00026 00027 //PWM 00028 FastPWM fastpwm(D12,1); //steup pwm output on pin d12 with a prescaler of 1 00029 00030 //MARCHE POMPE 00031 DigitalOut DO_POMPE(D13); 00032 00033 //COMPTEUR IMPULSION 00034 DigitalIn DI_CPTPuls(D7); 00035 //InterruptIn DI_CPTPuls(D7); // 00036 00037 00038 00039 /********************** 00040 * VARIABLES GENERALES 00041 **********************/ 00042 int X; 00043 int Y; 00044 Timer tempo; 00045 bool Top1ms; 00046 bool Top10ms; 00047 bool Top100ms; 00048 bool Top1s; 00049 bool Top5s; 00050 bool Top1min; 00051 char text[100]; 00052 char text2[100]; 00053 00054 int CsgPompe=0; 00055 00056 uint64_t Micros=0; 00057 00058 uint64_t MemMicros0=0; 00059 uint64_t MemMicros1=0; 00060 uint64_t MemMicros2=0; 00061 uint64_t MemMicros3=0; 00062 uint64_t MemMicros4=0; 00063 uint64_t MemMicros5=0; 00064 00065 00066 00067 int CalcFmPuls; 00068 int CalcFdPuls; 00069 bool FmCPTPuls; 00070 uint64_t TimerPuls=0; 00071 uint64_t TpsPuls=0; 00072 float Calcul=0; 00073 uint64_t MemTpsPuls=0; 00074 uint64_t MemTps16Puls=0; 00075 int NumDent=0; 00076 uint64_t CptPuls=0; 00077 uint64_t CalcDebit=0; 00078 float TpsEntre2Puls[20]; 00079 float TpsMinEntre2Puls; 00080 float TpsMaxEntre2Puls; 00081 float VolParTour=1200;//en ml 00082 00083 int hres = 480; 00084 int vres = 272; 00085 bool CDA_POMPE; 00086 00087 uint64_t TpsMaPpe=0; 00088 00089 00090 uint64_t test=0; 00091 00092 //VARIABLES GESTION MOT DE PASSE 00093 00094 00095 /********************* 00096 * FONCTIONS GENERALES 00097 *********************/ 00098 static char *S(string S); 00099 char *Chemin; 00100 static char *HHMMSS(int32_t seconde); 00101 00102 /********************* 00103 * OBJET PAGES 00104 *********************/ 00105 static lv_obj_t * BandeauHaut; 00106 static void AFFBandeauHaut(int Num); 00107 static lv_obj_t * SousMenu; 00108 static void AFFSousMenu(int Num); 00109 static lv_obj_t * Page; 00110 int PageAff=0; 00111 int MemPageAff=0; 00112 static void AFFPage(int Num); 00113 00114 00115 static lv_obj_t * PopupMDP; 00116 static void AFFPopupMDP(); 00117 00118 static void init_all_themes(uint16_t hue); 00119 00120 /********************* 00121 * OBJET GENERAUX 00122 *********************/ 00123 static lv_obj_t *mbox; 00124 00125 /***************************** 00126 * VARIABLES/OBJETS CONNEXION 00127 *****************************/ 00128 static lv_obj_t * SelectID; 00129 static lv_obj_t * MDP; 00130 static void SelectID_ACT(lv_obj_t * obj, lv_event_t event); 00131 uint32_t TpsMdpEnCours=0; 00132 struct Personne 00133 { 00134 string Nom; 00135 string MDP; //mot de passe à 4 chiffres 00136 int Niveau; //0:aucun 1:Opérateur 2:superviseur 3:constructeur 00137 int Tps; //Temps de connexion 00138 }; 00139 Personne User[100]; 00140 Personne UserEC; 00141 00142 /********* 00143 * ETALON 00144 *********/ 00145 struct HistoEtal{ 00146 int Annee; 00147 int Mois; 00148 float ProvDeriv1;//Provision de dérive étalon 00149 bool Ajustage;//Ajustage réalisé 00150 }; 00151 00152 struct Etalon 00153 { 00154 string Nom; 00155 float ValPuls; //Valeur impulsion compteur 00156 float EMT; //Ecart maximum toléré 00157 HistoEtal Hist[5]; //historique étalon 00158 }; 00159 Etalon EtalCpt[20]; 00160 Etalon EtaTemp[20]; 00161 Etalon EtalMano[20]; 00162 00163 Etalon EtalCptEC; 00164 Etalon EtaTempEC; 00165 Etalon EtalManoEC; 00166 00167 /*****************************/ 00168 00169 static void BpValidMDP_ACT(lv_obj_t * btn, lv_event_t event); 00170 static void BpAnnulMDP_ACT(lv_obj_t * btn, lv_event_t event); 00171 static void mboxMdp_ACT(lv_obj_t * btn, lv_event_t event); 00172 static void mboxMdp_ACT2(lv_obj_t * btn, lv_event_t event); 00173 static void kb_MDP_ACT(lv_obj_t * event_kb, lv_event_t event); 00174 static void mbox_ACT(lv_obj_t * obj, lv_event_t event); 00175 00176 /********************* 00177 * OBJETS BP MENU 00178 *********************/ 00179 00180 static lv_obj_t * BPMENU; 00181 static lv_obj_t * M100; 00182 static lv_obj_t * M200; 00183 static lv_obj_t * M300; 00184 static lv_obj_t * M400; 00185 static lv_obj_t * M500; 00186 static lv_obj_t * M600; 00187 static lv_obj_t * M700; 00188 00189 //FONCTIONS ASSOCIEES 00190 00191 static void BPMENU_ACT(lv_obj_t * btn, lv_event_t event); 00192 static void M100_ACT(lv_obj_t * btn, lv_event_t event); 00193 static void M200_ACT(lv_obj_t * btn, lv_event_t event); 00194 static void M300_ACT(lv_obj_t * btn, lv_event_t event); 00195 static void M400_ACT(lv_obj_t * btn, lv_event_t event); 00196 static void M500_ACT(lv_obj_t * btn, lv_event_t event); 00197 static void M600_ACT(lv_obj_t * btn, lv_event_t event); 00198 static void M700_ACT(lv_obj_t * btn, lv_event_t event); 00199 00200 static void SM_ACT(lv_obj_t * btn, lv_event_t event); 00201 00202 int TpsAvFermMenu=5000; 00203 int TpsAvFermSousMenu=5000; 00204 int NumBandeauHaut; 00205 int NumSousMenu; 00206 bool DdeFermBandeauHaut; 00207 00208 /********************* 00209 * OBJETS 00210 *********************/ 00211 static lv_obj_t *FondGris ; 00212 static lv_obj_t *FondGris2 ; 00213 00214 /********************* 00215 * MATRICE DE BOUTONS 00216 *********************/ 00217 static const char * PAVE_MDP_MAP[] = {"7", "8", "9", LV_SYMBOL_CLOSE,"\n", 00218 "4", "5","6", LV_SYMBOL_OK, "\n", 00219 "1", "2", "3", LV_SYMBOL_BACKSPACE,"\n", 00220 "0", ""}; 00221 00222 00223 static const char * PAVE_NUMERIQUE_MAP[] = { 00224 "7", "8", "9","\n", 00225 "4", "5","6","\n", 00226 "1", "2", "3","\n", 00227 "0",",","+/-","\n", 00228 LV_SYMBOL_BACKSPACE,LV_SYMBOL_OK, LV_SYMBOL_CLOSE, ""}; 00229 00230 00231 // "7", "8", "9","\n", 00232 // "4", "5","6", "\n", 00233 // "1", "2", "3","\n", 00234 // "0", ".","+/-","\n", 00235 // LV_SYMBOL_BACKSPACE, LV_SYMBOL_OK,LV_SYMBOL_CLOSE}; 00236 /********************* 00237 * STYLES 00238 *********************/ 00239 static lv_style_t P10,P12,P16,P18,P22,PG12,PG16,PG18,PG22; 00240 static lv_style_t P16Saisie; 00241 static lv_style_t Style_BP; 00242 00243 static void StyleBPSM(lv_obj_t * Obj); 00244 static void StyleBPM(lv_obj_t * Obj); 00245 00246 /********************* 00247 * MULTILANGUE 00248 *********************/ 00249 static void LANGUE_FR_ACT(lv_obj_t * btn, lv_event_t event); 00250 static void LANGUE_EN_ACT(lv_obj_t * btn, lv_event_t event); 00251 00252 00253 void initialisation(); 00254 void interruptCompteur(); 00255 00256 static void BPRAZ_ACT(lv_obj_t * btn, lv_event_t event); 00257 static void BPPOMPE_ACT(lv_obj_t * btn, lv_event_t event); 00258 static lv_theme_t * th_act; 00259 static lv_obj_t * label; 00260 static lv_obj_t * label01; 00261 static lv_obj_t * label02; 00262 static lv_obj_t * label03; 00263 static lv_obj_t * label04; 00264 00265 static lv_obj_t * AffCptPuls; 00266 static lv_obj_t * Aff1TpsEntre2Puls; 00267 static lv_obj_t * Aff2TpsEntre2Puls; 00268 static lv_obj_t * AffTpsMinEntre2Puls; 00269 static lv_obj_t * AffTpsMaxEntre2Puls; 00270 static lv_obj_t * BPRAZ; 00271 static lv_obj_t * BPPOMPE; 00272 00273 00274 static lv_obj_t * AffChemin; 00275 static lv_obj_t * AffSymbBat; 00276 static lv_obj_t * AffPourcBat; 00277 00278 /************************ 00279 * TYPE DONNEES A SAISIR 00280 ************************/ 00281 static lv_obj_t * kb; 00282 lv_obj_t *ChSaisi; 00283 00284 typedef struct Float_S 00285 { 00286 float Val; 00287 const char * Unit; 00288 lv_obj_t * Aff; 00289 float Min; 00290 float Max; 00291 int Niveau; //0:aucun 1:Opérateur 2:superviseur 3:constructeur 00292 const char * Txt; 00293 }; 00294 static Float_S *SaisieFloat; 00295 static void DdeSaisieFloat(lv_obj_t * label, lv_event_t event); 00296 static void PageSaisieFloat(lv_obj_t * label); 00297 static void KbSaisieFloat_ACT(lv_obj_t * event_kb, lv_event_t event); 00298 00299 typedef struct Int_S 00300 { 00301 int Val; 00302 const char * Unit; 00303 lv_obj_t * Aff; 00304 int Min; 00305 int Max; 00306 int Niveau; //0:aucun 1:Opérateur 2:superviseur 3:constructeur 00307 const char * Txt; 00308 }; 00309 static Int_S *SaisieInt; 00310 static void DdeSaisieInt(lv_obj_t * label, lv_event_t event); 00311 static void PageSaisieInt(lv_obj_t * label); 00312 static void KbSaisieInt_ACT(lv_obj_t * event_kb, lv_event_t event); 00313 00314 00315 typedef struct Txt_S 00316 { 00317 char Val[]; 00318 lv_obj_t * Aff; 00319 int Niveau; //0:aucun 1:Opérateur 2:superviseur 3:constructeur 00320 const char * Txt; 00321 int NbCarMax; 00322 }; 00323 static Txt_S *SaisieTxt; 00324 static void DdeSaisieTxt(lv_obj_t * label, lv_event_t event); 00325 static void PageSaisieTxt(lv_obj_t * label); 00326 static void KbSaisieTxt_ACT(lv_obj_t * event_kb, lv_event_t event); 00327 00328 /************************** 00329 * TYPE DONNEES A AFFICHER 00330 **************************/ 00331 typedef struct Float_A 00332 { 00333 float Val; 00334 const char * Unit; 00335 lv_obj_t * Aff; 00336 }; 00337 typedef struct Int_A 00338 { 00339 long int Val; 00340 const char * Unit; 00341 lv_obj_t * Aff; 00342 }; 00343 typedef struct Txt_A 00344 { 00345 const char * Val; 00346 lv_obj_t * Aff; 00347 }; 00348 00349 00350 /********************* 00351 * DONNEES A AFFICHER 00352 *********************/ 00353 Float_S CsgDebit; 00354 Float_A Volume; 00355 Float_A Debit; 00356 Float_A DebitMoy; 00357 Txt_A ProgEC; 00358 Int_A Duree; 00359 Int_A TotalisateurVol; 00360 Int_A TotalisateurDuree; 00361 Int_S NPremiereMin; 00362 Int_S NDerniereMin; 00363 Float_A DebNPremiereMin; 00364 Float_A DebNDerniereMin; 00365 Float_A EcartType; 00366 Float_A TensionBat; 00367 Float_A Intensite; 00368 Float_A VitessePpe; 00369 Float_A ConsoPrelev; 00370 Float_A Puissance; 00371 Txt_S NomEquipement; 00372 Txt_S NumSerieEquipement; 00373 00374 float MoyTensBat[101]; 00375 float TpsCy=0; 00376 uint64_t CalcTpsCy=0; 00377 static lv_obj_t * AffTpsCy; 00378 00379 void lv_ticker_func(); 00380 void my_disp_flush(lv_disp_drv_t* disp_drv, const lv_area_t* area, lv_color_t* color_p); 00381 bool my_touchpad_read(lv_indev_drv_t * indev_driver, lv_indev_data_t * data); 00382 static void event_handler(lv_obj_t * obj, lv_event_t event); 00383 00384 00385 static void ddlist_event_cb(lv_obj_t * ddlist, lv_event_t event); 00386 static lv_obj_t * slider; 00387 00388 int PosX_MenuDepart = 0; 00389 int PosX_MenuCible = 0; 00390 bool DdeAlignMenu = 0; 00391 00392 int PosY_AnimSousMenu = 0; 00393 int AnimSousMenu=0; 00394 00395 00396 static void Reglage_R_RGB(lv_obj_t * obj, lv_event_t event); 00397 00398 int TestAff = 0; 00399 00400 00401 static lv_obj_t * Val_R; 00402 00403 static lv_obj_t * R; 00404 00405 00406 int Reglage_R; 00407 uint8_t Reglage_G; 00408 uint8_t Reglage_B; 00409 uint32_t Reglage_RGB; 00410 00411 uint8_t R1=255,G1=255,B1=255, 00412 R2=0 ,G2=0 ,B2=0, 00413 R3=114 ,G3=179 ,B3=244, 00414 R4=255,G4=255,B4=240, 00415 R5=0,G5=145,B5=145, 00416 R6=0,G6=0,B6=0, 00417 R7=255,G7=255,B7=240, 00418 R8=114 ,G8=179 ,B8=244, 00419 R9=0,G9=145,B9=145, 00420 R10=155,G10=238,B10=131, 00421 R11=145,G11=145,B11=145, 00422 R12=51,G12=37,B12=22, 00423 R13=255,G13=255,B13=255, 00424 R14=153,G14=158,B14=117; 00425 00426 int NumCouleur=0; 00427 00428 00429 static lv_theme_t * themes[8]; 00430 00431 00432 int main() 00433 { 00434 //demarrage communication avec PC 00435 serial.baud(9600); 00436 serial.printf("DEBUT DE PROGRAMME\r\n"); 00437 //Entree impulsion 00438 DI_CPTPuls.mode(PullUp); 00439 00440 //lcd.DisplayStringAt(0, LINE(5), (uint8_t *)"LittlevGL DEMO", CENTER_MODE); 00441 ticker.attach(&lv_ticker_func,0.005);// Appel de la fonction LittlVGL toutes les 5ms 00442 wait(0.5); 00443 lv_init(); //Initialize the LittlevGL 00444 00445 static lv_disp_buf_t disp_buf; 00446 static lv_color_t buf[LV_HOR_RES_MAX * 10]; //Declare a buffer for 10 lines 00447 lv_disp_buf_init(&disp_buf, buf, NULL, LV_HOR_RES_MAX * 10); //Initialize the display buffer 00448 00449 //Implement and register a function which can copy a pixel array to an area of your display 00450 lv_disp_drv_t disp_drv; //Descriptor of a display driver 00451 lv_disp_drv_init(&disp_drv); //Basic initialization 00452 disp_drv.flush_cb = my_disp_flush; //Set your driver function 00453 disp_drv.buffer = &disp_buf; //Assign the buffer to the display 00454 lv_disp_drv_register(&disp_drv); //Finally register the driver 00455 00456 //Implement and register a function which can read an input device. E.g. for a touch pad 00457 ts.Init(lcd.GetXSize(), lcd.GetYSize()); //ST touch initialization 00458 lv_indev_drv_t indev_drv; //Descriptor of a input device driver 00459 lv_indev_drv_init(&indev_drv); //Basic initialization 00460 indev_drv.type = LV_INDEV_TYPE_POINTER; //Touch pad is a pointer-like device 00461 indev_drv.read_cb = my_touchpad_read; //Set your driver function 00462 lv_indev_drv_register(&indev_drv); //Finally register the driver 00463 00464 //INITIALISATION MULTILANGUE 00465 lv_i18n_init(lv_i18n_language_pack); 00466 lv_i18n_set_locale("fr"); 00467 00468 initialisation(); 00469 AFFBandeauHaut(2); 00470 AFFPage(102); 00471 00472 //demarrage tempo générale 00473 tempo.start(); 00474 //Interruption compteur 00475 // DI_CPTPuls.rise(&interruptCompteur); 00476 00477 while(1) { 00478 00479 //TEMPO GENERALE 00480 Micros=tempo.read_high_resolution_us(); 00481 //TOP base de temps 00482 Top1ms=false; if (Micros>=MemMicros0+1000) { Top1ms=true; MemMicros0=MemMicros0+1000; } 00483 Top10ms=false; if (Micros>=MemMicros1+10000) { Top10ms=true; MemMicros1=MemMicros1+10000; } 00484 Top100ms=false; if (Micros>=MemMicros2+100000) { Top100ms=true; MemMicros2=MemMicros2+100000; } 00485 Top1s=false; if (Micros>=MemMicros3+1000000) { Top1s=true; MemMicros3=MemMicros3+1000000; } 00486 Top5s=false; if (Micros>=MemMicros4+5000000) { Top5s=true; MemMicros4=MemMicros4+5000000; } 00487 Top1min=false; if (Micros>=MemMicros5+60000000) { Top1min=true; MemMicros5=MemMicros5+60000000; } 00488 00489 00490 //temps fonctionnement pompe 00491 if (Top1s){ 00492 if (DO_POMPE) {TpsMaPpe++;} 00493 } 00494 //ARRET POMPE SI TENSION BATTERIE <2,9V 00495 if (Top1min){ 00496 if (TensionBat.Val<2.9) { 00497 DO_POMPE=false; 00498 //if (R!=NULL){ lv_slider_set_value(R,10000,LV_ANIM_ON);} 00499 Reglage_R=10000; 00500 } 00501 serial.printf("Temps fonctionnment pompe= %ds Tension= %3.3fV \r\n",TpsMaPpe,TensionBat); //ENREGISTREMENT DONNEES 00502 } 00503 00504 00505 //CALCUL TEMPS DE CYCLE 00506 CalcTpsCy++; 00507 if (Top1s){ 00508 TpsCy=1000000000/CalcTpsCy; 00509 TpsCy=TpsCy/1000; 00510 CalcTpsCy=0; 00511 Duree.Val++; 00512 } 00513 //Raffraichissement affichage toutes les 10ms 00514 if (Top10ms){ 00515 lv_task_handler(); 00516 } 00517 00518 //MISE A JOUR DES VARIABLES AFFICHEES 00519 if (Top1s or MemPageAff!=PageAff){ 00520 MemPageAff=PageAff; 00521 //bandeau haut 00522 if (NumBandeauHaut==1){ 00523 sprintf(text, Chemin); 00524 lv_label_set_text(AffChemin, text); 00525 } 00526 //Raffraichissement données affichées 00527 AFFPage(0); 00528 } 00529 00530 //DETECTION IMPULSION 00531 if (DI_CPTPuls and Top1ms){ CalcFdPuls=0;CalcFmPuls++;} 00532 if (not DI_CPTPuls and Top1ms){ CalcFmPuls=0;CalcFdPuls++;} 00533 if (CalcFmPuls>20 and not FmCPTPuls){interruptCompteur();FmCPTPuls=true;} 00534 if (CalcFdPuls>20 and FmCPTPuls){FmCPTPuls=false;} 00535 if (CalcFmPuls>500){CalcFmPuls=500;} 00536 if (CalcFdPuls>500){CalcFdPuls=500;} 00537 00538 //MESURE TENSION BATTERIE 00539 if (Top10ms){ 00540 MoyTensBat[0]=AI_TENSION_BAT.read()*3.3*2+0.018; 00541 TensionBat.Val=0; 00542 for (int i=100;i>0;i--){ 00543 MoyTensBat[i]=MoyTensBat[i-1]; 00544 TensionBat.Val=TensionBat.Val+MoyTensBat[i]; 00545 } 00546 TensionBat.Val=TensionBat.Val/100; 00547 } 00548 00549 //COMMANDE POMPE PWM 00550 if (Top100ms){ 00551 CsgPompe=Reglage_R; 00552 fastpwm.period_ticks (10000); //setup the period for 100Khz 00553 fastpwm.pulsewidth_ticks(CsgPompe);//setup duty cycle to 50% 00554 } 00555 00556 //RAZ MOT DE PASSE 00557 if (TpsMdpEnCours>0 and Top1s){ 00558 TpsMdpEnCours--; 00559 if (TpsMdpEnCours==0){ 00560 mbox=lv_mbox_create(lv_disp_get_scr_act(NULL), NULL); 00561 sprintf(text, "Fin de connexion pour %s",UserEC.Nom ); 00562 lv_mbox_set_text(mbox, text); 00563 lv_obj_align(mbox, NULL, LV_ALIGN_CENTER, 0, 0); 00564 lv_mbox_start_auto_close(mbox, 3000); 00565 UserEC.Nom=""; 00566 UserEC.Niveau=0; 00567 } 00568 } 00569 00570 //GESTION BANDEAU HAUT 00571 if (Top1ms and TpsAvFermMenu>0){TpsAvFermMenu--;} 00572 if (Top1ms and SousMenu){TpsAvFermMenu=4000;}//maintien bandeau affiché si sous menu déployé 00573 if (TpsAvFermMenu>0 and X>0){TpsAvFermMenu=4000;} //mainitien bandeau affiché si appui sur écran 00574 if (TpsAvFermMenu>0 and PopupMDP){TpsAvFermMenu=4000;} //maintien bandeau affiché si Popup saisie MDP 00575 if (TpsAvFermMenu==1){ 00576 PosX_MenuDepart = lv_obj_get_x(BandeauHaut); 00577 PosX_MenuCible = -lv_obj_get_x(M600); 00578 DdeAlignMenu=1; 00579 NumSousMenu=0; 00580 DdeFermBandeauHaut=false; 00581 } 00582 00583 //ANIMATION BANDEAU HAUT 00584 if (Top1ms){ 00585 if (DdeAlignMenu) { 00586 if (PosX_MenuDepart>PosX_MenuCible) { 00587 PosX_MenuDepart=PosX_MenuDepart-1; 00588 lv_obj_set_pos(BandeauHaut, PosX_MenuDepart, 0); 00589 } 00590 if (PosX_MenuDepart<PosX_MenuCible) { 00591 PosX_MenuDepart=PosX_MenuDepart+1; 00592 lv_obj_set_pos(BandeauHaut, PosX_MenuDepart, 0); 00593 } 00594 if (PosX_MenuDepart==PosX_MenuCible) { 00595 DdeAlignMenu=0; 00596 if (NumSousMenu>0){AFFSousMenu(NumSousMenu);}//affichage page sous menu 00597 if (NumSousMenu==0){AFFBandeauHaut(1);}//Bandeau haut sans menu 00598 } 00599 } 00600 } 00601 00602 //ANIMATION SOUS MENU 00603 if (Top1ms){ 00604 //OUVERTURE SOUS MENU 00605 if (AnimSousMenu>0) { 00606 PosY_AnimSousMenu=PosY_AnimSousMenu+2; 00607 lv_obj_set_size(SousMenu, 230, PosY_AnimSousMenu); 00608 if (PosY_AnimSousMenu>=AnimSousMenu){AnimSousMenu=0;} 00609 TpsAvFermSousMenu=5000; 00610 } 00611 //TEMPS AVANT FERMEURE 00612 if (SousMenu and TpsAvFermSousMenu>0){TpsAvFermSousMenu--;} 00613 //FERMETURE SOUS MENU 00614 if (SousMenu and TpsAvFermSousMenu<=0) { 00615 PosY_AnimSousMenu=PosY_AnimSousMenu-2; 00616 lv_obj_set_size(SousMenu, 230, PosY_AnimSousMenu); 00617 if (PosY_AnimSousMenu<=0){ 00618 lv_obj_del_async(SousMenu); 00619 SousMenu=NULL; 00620 if(DdeFermBandeauHaut){TpsAvFermMenu=10;DdeFermBandeauHaut=false;} 00621 } 00622 } 00623 } 00624 if (SousMenu and X>0){TpsAvFermSousMenu=5000;}//mainitien sous menu affiché si appui sur écran 00625 if (SousMenu and PopupMDP){TpsAvFermSousMenu=5000;} //maintien bandeau affiché si Popup saisie MDP 00626 00627 /**/ 00628 }//FIN BOUCLE 00629 }//FIN MAIN 00630 00631 00632 00633 static void AffFloat(string Txt,Float_A &Var,int PosX, int PosY){ 00634 label01 = lv_label_create(Page, NULL); 00635 lv_obj_set_style(label01,&PG16); 00636 lv_obj_set_pos(label01, PosX, PosY); 00637 lv_label_set_text_fmt(label01, "%s",Txt); 00638 00639 Var.Aff = lv_label_create(Page, NULL); 00640 lv_obj_set_style(Var.Aff,&P16); 00641 lv_obj_align(Var.Aff, label01, LV_ALIGN_OUT_RIGHT_MID, 5, 0); 00642 lv_label_set_text_fmt(Var.Aff, "%2.2f %s",Var.Val,Var.Unit); 00643 } 00644 00645 static void AffInt(string Txt,Int_A &Var,int PosX, int PosY){ 00646 label01 = lv_label_create(Page, NULL); 00647 lv_obj_set_style(label01,&PG16); 00648 lv_obj_set_pos(label01, PosX, PosY); 00649 lv_label_set_text_fmt(label01, "%s",Txt); 00650 00651 Var.Aff = lv_label_create(Page, NULL); 00652 lv_obj_set_style(Var.Aff,&P16); 00653 lv_obj_align(Var.Aff, label01, LV_ALIGN_OUT_RIGHT_MID, 5, 0); 00654 lv_label_set_text_fmt(Var.Aff, "%d %s",Var.Val,Var.Unit); 00655 } 00656 00657 static void AffTxt(string Txt,Txt_A &Var,int PosX, int PosY){ 00658 label01 = lv_label_create(Page, NULL); 00659 lv_obj_set_style(label01,&PG16); 00660 lv_obj_set_pos(label01, PosX, PosY); 00661 lv_label_set_text_fmt(label01, "%s",Txt); 00662 00663 Var.Aff = lv_label_create(Page, NULL); 00664 lv_obj_set_style(Var.Aff,&P16); 00665 lv_obj_align(Var.Aff, label01, LV_ALIGN_OUT_RIGHT_MID, 5, 0); 00666 lv_obj_set_click(Var.Aff, true); 00667 } 00668 00669 static void InFloat(string Txt,Float_S &Var,int PosX, int PosY){ 00670 label01 = lv_label_create(Page, NULL); 00671 lv_obj_set_style(label01,&PG16); 00672 lv_obj_set_pos(label01, PosX, PosY); 00673 lv_label_set_text_fmt(label01, "%s",Txt); 00674 00675 Var.Aff = lv_label_create(Page, NULL); 00676 lv_obj_set_style(Var.Aff,&P16Saisie); 00677 lv_obj_align(Var.Aff, label01, LV_ALIGN_OUT_RIGHT_MID, 5, 0); 00678 lv_label_set_text_fmt(Var.Aff, "%2.2f %s",Var.Val,Var.Unit); 00679 00680 lv_obj_set_click(Var.Aff, true); 00681 lv_obj_set_user_data(Var.Aff, &Var); 00682 lv_obj_set_event_cb(Var.Aff, DdeSaisieFloat); 00683 } 00684 00685 static void InInt(string Txt,Int_S &Var,int PosX, int PosY){ 00686 label01 = lv_label_create(Page, NULL); 00687 lv_obj_set_style(label01,&PG16); 00688 lv_obj_set_pos(label01, PosX, PosY); 00689 lv_label_set_text_fmt(label01, "%s",Txt); 00690 00691 Var.Aff = lv_label_create(Page, NULL); 00692 lv_obj_set_style(Var.Aff,&P16Saisie); 00693 lv_obj_align(Var.Aff, label01, LV_ALIGN_OUT_RIGHT_MID, 5, 0); 00694 lv_label_set_text_fmt(Var.Aff, "%d %s",Var.Val,Var.Unit); 00695 00696 lv_obj_set_click(Var.Aff, true); 00697 lv_obj_set_user_data(Var.Aff, &Var); 00698 lv_obj_set_event_cb(Var.Aff, DdeSaisieInt); 00699 } 00700 00701 static void InTxt(string Txt,Txt_S &Var,int PosX, int PosY){ 00702 label01 = lv_label_create(Page, NULL); 00703 lv_obj_set_style(label01,&PG16); 00704 lv_obj_set_pos(label01, PosX, PosY); 00705 lv_label_set_text_fmt(label01, "%s",Txt); 00706 00707 Var.Aff = lv_label_create(Page, NULL); 00708 lv_obj_set_style(Var.Aff,&P16Saisie); 00709 lv_obj_align(Var.Aff, label01, LV_ALIGN_OUT_RIGHT_MID, 5, 0); 00710 00711 lv_obj_set_click(Var.Aff, true); 00712 lv_obj_set_user_data(Var.Aff, &Var); 00713 lv_obj_set_event_cb(Var.Aff, DdeSaisieTxt); 00714 } 00715 00716 static void AFFPage(int Num) 00717 { 00718 //VARIABLES COMMUNES 00719 int i=0;//index pour décalage ligne 00720 00721 //CREATION PAGE 00722 if (Num>0){ 00723 if(Page) { 00724 lv_obj_del(Page); ; 00725 Page = NULL; 00726 } 00727 PageAff=Num;//MEMORISATION PAGE AFFICHEE 00728 Page = lv_page_create(lv_scr_act(), NULL); 00729 lv_obj_set_size(Page, hres, vres-40); 00730 lv_obj_set_pos(Page, 0, 40); 00731 lv_page_set_scrl_layout(Page, LV_LAYOUT_OFF); 00732 lv_page_set_scrl_fit2(Page, LV_FIT_FLOOD, LV_FIT_TIGHT); 00733 lv_coord_t max_w = lv_page_get_fit_width(Page); 00734 } 00735 00736 //////////////////////////////////////// 00737 //CREATION PAGE 101: Etat d'avancement// 00738 //////////////////////////////////////// 00739 if (Num==101){ 00740 sprintf(Chemin, "%s \\ %s",_("M100"),_("M101")); 00741 AffTxt(_("Etat de la mallette :"),ProgEC,5, i=i); 00742 InFloat(_("Consigne débit :"),CsgDebit,5, i=i+20); 00743 AffFloat(_("Débit intantanné :"),Debit,5, i=i+20); 00744 AffFloat(_("Débit Moyen prélèvement :"),DebitMoy,5, i=i+20); 00745 AffFloat(_("Volume prélevé :"),Volume,5, i=i+20); 00746 AffInt(_("Durée prélèvement :"),Duree,5, i=i+20); 00747 sprintf(text, _("Débit moyen des %d premières minutes :"),NPremiereMin.Val); 00748 AffFloat(text,DebNPremiereMin,5, i=i+20); 00749 sprintf(text, _("Débit moyen des %d dernières minutes :"),NDerniereMin.Val); 00750 AffFloat(text,DebNDerniereMin,5, i=i+20); 00751 AffFloat(_("Ecart type:"),EcartType,5, i=i+20); 00752 AffInt(_("Totalisateur volume:"),TotalisateurVol,5, i=i+20); 00753 AffInt(_("Totalisateur durée:"),TotalisateurDuree,5, i=i+20); 00754 AffFloat(_("Tension :"),TensionBat,5, i=i+20); 00755 AffFloat(_("Intensité :"),Intensite,5, i=i+20); 00756 AffFloat(_("Vitesse pompe :"),VitessePpe,5, i=i+20); 00757 AffFloat(_("Consommation prélèvement :"),ConsoPrelev,5, i=i+20); 00758 AffFloat(_("Puissance :"),Puissance,5, i=i+20); 00759 PageAff=101; 00760 } 00761 00762 //RAFFRAICHISSEMENT DONNEES 00763 if (PageAff==101 and Num==0){ 00764 //PROGRAMME EN COURS 00765 lv_label_set_text_fmt(ProgEC.Aff, "%s",ProgEC.Val); 00766 //CONSIGNE DEBIT 00767 lv_label_set_text_fmt(CsgDebit.Aff, "%2.2f %s",CsgDebit.Val,CsgDebit.Unit); 00768 //DEBIT INSTANTANNE 00769 lv_label_set_text_fmt(Debit.Aff, "%2.2f %s",Debit.Val,Debit.Unit); 00770 //DEBIT MOYEN 00771 lv_label_set_text_fmt(DebitMoy.Aff, "%2.2f %s",DebitMoy.Val,DebitMoy.Unit); 00772 //VOLUME PRELEVE 00773 lv_label_set_text_fmt(Volume.Aff, "%2.1f %s",Volume.Val,Volume.Unit); 00774 //DUREE PRELEVEMENT 00775 lv_label_set_text_fmt(Duree.Aff, "%s",HHMMSS(Duree.Val)); 00776 //DEBIT MOYEN DES N PREMIERES MINUTES 00777 lv_label_set_text_fmt(DebNPremiereMin.Aff, "%2.2f %s",DebNPremiereMin.Val,DebNPremiereMin.Unit); 00778 //DEBIT MOYEN DES N DERNIERES MINUTES 00779 lv_label_set_text_fmt(DebNDerniereMin.Aff, "%2.2f %s",DebNDerniereMin.Val,DebNDerniereMin.Unit); 00780 //ECART TYPE 00781 lv_label_set_text_fmt(EcartType.Aff, "%2.2f %s",EcartType.Val,EcartType.Unit); 00782 //TOTALISATEUR VOLUME 00783 lv_label_set_text_fmt(TotalisateurVol.Aff, "%8.1f %s",TotalisateurVol.Val,TotalisateurVol.Unit); 00784 //TOTALISATEUR DUREE 00785 lv_label_set_text_fmt(TotalisateurDuree.Aff, "%2.2f %s",TotalisateurDuree.Val,TotalisateurDuree.Unit); 00786 //TENSION 00787 lv_label_set_text_fmt(TensionBat.Aff, "%2.3f %s",TensionBat.Val,TensionBat.Unit); 00788 //INTENSITE 00789 lv_label_set_text_fmt(Intensite.Aff, "%2.3f %s",Intensite.Val,Intensite.Unit); 00790 //VITESSE POMPE 00791 lv_label_set_text_fmt(VitessePpe.Aff, "%4.0f %s",VitessePpe.Val,VitessePpe.Unit); 00792 //CONSOMMATION PRELEVEMENT 00793 lv_label_set_text_fmt(ConsoPrelev.Aff, "%4.0f %s",ConsoPrelev.Val,ConsoPrelev.Unit); 00794 //PUISSANCE 00795 lv_label_set_text_fmt(Puissance.Aff, "%4.0f %s",Puissance.Val,Puissance.Unit); 00796 } 00797 00798 //////////////////////////////////////////// 00799 //CREATION PAGE 102: Information générales// 00800 //////////////////////////////////////////// 00801 if (Num==102){ 00802 sprintf(Chemin, "%s \\ %s",_("M100"),_("M102")); 00803 InTxt(_("Nom équipement :"),NomEquipement,5, i=i); 00804 InTxt(_("N°série constructeur :"),NumSerieEquipement,5, i=i+20); 00805 } 00806 //RAFFRAICHISSEMENT DONNEES 00807 if (PageAff==102 and Num==0){ 00808 lv_label_set_text_fmt(NomEquipement.Aff, "%s",NomEquipement.Val); 00809 lv_label_set_text_fmt(NumSerieEquipement.Aff, "%s",NumSerieEquipement.Val); 00810 } 00811 00812 //////////////////////////////////////////// 00813 //CREATION PAGE 103: Information générales// 00814 //////////////////////////////////////////// 00815 if (Num==103){ 00816 // CHEMIN PAGE 00817 sprintf(Chemin, "%s \\ %s",_("M100"),_("M103")); 00818 00819 00820 PageAff=103; 00821 00822 } 00823 //RAFFRAICHISSEMENT DONNEES 00824 if (PageAff==103 and Num==0){ 00825 00826 00827 } 00828 00829 //////////////////////////////////////// 00830 //CREATION PAGE 201: Test d'étanchéité// 00831 //////////////////////////////////////// 00832 if (Num==201){ 00833 // CHEMIN PAGE 00834 sprintf(Chemin, "%s \\ %s",_("M200"),_("M201")); 00835 //affichage données 00836 /* AffTensionBat = lv_label_create(Page, NULL); 00837 lv_obj_set_pos(AffTensionBat, 50, i); 00838 00839 AffTpsCy = lv_label_create(Page, NULL); 00840 i=i+16;lv_obj_set_pos(AffTpsCy, 50, i); 00841 00842 AffCptPuls = lv_label_create(Page, NULL); 00843 i=i+16;lv_obj_set_pos(AffCptPuls, 50, i); 00844 00845 Aff1TpsEntre2Puls = lv_label_create(Page, NULL); 00846 i=i+16;lv_obj_set_pos(Aff1TpsEntre2Puls, 50, i); 00847 00848 Aff2TpsEntre2Puls = lv_label_create(Page, NULL); 00849 i=i+16;lv_obj_set_pos(Aff2TpsEntre2Puls, 50, i); 00850 00851 AffTpsMinEntre2Puls = lv_label_create(Page, NULL); 00852 i=i+16;lv_obj_set_pos(AffTpsMinEntre2Puls, 50, i); 00853 00854 AffTpsMaxEntre2Puls = lv_label_create(Page, NULL); 00855 i=i+16;lv_obj_set_pos(AffTpsMaxEntre2Puls, 50, i); 00856 00857 //BP RAZ 00858 BPRAZ = lv_btn_create(Page, NULL); 00859 i=i+30;lv_obj_set_pos(BPRAZ, 50, i); 00860 label = lv_label_create(BPRAZ, NULL); 00861 lv_label_set_text(label, "RAZ"); 00862 lv_obj_set_size(BPRAZ,60,40); 00863 lv_obj_set_event_cb(BPRAZ, BPRAZ_ACT); 00864 00865 //BP POMPE 00866 BPPOMPE = lv_btn_create(Page, NULL); 00867 lv_obj_set_pos(BPPOMPE, 150, i); 00868 label = lv_label_create(BPPOMPE, NULL); 00869 lv_label_set_text(label, "POMPE"); 00870 lv_obj_set_size(BPPOMPE,90,40); 00871 lv_btn_set_toggle(BPPOMPE, true); 00872 lv_obj_set_event_cb(BPPOMPE, BPPOMPE_ACT); 00873 00874 // SLIDER 00875 static lv_style_t style_bg,style_knob; 00876 static lv_style_t style_indic_R; 00877 00878 lv_style_copy(&style_bg, &lv_style_pretty); 00879 style_bg.body.main_color = LV_COLOR_BLACK; 00880 style_bg.body.grad_color = LV_COLOR_BLACK; 00881 style_bg.body.radius = LV_RADIUS_CIRCLE; 00882 style_bg.body.border.color = LV_COLOR_SILVER; 00883 00884 lv_style_copy(&style_indic_R, &lv_style_pretty_color); 00885 style_indic_R.body.main_color = LV_COLOR_RED; 00886 style_indic_R.body.grad_color = LV_COLOR_RED; 00887 style_indic_R.body.radius = LV_RADIUS_CIRCLE; 00888 style_indic_R.body.shadow.width = 4; 00889 style_indic_R.body.shadow.color = LV_COLOR_RED; 00890 style_indic_R.body.padding.left = 3; 00891 style_indic_R.body.padding.right = 3; 00892 style_indic_R.body.padding.top = 3; 00893 style_indic_R.body.padding.bottom = 3; 00894 00895 lv_style_copy(&style_knob, &lv_style_pretty); 00896 style_knob.body.radius = LV_RADIUS_CIRCLE; 00897 style_knob.body.opa = LV_OPA_70; 00898 style_knob.body.padding.top = 10 ; 00899 style_knob.body.padding.bottom = 10 ; 00900 00901 //Create a slider ROUGE 00902 R = lv_slider_create(Page, NULL); 00903 lv_obj_set_pos(R, 10, 40); 00904 lv_obj_set_width(R, 30); 00905 lv_obj_set_height(R, 180); 00906 lv_slider_set_range(R, 0, 10000); 00907 lv_slider_set_value(R, Reglage_R, false); 00908 style_indic_R.body.main_color = LV_COLOR_RED; 00909 style_indic_R.body.grad_color = LV_COLOR_RED; 00910 style_indic_R.body.shadow.color = LV_COLOR_RED; 00911 lv_slider_set_style(R, LV_SLIDER_STYLE_BG, &style_bg); 00912 lv_slider_set_style(R, LV_SLIDER_STYLE_INDIC,&style_indic_R); 00913 lv_slider_set_style(R, LV_SLIDER_STYLE_KNOB, &style_knob); 00914 lv_obj_set_event_cb(R, Reglage_R_RGB); 00915 Val_R = lv_label_create(Page, NULL); 00916 lv_obj_align(Val_R, R, LV_ALIGN_OUT_TOP_MID, 0, -5); 00917 sprintf(text, " %d ", lv_slider_get_value(R)); 00918 lv_label_set_text(Val_R, text); 00919 */ 00920 00921 PageAff=201; 00922 00923 } 00924 //RAFFRAICHISSEMENT DONNEES 00925 if (PageAff==201 and Num==0){ 00926 00927 // sprintf(text, _("Temps de cycle = %3.3f us"),TpsCy); lv_label_set_text(AffTpsCy, text); 00928 // sprintf(text, _("Tension= %3.3f V "),TensionBat ); lv_label_set_text(AffTensionBat, text); 00929 // sprintf(text, "Temps fonctionnment pompe= %d s",TpsMaPpe ); lv_label_set_text(AffCptPuls, text); 00930 // sprintf(text, "Nombre d'impulsion= %d ",CptPuls ); lv_label_set_text(AffCptPuls, text); 00931 // sprintf(text, "Volume = %3.3f L",Volume ); lv_label_set_text(AffVolume, text); 00932 // sprintf(text, "Debit= %3.3f L/min ",Debit ); lv_label_set_text(AffDebit, text); 00933 // sprintf(text, "%3.0f / %3.0f / %3.0f / %3.0f / %3.0f / %3.0f / %3.0f / %3.0f ",TpsEntre2Puls[1],TpsEntre2Puls[2],TpsEntre2Puls[3],TpsEntre2Puls[4],TpsEntre2Puls[5],TpsEntre2Puls[6],TpsEntre2Puls[7],TpsEntre2Puls[8]); lv_label_set_text(Aff1TpsEntre2Puls, text); 00934 // sprintf(text, "%3.0f / %3.0f / %3.0f / %3.0f / %3.0f / %3.0f / %3.0f / %3.0f ",TpsEntre2Puls[9],TpsEntre2Puls[10],TpsEntre2Puls[11],TpsEntre2Puls[12],TpsEntre2Puls[13],TpsEntre2Puls[14],TpsEntre2Puls[15],TpsEntre2Puls[16]); lv_label_set_text(Aff2TpsEntre2Puls, text); 00935 // sprintf(text, "Temps mini entre 2 impulsions = %d ",NumSousMenu ); lv_label_set_text(AffTpsMinEntre2Puls, text); 00936 // sprintf(text, "Temps maxi entre 2 impulsions = %d",test ); lv_label_set_text(AffTpsMaxEntre2Puls, text); 00937 00938 } 00939 00940 ////////////////////////////////////// 00941 //CREATION PAGE 202: Séquence unique// 00942 ////////////////////////////////////// 00943 if (Num==202){ 00944 // CHEMIN PAGE 00945 sprintf(Chemin, "%s \\ %s",_("M200"),_("M202")); 00946 00947 00948 PageAff=202; 00949 00950 } 00951 //RAFFRAICHISSEMENT DONNEES 00952 if (PageAff==202 and Num==0){ 00953 00954 00955 } 00956 //////////////////////////////////////// 00957 //CREATION PAGE 203: // 00958 //////////////////////////////////////// 00959 if (Num==203){ 00960 // CHEMIN PAGE 00961 sprintf(Chemin, "%s \\ %s",_("M200"),_("M203")); 00962 00963 00964 PageAff=203; 00965 00966 } 00967 //RAFFRAICHISSEMENT DONNEES 00968 if (PageAff==203 and Num==0){ 00969 00970 00971 } 00972 00973 ////////////////////////////////////// 00974 //CREATION PAGE 204: // 00975 ////////////////////////////////////// 00976 if (Num==204){ 00977 // CHEMIN PAGE 00978 sprintf(Chemin, "%s \\ %s",_("M200"),_("M204")); 00979 00980 00981 PageAff=204; 00982 00983 } 00984 //RAFFRAICHISSEMENT DONNEES 00985 if (PageAff==204 and Num==0){ 00986 00987 00988 } 00989 00990 //////////////////////////////////////// 00991 //CREATION PAGE 301: // 00992 //////////////////////////////////////// 00993 if (Num==301){ 00994 // CHEMIN PAGE 00995 sprintf(Chemin, "%s \\ %s",_("M300"),_("M301")); 00996 00997 00998 PageAff=301; 00999 01000 } 01001 //RAFFRAICHISSEMENT DONNEES 01002 if (PageAff==301 and Num==0){ 01003 01004 01005 } 01006 01007 ////////////////////////////////////// 01008 //CREATION PAGE 302: // 01009 ////////////////////////////////////// 01010 if (Num==302){ 01011 // CHEMIN PAGE 01012 sprintf(Chemin, "%s \\ %s",_("M300"),_("M302")); 01013 01014 01015 PageAff=302; 01016 01017 } 01018 //RAFFRAICHISSEMENT DONNEES 01019 if (PageAff==302 and Num==0){ 01020 01021 01022 } 01023 //////////////////////////////////////// 01024 //CREATION PAGE 303: // 01025 //////////////////////////////////////// 01026 if (Num==303){ 01027 // CHEMIN PAGE 01028 sprintf(Chemin, "%s \\ %s",_("M300"),_("M303")); 01029 01030 01031 PageAff=303; 01032 01033 } 01034 //RAFFRAICHISSEMENT DONNEES 01035 if (PageAff==303 and Num==0){ 01036 01037 01038 } 01039 01040 ////////////////////////////////////// 01041 //CREATION PAGE 304: // 01042 ////////////////////////////////////// 01043 if (Num==304){ 01044 // CHEMIN PAGE 01045 sprintf(Chemin, "%s \\ %s",_("M300"),_("M304")); 01046 01047 01048 PageAff=304; 01049 01050 } 01051 //RAFFRAICHISSEMENT DONNEES 01052 if (PageAff==304 and Num==0){ 01053 01054 01055 } 01056 ////////////////////////////////////// 01057 //CREATION PAGE 305: // 01058 ////////////////////////////////////// 01059 if (Num==305){ 01060 // CHEMIN PAGE 01061 sprintf(Chemin, "%s \\ %s",_("M300"),_("M305")); 01062 01063 01064 PageAff=305; 01065 01066 } 01067 //RAFFRAICHISSEMENT DONNEES 01068 if (PageAff==305 and Num==0){ 01069 01070 01071 } 01072 ////////////////////////////////////// 01073 //CREATION PAGE 306: // 01074 ////////////////////////////////////// 01075 if (Num==306){ 01076 // CHEMIN PAGE 01077 sprintf(Chemin, "%s \\ %s",_("M300"),_("M306")); 01078 01079 01080 PageAff=306; 01081 01082 } 01083 //RAFFRAICHISSEMENT DONNEES 01084 if (PageAff==306 and Num==0){ 01085 01086 01087 } 01088 //////////////////////////////////////// 01089 //CREATION PAGE 401: Test d'étanchéité// 01090 //////////////////////////////////////// 01091 if (Num==401){ 01092 // CHEMIN PAGE 01093 sprintf(Chemin, "%s \\ %s",_("M400"),_("M401")); 01094 01095 01096 PageAff=401; 01097 01098 } 01099 //RAFFRAICHISSEMENT DONNEES 01100 if (PageAff==401 and Num==0){ 01101 01102 01103 } 01104 01105 ////////////////////////////////////// 01106 //CREATION PAGE 402: Séquence unique// 01107 ////////////////////////////////////// 01108 if (Num==402){ 01109 // CHEMIN PAGE 01110 sprintf(Chemin, "%s \\ %s",_("M400"),_("M402")); 01111 01112 01113 PageAff=402; 01114 01115 } 01116 //RAFFRAICHISSEMENT DONNEES 01117 if (PageAff==402 and Num==0){ 01118 01119 01120 } 01121 //////////////////////////////////////// 01122 //CREATION PAGE 403: // 01123 //////////////////////////////////////// 01124 if (Num==403){ 01125 // CHEMIN PAGE 01126 sprintf(Chemin, "%s \\ %s",_("M400"),_("M403")); 01127 01128 01129 PageAff=403; 01130 01131 } 01132 //RAFFRAICHISSEMENT DONNEES 01133 if (PageAff==403 and Num==0){ 01134 01135 01136 } 01137 01138 ////////////////////////////////////// 01139 //CREATION PAGE 404: // 01140 ////////////////////////////////////// 01141 if (Num==404){ 01142 // CHEMIN PAGE 01143 sprintf(Chemin, "%s \\ %s",_("M400"),_("M404")); 01144 01145 01146 //CREATION LISTE ETALON POUR AFFICHAGE 01147 int i; 01148 int j; 01149 int k=0; 01150 char p[2200]; 01151 for (i = 1; i < 2200; i++) { p[i]=='\0';} 01152 01153 for (i = 1; i < 20; i++) { 01154 string s=EtalCpt[i].Nom; 01155 if (s.length()>0){ 01156 for (j = 0; j < s.length(); j++) { 01157 p[k] = s[j]; 01158 k++; 01159 } 01160 p[k]='\n'; 01161 k++; 01162 } 01163 } 01164 p[k+1]='\0'; 01165 char * ListeEtal= p ; 01166 01167 //TITRE TEST 01168 lv_obj_t * test = lv_label_create(Page, NULL); 01169 lv_label_set_text(test, _("test")); 01170 lv_obj_align(test, Page, LV_ALIGN_OUT_TOP_MID, 0, 0); 01171 01172 //SELECTEUR COMPTEUR ETALON 01173 lv_obj_t * SelectEtal = lv_roller_create(Page, NULL); 01174 lv_roller_set_options(SelectEtal,ListeEtal,LV_ROLLER_MODE_NORMAL); 01175 lv_roller_set_visible_row_count(SelectEtal, 4); 01176 lv_roller_set_fix_width(SelectEtal, 130); 01177 lv_obj_align(SelectEtal, Page, LV_ALIGN_IN_TOP_LEFT, 10, 20); 01178 01179 //TITRE COMPTEUR ETALON 01180 lv_obj_t * Titre = lv_label_create(Page, NULL); 01181 lv_label_set_text(Titre, _("COMPTEUR")); 01182 lv_obj_align(Titre, SelectEtal, LV_ALIGN_OUT_TOP_MID, 0, 0); 01183 01184 //BP MODIFIER 01185 lv_obj_t * BPModifCompt = lv_btn_create(Page, NULL); 01186 // StyleBPSM(BPModifCompt); 01187 lv_obj_set_size(BPModifCompt,130,30); 01188 lv_obj_align(BPModifCompt, SelectEtal, LV_ALIGN_OUT_BOTTOM_MID, 0, 5); 01189 label = lv_label_create(BPModifCompt, NULL); 01190 lv_label_set_text(label, _("Modifier")); 01191 // lv_obj_set_event_cb(BPModifCompt, BPModifCompt_ACT); 01192 01193 //BP AJOUTER 01194 lv_obj_t * BPAjoutCompt = lv_btn_create(Page, NULL); 01195 // StyleBPSM(BPAjoutCompt); 01196 lv_obj_set_size(BPAjoutCompt,130,30); 01197 lv_obj_align(BPAjoutCompt, BPModifCompt, LV_ALIGN_OUT_BOTTOM_MID, 0, 5); 01198 label = lv_label_create(BPAjoutCompt, NULL); 01199 lv_label_set_text(label, _("Ajouter")); 01200 // lv_obj_set_event_cb(BPAjoutCompt, BPAjoutCompt_ACT); 01201 01202 //BP SUPPRIMER 01203 lv_obj_t * BPSupprCompt = lv_btn_create(Page, NULL); 01204 // StyleBPSM(BPModifCompt); 01205 lv_obj_set_size(BPSupprCompt,130,30); 01206 lv_obj_align(BPSupprCompt, BPAjoutCompt, LV_ALIGN_OUT_BOTTOM_MID, 0, 5); 01207 label = lv_label_create(BPSupprCompt, NULL); 01208 lv_label_set_text(label, _("Supprimer")); 01209 // lv_obj_set_event_cb(BPSupprCompt, BPSupprCompt_ACT); 01210 01211 PageAff=404; 01212 01213 } 01214 //RAFFRAICHISSEMENT DONNEES 01215 if (PageAff==404 and Num==0){ 01216 01217 01218 } 01219 ////////////////////////////////////// 01220 //CREATION PAGE 405: // 01221 ////////////////////////////////////// 01222 if (Num==405){ 01223 // CHEMIN PAGE 01224 sprintf(Chemin, "%s \\ %s",_("M400"),_("M405")); 01225 01226 01227 PageAff=405; 01228 01229 } 01230 //RAFFRAICHISSEMENT DONNEES 01231 if (PageAff==405 and Num==0){ 01232 01233 01234 } 01235 ////////////////////////////////////// 01236 //CREATION PAGE 406: // 01237 ////////////////////////////////////// 01238 if (Num==406){ 01239 // CHEMIN PAGE 01240 sprintf(Chemin, "%s \\ %s",_("M400"),_("M406")); 01241 01242 01243 PageAff=406; 01244 01245 } 01246 //RAFFRAICHISSEMENT DONNEES 01247 if (PageAff==406 and Num==0){ 01248 01249 01250 } 01251 01252 /////////////////////////////////////// 01253 //CREATION PAGE 501: Sélection langue// 01254 /////////////////////////////////////// 01255 if (Num==501){ 01256 // CHEMIN PAGE 01257 sprintf(Chemin, "%s \\ %s",_("M500"),_("M501")); 01258 01259 //BP SELECTION LANGUE: FRANCAIS 01260 lv_obj_t * LANGUE_FR = lv_btn_create(Page, NULL); 01261 lv_obj_align(LANGUE_FR, Page, LV_ALIGN_IN_TOP_MID, -80, 50); 01262 label = lv_label_create(LANGUE_FR, NULL); 01263 lv_label_set_text(label, _("Francais")); 01264 lv_obj_set_size(LANGUE_FR,100,40); 01265 lv_obj_set_event_cb(LANGUE_FR, LANGUE_FR_ACT); 01266 01267 //BP SELECTION LANGUE: ANGLAIS 01268 lv_obj_t * LANGUE_EN = lv_btn_create(Page, NULL); 01269 lv_obj_align(LANGUE_EN, Page, LV_ALIGN_IN_TOP_MID, 80, 50); 01270 label = lv_label_create(LANGUE_EN, NULL); 01271 lv_label_set_text(label, _("English")); 01272 lv_obj_set_size(LANGUE_EN,100,40); 01273 lv_obj_set_event_cb(LANGUE_EN, LANGUE_EN_ACT); 01274 01275 PageAff=501; 01276 } 01277 //RAFFRAICHISSEMENT DONNEES 01278 if (PageAff==501 and Num==0){ 01279 01280 } 01281 01282 ////////////////////////////////////// 01283 //CREATION PAGE 502: Séquence unique// 01284 ////////////////////////////////////// 01285 if (Num==502){ 01286 // CHEMIN PAGE 01287 sprintf(Chemin, "%s \\ %s",_("M500"),_("M502")); 01288 01289 01290 PageAff=502; 01291 01292 } 01293 //RAFFRAICHISSEMENT DONNEES 01294 if (PageAff==502 and Num==0){ 01295 01296 01297 } 01298 //////////////////////////////////////// 01299 //CREATION PAGE 503: // 01300 //////////////////////////////////////// 01301 if (Num==503){ 01302 // CHEMIN PAGE 01303 sprintf(Chemin, "%s \\ %s",_("M500"),_("M503")); 01304 01305 01306 PageAff=503; 01307 01308 } 01309 //RAFFRAICHISSEMENT DONNEES 01310 if (PageAff==503 and Num==0){ 01311 01312 01313 } 01314 01315 ////////////////////////////////////// 01316 //CREATION PAGE 504: // 01317 ////////////////////////////////////// 01318 if (Num==504){ 01319 // CHEMIN PAGE 01320 sprintf(Chemin, "%s \\ %s",_("M500"),_("M504")); 01321 01322 01323 PageAff=504; 01324 01325 } 01326 //RAFFRAICHISSEMENT DONNEES 01327 if (PageAff==504 and Num==0){ 01328 01329 01330 } 01331 ////////////////////////////////////// 01332 //CREATION PAGE 505: // 01333 ////////////////////////////////////// 01334 if (Num==505){ 01335 // CHEMIN PAGE 01336 sprintf(Chemin, "%s \\ %s",_("M500"),_("M505")); 01337 01338 01339 PageAff=505; 01340 01341 } 01342 //RAFFRAICHISSEMENT DONNEES 01343 if (PageAff==505 and Num==0){ 01344 01345 01346 } 01347 ////////////////////////////////////// 01348 //CREATION PAGE 506: // 01349 ////////////////////////////////////// 01350 if (Num==506){ 01351 // CHEMIN PAGE 01352 sprintf(Chemin, "%s \\ %s",_("M500"),_("M506")); 01353 01354 01355 PageAff=506; 01356 01357 } 01358 //RAFFRAICHISSEMENT DONNEES 01359 if (PageAff==506 and Num==0){ 01360 01361 01362 } 01363 //////////////////////////////////////// 01364 //CREATION PAGE 601: Test d'étanchéité// 01365 //////////////////////////////////////// 01366 if (Num==601){ 01367 // CHEMIN PAGE 01368 sprintf(Chemin, "%s \\ %s",_("M600"),_("M601")); 01369 01370 01371 PageAff=601; 01372 01373 } 01374 //RAFFRAICHISSEMENT DONNEES 01375 if (PageAff==601 and Num==0){ 01376 01377 01378 } 01379 01380 ////////////////////////////////////// 01381 //CREATION PAGE 602: Séquence unique// 01382 ////////////////////////////////////// 01383 if (Num==602){ 01384 // CHEMIN PAGE 01385 sprintf(Chemin, "%s \\ %s",_("M600"),_("M602")); 01386 01387 01388 PageAff=602; 01389 01390 } 01391 //RAFFRAICHISSEMENT DONNEES 01392 if (PageAff==602 and Num==0){ 01393 01394 01395 } 01396 //////////////////////////////////////// 01397 //CREATION PAGE 603: // 01398 //////////////////////////////////////// 01399 if (Num==603){ 01400 // CHEMIN PAGE 01401 sprintf(Chemin, "%s \\ %s",_("M600"),_("M603")); 01402 01403 01404 PageAff=603; 01405 01406 } 01407 //RAFFRAICHISSEMENT DONNEES 01408 if (PageAff==603 and Num==0){ 01409 01410 01411 } 01412 01413 ////////////////////////////////////// 01414 //CREATION PAGE 604: // 01415 ////////////////////////////////////// 01416 if (Num==604){ 01417 // CHEMIN PAGE 01418 sprintf(Chemin, "%s \\ %s",_("M600"),_("M604")); 01419 01420 01421 PageAff=604; 01422 01423 } 01424 //RAFFRAICHISSEMENT DONNEES 01425 if (PageAff==604 and Num==0){ 01426 01427 01428 } 01429 ////////////////////////////////////// 01430 //CREATION PAGE 605: // 01431 ////////////////////////////////////// 01432 if (Num==605){ 01433 // CHEMIN PAGE 01434 sprintf(Chemin, "%s \\ %s",_("M600"),_("M605")); 01435 01436 01437 PageAff=605; 01438 01439 } 01440 //RAFFRAICHISSEMENT DONNEES 01441 if (PageAff==605 and Num==0){ 01442 01443 01444 } 01445 ////////////////////////////////////// 01446 //CREATION PAGE 606: // 01447 ////////////////////////////////////// 01448 if (Num==606){ 01449 // CHEMIN PAGE 01450 sprintf(Chemin, "%s \\ %s",_("M600"),_("M606")); 01451 01452 01453 PageAff=606; 01454 01455 } 01456 //RAFFRAICHISSEMENT DONNEES 01457 if (PageAff==606 and Num==0){ 01458 01459 01460 } 01461 //////////////////////////////////////// 01462 //CREATION PAGE 701:??????????????????// 01463 //////////////////////////////////////// 01464 if (Num==701){ 01465 // CHEMIN PAGE 01466 sprintf(Chemin, "%s \\ %s",_("M700"),_("M701")); 01467 01468 //Programme en cours 01469 lv_obj_t *ProgEC = lv_label_create(Page, NULL); 01470 lv_obj_set_pos(ProgEC, 50, i); 01471 01472 PageAff=401; 01473 01474 } 01475 //RAFFRAICHISSEMENT DONNEES 01476 if (PageAff==701 and Num==0){ 01477 01478 } 01479 01480 ////////////////////////////////////// 01481 //CREATION PAGE 702: Séquence unique// 01482 ////////////////////////////////////// 01483 if (Num==702){ 01484 // CHEMIN PAGE 01485 sprintf(Chemin, "%s \\ %s",_("M700"),_("M702")); 01486 01487 01488 PageAff=702; 01489 01490 } 01491 //RAFFRAICHISSEMENT DONNEES 01492 if (PageAff==702 and Num==0){ 01493 01494 01495 } 01496 //////////////////////////////////////// 01497 //CREATION PAGE 703: // 01498 //////////////////////////////////////// 01499 if (Num==703){ 01500 // CHEMIN PAGE 01501 sprintf(Chemin, "%s \\ %s",_("M700"),_("M703")); 01502 01503 01504 PageAff=703; 01505 01506 } 01507 //RAFFRAICHISSEMENT DONNEES 01508 if (PageAff==703 and Num==0){ 01509 01510 01511 } 01512 01513 ////////////////////////////////////// 01514 //CREATION PAGE 704: // 01515 ////////////////////////////////////// 01516 if (Num==704){ 01517 // CHEMIN PAGE 01518 sprintf(Chemin, "%s \\ %s",_("M700"),_("M704")); 01519 01520 01521 PageAff=704; 01522 01523 } 01524 //RAFFRAICHISSEMENT DONNEES 01525 if (PageAff==704 and Num==0){ 01526 01527 01528 } 01529 ////////////////////////////////////// 01530 //CREATION PAGE 705: // 01531 ////////////////////////////////////// 01532 if (Num==705){ 01533 // CHEMIN PAGE 01534 sprintf(Chemin, "%s \\ %s",_("M700"),_("M705")); 01535 01536 01537 PageAff=705; 01538 01539 } 01540 //RAFFRAICHISSEMENT DONNEES 01541 if (PageAff==705 and Num==0){ 01542 01543 01544 } 01545 ////////////////////////////////////// 01546 //CREATION PAGE 706: // 01547 ////////////////////////////////////// 01548 if (Num==706){ 01549 // CHEMIN PAGE 01550 sprintf(Chemin, "%s \\ %s",_("M700"),_("M706")); 01551 01552 01553 PageAff=706; 01554 01555 } 01556 //RAFFRAICHISSEMENT DONNEES 01557 if (PageAff==706 and Num==0){ 01558 01559 01560 } 01561 } 01562 01563 //FONCTION INTERRUPTION COMPTEUR D'IMPULSION 01564 void interruptCompteur() 01565 { 01566 //Timestamp pulsation 01567 TimerPuls=tempo.read_high_resolution_us(); 01568 01569 // Calcul temps entre 2 impulsions 01570 TpsPuls=TimerPuls-MemTpsPuls; 01571 MemTpsPuls=TimerPuls; 01572 01573 //Incrementation numéro de dent roue 01574 NumDent++; 01575 01576 //Memorisation ecart entre chaque impulsion et Calcul des Min Max 01577 Calcul=TpsPuls; 01578 Calcul=Calcul/1000; 01579 TpsEntre2Puls[NumDent]=Calcul; 01580 if (Calcul<TpsMinEntre2Puls){TpsMinEntre2Puls=Calcul;} 01581 if (Calcul>TpsMaxEntre2Puls){TpsMaxEntre2Puls=Calcul;} 01582 01583 //Calcul débit 01584 if (NumDent>=16){ 01585 CalcDebit=VolParTour; 01586 CalcDebit=60000000*CalcDebit/(TimerPuls-MemTps16Puls); 01587 Debit.Val=CalcDebit; 01588 Debit.Val=Debit.Val/1000; 01589 MemTps16Puls=TimerPuls; 01590 NumDent=0; 01591 } 01592 01593 //Nombre d'impulsion total 01594 CptPuls++; 01595 01596 //Calcul Volume 01597 Volume.Val=CptPuls*VolParTour/16000; 01598 01599 } 01600 01601 void initialisation(void) 01602 { 01603 //CHARGEMENT DU THEME 01604 th_act = lv_theme_rb_init(0, &RB_lv_font_roboto_16); //Gabor: When i change something in my Theme nothing's happen. Can you see in /lvgl_RB/lv_theme_rb.c 01605 01606 // th_act = lv_theme_rb_init(0, NULL); //Gabor: When i change something in my Theme nothing's happen. Can you see in /lvgl_RB/lv_theme_rb.c 01607 // th_act = lv_theme_night_init(0, NULL); 01608 lv_theme_set_current(th_act); 01609 01610 lv_obj_t * scr = lv_obj_create(NULL, NULL); 01611 lv_disp_load_scr(scr); 01612 01613 //POLICES 01614 lv_style_copy(&P10, &lv_style_pretty); P10.text.font = &RB_lv_font_roboto_10; 01615 lv_style_copy(&P12, &lv_style_pretty); P12.text.font = &RB_lv_font_roboto_12; 01616 lv_style_copy(&P16, &lv_style_pretty); P16.text.font = &RB_lv_font_roboto_16; 01617 lv_style_copy(&P18, &lv_style_pretty); P18.text.font = &RB_lv_font_roboto_18; 01618 lv_style_copy(&P22, &lv_style_pretty); P22.text.font = &RB_lv_font_roboto_22; 01619 lv_style_copy(&PG12, &lv_style_pretty); PG12.text.font = &RB_lv_font_roboto_bold_12; 01620 lv_style_copy(&PG16, &lv_style_pretty); PG16.text.font = &RB_lv_font_roboto_bold_16; 01621 lv_style_copy(&PG18, &lv_style_pretty); PG18.text.font = &RB_lv_font_roboto_bold_18; 01622 lv_style_copy(&PG22, &lv_style_pretty); PG22.text.font = &RB_lv_font_roboto_bold_22; 01623 01624 lv_style_copy(&P16Saisie, &lv_style_pretty); P16Saisie.text.font = &RB_lv_font_roboto_16; P16Saisie.text.color = LV_COLOR_MAKE(0, 0, 255); 01625 01626 01627 //INITIALISATION TABLEAU UTILISATEUR 01628 User[1].Nom="Romain BECAN"; User[1].MDP="1234"; User[1].Niveau=3; User[1].Tps=1; 01629 User[2].Nom="Guy HERVE"; User[2].MDP="5678"; User[2].Niveau=2; User[2].Tps=120; 01630 User[31].Nom="OPERATEUR 1"; User[31].MDP="4321"; User[31].Niveau=1; User[31].Tps=1; 01631 User[32].Nom="OPERATEUR 2"; User[32].MDP="4321"; User[32].Niveau=1; User[32].Tps=60; 01632 User[33].Nom="OPERATEUR 3"; User[33].MDP="4321"; User[33].Niveau=1; User[33].Tps=70; 01633 User[34].Nom="OPERATEUR 4"; User[34].MDP="4321"; User[34].Niveau=1; User[34].Tps=30; 01634 User[35].Nom="OPERATEUR 5"; User[35].MDP="4321"; User[35].Niveau=3; User[35].Tps=30; 01635 User[36].Nom="OPERATEUR 6"; User[36].MDP="4321"; User[36].Niveau=3; User[36].Tps=30; 01636 User[99].Nom="OPERATEUR 100"; User[99].MDP="4321"; User[99].Niveau=3; User[99].Tps=30; 01637 01638 01639 //INITIALISATION TABLEAU ETALON 01640 EtalCpt[1].Nom="COMPT AB1"; EtalCpt[1].ValPuls=68.38; EtalCpt[1].EMT=5.0; 01641 EtalCpt[1].Hist[1].Annee=2020; EtalCpt[1].Hist[1].Mois=01; EtalCpt[1].Hist[1].ProvDeriv1=1.2; EtalCpt[1].Hist[1].Ajustage=true; 01642 EtalCpt[1].Hist[1].Annee=2019; EtalCpt[1].Hist[1].Mois=02; EtalCpt[1].Hist[1].ProvDeriv1=1.3; EtalCpt[1].Hist[1].Ajustage=false; 01643 EtalCpt[1].Hist[1].Annee=2018; EtalCpt[1].Hist[1].Mois=10; EtalCpt[1].Hist[1].ProvDeriv1=1.4; EtalCpt[1].Hist[1].Ajustage=false; 01644 EtalCpt[1].Hist[1].Annee=2017; EtalCpt[1].Hist[1].Mois=03; EtalCpt[1].Hist[1].ProvDeriv1=1.5; EtalCpt[1].Hist[1].Ajustage=true; 01645 EtalCpt[1].Hist[1].Annee=2016; EtalCpt[1].Hist[1].Mois=04; EtalCpt[1].Hist[1].ProvDeriv1=1.6; EtalCpt[1].Hist[1].Ajustage=true; 01646 EtalCpt[2].Nom="COMPT 123"; EtalCpt[2].ValPuls=66.35; EtalCpt[2].EMT=5.0; 01647 EtalCpt[2].Hist[1].Annee=2020; EtalCpt[2].Hist[1].Mois=01; EtalCpt[2].Hist[1].ProvDeriv1=1.2; EtalCpt[2].Hist[1].Ajustage=true; 01648 EtalCpt[2].Hist[1].Annee=2019; EtalCpt[2].Hist[1].Mois=02; EtalCpt[2].Hist[1].ProvDeriv1=1.3; EtalCpt[2].Hist[1].Ajustage=false; 01649 EtalCpt[2].Hist[1].Annee=2018; EtalCpt[2].Hist[1].Mois=10; EtalCpt[2].Hist[1].ProvDeriv1=1.4; EtalCpt[2].Hist[1].Ajustage=false; 01650 EtalCpt[2].Hist[1].Annee=2017; EtalCpt[2].Hist[1].Mois=03; EtalCpt[2].Hist[1].ProvDeriv1=1.5; EtalCpt[2].Hist[1].Ajustage=true; 01651 EtalCpt[2].Hist[1].Annee=2016; EtalCpt[2].Hist[1].Mois=04; EtalCpt[2].Hist[1].ProvDeriv1=1.6; EtalCpt[2].Hist[1].Ajustage=true; 01652 EtalCpt[3].Nom="COMPT 446"; EtalCpt[3].ValPuls=64.18; EtalCpt[3].EMT=5.0; 01653 EtalCpt[3].Hist[1].Annee=2020; EtalCpt[3].Hist[1].Mois=01; EtalCpt[3].Hist[1].ProvDeriv1=1.2; EtalCpt[3].Hist[1].Ajustage=true; 01654 EtalCpt[3].Hist[1].Annee=2019; EtalCpt[3].Hist[1].Mois=02; EtalCpt[3].Hist[1].ProvDeriv1=1.3; EtalCpt[3].Hist[1].Ajustage=false; 01655 EtalCpt[3].Hist[1].Annee=2018; EtalCpt[3].Hist[1].Mois=10; EtalCpt[3].Hist[1].ProvDeriv1=1.4; EtalCpt[3].Hist[1].Ajustage=false; 01656 EtalCpt[3].Hist[1].Annee=2017; EtalCpt[3].Hist[1].Mois=03; EtalCpt[3].Hist[1].ProvDeriv1=1.5; EtalCpt[3].Hist[1].Ajustage=true; 01657 EtalCpt[3].Hist[1].Annee=2016; EtalCpt[3].Hist[1].Mois=04; EtalCpt[3].Hist[1].ProvDeriv1=1.6; EtalCpt[3].Hist[1].Ajustage=true; 01658 01659 CsgDebit.Val = 50; CsgDebit.Unit = "L/min"; CsgDebit.Min = 10; CsgDebit.Max = 100; CsgDebit.Txt = "Consigne Débit"; CsgDebit.Niveau = 1; 01660 Volume.Val = 12345; Volume.Unit = "L"; 01661 Debit.Val = 8; Debit.Unit = "L/min"; 01662 DebitMoy.Val =7; DebitMoy.Unit = "L/min"; 01663 ProgEC.Val ="AUCUN PROGRAMME EN COURS"; 01664 Duree.Val =7; Duree.Unit = ""; 01665 TotalisateurVol.Val =7; TotalisateurVol.Unit = "L"; 01666 TotalisateurDuree.Val =7; TotalisateurDuree.Unit = "h"; 01667 NPremiereMin.Val =10; NPremiereMin.Unit = "min"; 01668 NDerniereMin.Val =10; NDerniereMin.Unit = "min"; 01669 DebNPremiereMin.Val =8; DebNPremiereMin.Unit = "L/min"; 01670 DebNDerniereMin.Val =8; DebNDerniereMin.Unit = "L/min"; 01671 EcartType.Val =0.12; EcartType.Unit = "L/min"; 01672 TensionBat.Val =3.2; TensionBat.Unit = "V"; 01673 Intensite.Val =1; Intensite.Unit = "A"; 01674 VitessePpe.Val =4000; VitessePpe.Unit = "tr/min"; 01675 ConsoPrelev.Val =100; ConsoPrelev.Unit = "W"; 01676 Puissance.Val =100; Puissance.Unit = "Wh"; 01677 01678 char chaine[] = "Texte"; 01679 strcpy(NomEquipement.Val, chaine); 01680 // NomEquipement.Val[]="1234567890"; NomEquipement.NbCarMax = 10; NomEquipement.Txt = "Nom équipement"; NomEquipement.Niveau = 1; 01681 // NumSerieEquipement.Val="12345678"; NumSerieEquipement.NbCarMax = 8; NumSerieEquipement.Txt = "Numéro série constructeur"; NumSerieEquipement.Niveau = 3; 01682 } 01683 01684 ////////////////// 01685 // BANDEAU HAUT // 01686 ////////////////// 01687 static void AFFBandeauHaut(int Num) 01688 { 01689 if(BandeauHaut) { 01690 lv_obj_del(BandeauHaut); 01691 BandeauHaut = NULL; 01692 } 01693 NumBandeauHaut=Num; 01694 01695 //Bandeau haut sans Menu 01696 if (NumBandeauHaut==1){ 01697 // CREATION OBJET BANDEAU HAUT 01698 BandeauHaut = lv_cont_create(lv_scr_act(), NULL); 01699 lv_obj_set_size(BandeauHaut,hres,40); 01700 lv_obj_set_pos(BandeauHaut, 0, 0); 01701 01702 //BP APPEL MENU 01703 BPMENU = lv_btn_create(BandeauHaut, NULL); 01704 label = lv_label_create(BPMENU, NULL); 01705 lv_label_set_text(label, LV_SYMBOL_PLAY); 01706 lv_obj_set_size(BPMENU,40,40); 01707 lv_obj_set_pos(BandeauHaut, 0, 0); 01708 lv_obj_set_event_cb(BPMENU, BPMENU_ACT); 01709 01710 //CHEMIN PAGE 01711 AffChemin = lv_label_create(BandeauHaut, NULL); 01712 lv_obj_set_style(AffChemin, &P22); 01713 lv_obj_align(AffChemin, BandeauHaut, LV_ALIGN_IN_LEFT_MID, 45, 0); 01714 sprintf(text, Chemin); lv_label_set_text(AffChemin, text); 01715 01716 //ETAT BATTERIE 01717 AffSymbBat = lv_label_create(BandeauHaut, NULL); 01718 lv_obj_set_style(AffSymbBat, &P22); 01719 lv_obj_align(AffSymbBat, BandeauHaut, LV_ALIGN_IN_TOP_RIGHT, -15, 3); 01720 sprintf(text,LV_SYMBOL_BATTERY_3 ); lv_label_set_text(AffSymbBat, text); 01721 AffPourcBat = lv_label_create(BandeauHaut, NULL); 01722 lv_obj_set_style(AffPourcBat, &P12); 01723 lv_obj_align(AffPourcBat, AffSymbBat, LV_ALIGN_OUT_BOTTOM_LEFT, 0, -8); 01724 sprintf(text,"75%%"); lv_label_set_text(AffPourcBat, text); 01725 01726 } 01727 01728 //Bandeau haut avec Menu 01729 if (NumBandeauHaut==2){ 01730 //TEMPS D'AFFICHAGE BANDEAU HAUT 01731 TpsAvFermMenu=5000; 01732 01733 // CREATION OBJET BANDEAU HAUT 01734 BandeauHaut = lv_cont_create(lv_scr_act(), NULL); 01735 lv_obj_set_size(BandeauHaut,2000,40); 01736 // lv_cont_set_fit2(BandeauHaut,LV_FIT_TIGHT, LV_FIT_NONE); 01737 lv_obj_set_pos(BandeauHaut, 0, 0); 01738 lv_obj_set_drag_dir(BandeauHaut, LV_DRAG_DIR_HOR); 01739 lv_obj_set_drag_throw(BandeauHaut, true); 01740 01741 //MENU 1 01742 M100 = lv_btn_create(BandeauHaut, NULL); 01743 StyleBPM(M100); 01744 lv_obj_t * label = lv_label_create(M100, NULL); 01745 lv_label_set_text(label, _("M100")); 01746 lv_obj_set_size(M100,130,40); 01747 lv_obj_set_drag_parent(M100, true); 01748 lv_obj_set_event_cb(M100, M100_ACT); 01749 01750 //MENU 2 01751 M200 = lv_btn_create(BandeauHaut, NULL); 01752 StyleBPM(M200); 01753 label = lv_label_create(M200, NULL); 01754 lv_label_set_text(label, _("M200")); 01755 lv_obj_set_size(M200,130,40); 01756 lv_obj_align(M200, M100, LV_ALIGN_OUT_RIGHT_MID, 0, 0); 01757 lv_obj_set_drag_parent(M200, true); 01758 lv_obj_set_event_cb(M200, M200_ACT); 01759 01760 //MENU 3 01761 M300 = lv_btn_create(BandeauHaut, NULL); 01762 StyleBPM(M300); 01763 label = lv_label_create(M300, NULL); 01764 lv_label_set_text(label, _("M300")); 01765 lv_obj_set_size(M300,130,40); 01766 lv_obj_align(M300, M200, LV_ALIGN_OUT_RIGHT_MID, 0, 0); 01767 lv_obj_set_drag_parent(M300, true); 01768 lv_obj_set_event_cb(M300, M300_ACT); 01769 01770 //MENU 4 01771 M400 = lv_btn_create(BandeauHaut, NULL); 01772 StyleBPM(M400); 01773 label = lv_label_create(M400, NULL); 01774 lv_label_set_text(label, _("M400")); 01775 lv_obj_set_size(M400,130,40); 01776 lv_obj_align(M400, M300, LV_ALIGN_OUT_RIGHT_MID, 0, 0); 01777 lv_obj_set_drag_parent(M400, true); 01778 lv_obj_set_event_cb(M400, M400_ACT); 01779 01780 //MENU 5 01781 M500 = lv_btn_create(BandeauHaut, NULL); 01782 StyleBPM(M500); 01783 label = lv_label_create(M500, NULL); 01784 lv_label_set_text(label, _("M500")); 01785 lv_obj_set_size(M500,130,40); 01786 lv_obj_align(M500, M400, LV_ALIGN_OUT_RIGHT_MID, 0, 0); 01787 lv_obj_set_drag_parent(M500, true); 01788 lv_obj_set_event_cb(M500, M500_ACT); 01789 01790 //MENU 6 01791 M600 = lv_btn_create(BandeauHaut, NULL); 01792 StyleBPM(M600); 01793 label = lv_label_create(M600, NULL); 01794 lv_label_set_text(label, _("M600")); 01795 lv_obj_set_size(M600,130,40); 01796 lv_obj_align(M600, M500, LV_ALIGN_OUT_RIGHT_MID, 0, 0); 01797 lv_obj_set_drag_parent(M600, true); 01798 lv_obj_set_event_cb(M600, M600_ACT); 01799 01800 //MENU 7 01801 // M700 = lv_btn_create(BandeauHaut, NULL); 01802 // StyleBPM(M700); 01803 // label = lv_label_create(M700, NULL); 01804 // lv_label_set_text(label, _("M700")); 01805 // lv_obj_set_size(M700,130,40); 01806 // lv_obj_align(M700, M600, LV_ALIGN_OUT_RIGHT_MID, 0, 0); 01807 // lv_obj_set_drag_parent(M700, true); 01808 // lv_obj_set_event_cb(M700, M700_ACT); 01809 } 01810 } 01811 01812 01813 static void AFFSousMenu(int Num) 01814 { 01815 //SI SOUS MENU DEJA AFFICHE : SUPPRIMER PAGE AVANT CREATION NOUVELLE 01816 if(SousMenu) { 01817 lv_obj_del(SousMenu); 01818 SousMenu = NULL; 01819 } 01820 //Memorisation sousmenu en cours 01821 NumSousMenu=Num; 01822 /*Create a list*/ 01823 SousMenu = lv_list_create(lv_scr_act(), NULL); 01824 lv_obj_set_pos(SousMenu, 0, 40); 01825 StyleBPSM(SousMenu); 01826 AnimSousMenu=48;//TAILLE FENETRE FOIS NB BOUTON 01827 01828 //SOUS MENU 100 01829 if (Num==100){ 01830 AnimSousMenu=AnimSousMenu*2;//TAILLE FENETRE 01831 lv_obj_t * SM101 = lv_list_add_btn(SousMenu, NULL, _("M101")); 01832 if (UserEC.Niveau<0){lv_btn_set_state(SM101, LV_BTN_STATE_INA );} 01833 lv_obj_set_event_cb(SM101, SM_ACT); 01834 01835 lv_obj_t * SM102 = lv_list_add_btn(SousMenu, NULL, _("M102")); 01836 if (UserEC.Niveau<0){lv_btn_set_state(SM102, LV_BTN_STATE_INA );} 01837 lv_obj_set_event_cb(SM102, SM_ACT); 01838 } 01839 01840 //SOUS MENU 200 01841 if (Num==200){ 01842 AnimSousMenu=AnimSousMenu*3;//TAILLE FENETRE 01843 lv_obj_t * SM201 = lv_list_add_btn(SousMenu, NULL, _("M201")); 01844 if (UserEC.Niveau<1){lv_btn_set_state(SM201, LV_BTN_STATE_INA );} 01845 lv_obj_set_event_cb(SM201, SM_ACT); 01846 01847 lv_obj_t * SM202 = lv_list_add_btn(SousMenu, NULL, _("M202")); 01848 if (UserEC.Niveau<0){lv_btn_set_state(SM202, LV_BTN_STATE_INA );} 01849 lv_obj_set_event_cb(SM202, SM_ACT); 01850 01851 lv_obj_t * SM203 = lv_list_add_btn(SousMenu, NULL, _("M203")); 01852 if (UserEC.Niveau<0){lv_btn_set_state(SM203, LV_BTN_STATE_INA );} 01853 lv_obj_set_event_cb(SM203, SM_ACT); 01854 } 01855 01856 //SOUS MENU 300 01857 if (Num==300){ 01858 AnimSousMenu=AnimSousMenu*9;//TAILLE FENETRE 01859 lv_obj_t * SM301 = lv_list_add_btn(SousMenu, NULL, _("M301")); 01860 if (UserEC.Niveau<1){lv_btn_set_state(SM301, LV_BTN_STATE_INA );} 01861 lv_obj_set_event_cb(SM301, SM_ACT); 01862 01863 lv_obj_t * SM302 = lv_list_add_btn(SousMenu, NULL, _("M302")); 01864 if (UserEC.Niveau<0){lv_btn_set_state(SM302, LV_BTN_STATE_INA );} 01865 lv_obj_set_event_cb(SM302, SM_ACT); 01866 01867 lv_obj_t * SM303 = lv_list_add_btn(SousMenu, NULL, _("M303")); 01868 if (UserEC.Niveau<0){lv_btn_set_state(SM303, LV_BTN_STATE_INA );} 01869 lv_obj_set_event_cb(SM303, SM_ACT); 01870 01871 lv_obj_t * SM304 = lv_list_add_btn(SousMenu, NULL, _("M304")); 01872 if (UserEC.Niveau<0){lv_btn_set_state(SM304, LV_BTN_STATE_INA );} 01873 lv_obj_set_event_cb(SM304, SM_ACT); 01874 01875 lv_obj_t * SM305 = lv_list_add_btn(SousMenu, NULL, _("M305")); 01876 if (UserEC.Niveau<0){lv_btn_set_state(SM305, LV_BTN_STATE_INA );} 01877 lv_obj_set_event_cb(SM305, SM_ACT); 01878 01879 lv_obj_t * SM306 = lv_list_add_btn(SousMenu, NULL, _("M306")); 01880 if (UserEC.Niveau<0){lv_btn_set_state(SM306, LV_BTN_STATE_INA );} 01881 lv_obj_set_event_cb(SM306, SM_ACT); 01882 01883 lv_obj_t * SM307 = lv_list_add_btn(SousMenu, NULL, _("M307")); 01884 if (UserEC.Niveau<0){lv_btn_set_state(SM307, LV_BTN_STATE_INA );} 01885 lv_obj_set_event_cb(SM307, SM_ACT); 01886 01887 lv_obj_t * SM308 = lv_list_add_btn(SousMenu, NULL, _("M308")); 01888 if (UserEC.Niveau<0){lv_btn_set_state(SM308, LV_BTN_STATE_INA );} 01889 lv_obj_set_event_cb(SM308, SM_ACT); 01890 01891 lv_obj_t * SM309 = lv_list_add_btn(SousMenu, NULL, _("M309")); 01892 if (UserEC.Niveau<0){lv_btn_set_state(SM309, LV_BTN_STATE_INA );} 01893 lv_obj_set_event_cb(SM309, SM_ACT); 01894 } 01895 01896 //SOUS MENU 400 01897 if (Num==400){ 01898 AnimSousMenu=AnimSousMenu*5;//TAILLE FENETRE 01899 lv_obj_t * SM401 = lv_list_add_btn(SousMenu, NULL, _("M401")); 01900 if (UserEC.Niveau<1){lv_btn_set_state(SM401, LV_BTN_STATE_INA );} 01901 lv_obj_set_event_cb(SM401, SM_ACT); 01902 01903 lv_obj_t * SM402 = lv_list_add_btn(SousMenu, NULL, _("M402")); 01904 if (UserEC.Niveau<0){lv_btn_set_state(SM402, LV_BTN_STATE_INA );} 01905 lv_obj_set_event_cb(SM402, SM_ACT); 01906 01907 lv_obj_t * SM403 = lv_list_add_btn(SousMenu, NULL, _("M403")); 01908 if (UserEC.Niveau<0){lv_btn_set_state(SM403, LV_BTN_STATE_INA );} 01909 lv_obj_set_event_cb(SM403, SM_ACT); 01910 01911 lv_obj_t * SM404 = lv_list_add_btn(SousMenu, NULL, _("M404")); 01912 if (UserEC.Niveau<0){lv_btn_set_state(SM404, LV_BTN_STATE_INA );} 01913 lv_obj_set_event_cb(SM404, SM_ACT); 01914 01915 lv_obj_t * SM405 = lv_list_add_btn(SousMenu, NULL, _("M405")); 01916 if (UserEC.Niveau<0){lv_btn_set_state(SM405, LV_BTN_STATE_INA );} 01917 lv_obj_set_event_cb(SM405, SM_ACT); 01918 } 01919 01920 //SOUS MENU 500 01921 if (Num==500){ 01922 AnimSousMenu=AnimSousMenu*3;//TAILLE FENETRE 01923 lv_obj_t * SM501 = lv_list_add_btn(SousMenu, NULL, _("M501")); 01924 if (UserEC.Niveau<1){lv_btn_set_state(SM501, LV_BTN_STATE_INA );} 01925 lv_obj_set_event_cb(SM501, SM_ACT); 01926 01927 lv_obj_t * SM502 = lv_list_add_btn(SousMenu, NULL, _("M502")); 01928 if (UserEC.Niveau<0){lv_btn_set_state(SM502, LV_BTN_STATE_INA );} 01929 lv_obj_set_event_cb(SM502, SM_ACT); 01930 01931 lv_obj_t * SM503 = lv_list_add_btn(SousMenu, NULL, _("M503")); 01932 if (UserEC.Niveau<0){lv_btn_set_state(SM503, LV_BTN_STATE_INA );} 01933 lv_obj_set_event_cb(SM503, SM_ACT); 01934 } 01935 01936 //SOUS MENU 600 01937 if (Num==600){ 01938 AnimSousMenu=AnimSousMenu*1;//TAILLE FENETRE 01939 lv_obj_t * SM601 = lv_list_add_btn(SousMenu, NULL, _("M601")); 01940 if (UserEC.Niveau<1){lv_btn_set_state(SM601, LV_BTN_STATE_INA );} 01941 lv_obj_set_event_cb(SM601, SM_ACT); 01942 } 01943 01944 //SOUS MENU 700 01945 // if (Num==700){ 01946 // AnimSousMenu=AnimSousMenu*1;//TAILLE FENETRE 01947 // lv_obj_t * SM701 = lv_list_add_btn(SousMenu, NULL, _("M701")); 01948 // if (UserEC.Niveau<1){lv_btn_set_state(SM701, LV_BTN_STATE_INA );} 01949 // lv_obj_set_event_cb(SM701, SM_ACT); 01950 // } 01951 if (AnimSousMenu>232){AnimSousMenu=232;}//TAILLE FENETRE MAXI 232=272-40 01952 } 01953 01954 01955 //******************** 01956 // POPUP CONNEXION MDP 01957 //******************** 01958 static void AFFPopupMDP(){ 01959 //FOND GRISE 01960 static lv_style_t modal_style; 01961 lv_style_copy(&modal_style, &lv_style_plain_color); 01962 modal_style.body.main_color = modal_style.body.grad_color = LV_COLOR_BLACK; 01963 modal_style.body.opa = LV_OPA_50; 01964 FondGris = lv_obj_create(lv_scr_act(), NULL); 01965 lv_obj_set_style(FondGris, &modal_style); 01966 lv_obj_set_pos(FondGris, 0, 0); 01967 lv_obj_set_size(FondGris, LV_HOR_RES, LV_VER_RES); 01968 lv_obj_set_opa_scale_enable(FondGris, true); 01969 01970 //CREATION POPUP CONNEXION MDP 01971 PopupMDP = lv_obj_create(FondGris, NULL); 01972 lv_obj_set_size(PopupMDP,400,260); 01973 lv_obj_align(PopupMDP, FondGris, LV_ALIGN_CENTER, 0, 0); 01974 lv_obj_set_opa_scale_enable(PopupMDP, true); 01975 lv_obj_set_opa_scale(PopupMDP, 240); 01976 01977 //TITRE 01978 label = lv_label_create(PopupMDP, NULL); 01979 lv_obj_set_style(label,&PG12); 01980 lv_label_set_text(label, _("NIVEAU D'ACCES INSSUFISANT POUR REALISER CETTE ACTION\nVEUILLEZ VOUS IDENTIFER:")); 01981 lv_obj_align(label, PopupMDP, LV_ALIGN_IN_TOP_MID, 0, 3); 01982 lv_obj_set_opa_scale_enable(label, true); 01983 lv_obj_set_opa_scale(label, LV_OPA_COVER); 01984 01985 //CREATION LISTE UTILISATEUR POUR AFFICHAGE 01986 //G/ABOR: Mabye you have a better solution than: 01987 //ROMAIN: There is no much better way, but I have a few comments 01988 int i; 01989 int j; 01990 int k=0; 01991 char p[2200]; 01992 01993 //ROMAIN: 01994 // - p[i]=='\0'; it should be p[i]='\0'; isn't it? 01995 // - If so why not start from i = 0 to initalize? 01996 // - memset(p, '\0', sizeof(p)) can be a clearer option to initialize 01997 for (i = 1; i < 2200; i++) { p[i]=='\0';} 01998 01999 for (i = 1; i < 100; i++) { //ROMAIN: Why start from 1? 02000 string s=User[i].Nom; 02001 if (s.length()>0){ 02002 //ROMAIN: I suggest using memcpy instead 02003 // memcpy(&p[k], s, s.length()) 02004 // k += s.length(); 02005 // p[k] = '\n'; 02006 // k++; 02007 for (j = 0; j < s.length(); j++) { 02008 p[k] = s[j]; 02009 k++; 02010 } 02011 p[k]='\n'; 02012 k++; 02013 } 02014 } 02015 //ROMAIN: 02016 // - you alraedy incremented k, so it should p[k] = '\0', shouldn't it? 02017 // - and you initialized p to '\0' so it's not required 02018 p[k+1]='\0'; 02019 char * ListeUser= p ; 02020 02021 //SELECTEUR UTILISATEUR 02022 SelectID = lv_roller_create(PopupMDP, NULL); 02023 lv_roller_set_options(SelectID,ListeUser,LV_ROLLER_MODE_NORMAL); 02024 lv_roller_set_visible_row_count(SelectID, 9); 02025 lv_roller_set_fix_width(SelectID, 175); 02026 lv_obj_align(SelectID, PopupMDP, LV_ALIGN_IN_TOP_LEFT, 10, 40); 02027 02028 //CHAMPS MOT DE PASSE 02029 MDP = lv_ta_create(PopupMDP, NULL); 02030 lv_ta_set_text(MDP, ""); 02031 lv_ta_set_pwd_mode(MDP, true); 02032 lv_ta_set_one_line(MDP, true); 02033 lv_obj_set_width(MDP, 175); 02034 lv_obj_align(MDP, PopupMDP, LV_ALIGN_IN_TOP_RIGHT, -10, 40); 02035 lv_obj_set_opa_scale_enable(MDP, true); 02036 lv_obj_set_opa_scale(MDP, LV_OPA_COVER); 02037 lv_ta_set_max_length(MDP, 4); 02038 02039 // PAVE NUMERIQUE SAISIE MOT DE PASSE 02040 static lv_style_t rel_style, pr_style; //STYLE CLAVIER 02041 lv_style_copy(&rel_style, &lv_style_btn_rel); 02042 rel_style.body.radius = 0; 02043 rel_style.body.border.width = 1; 02044 lv_style_copy(&pr_style, &lv_style_btn_pr); 02045 pr_style.body.radius = 0; 02046 pr_style.body.border.width = 1; 02047 02048 kb = lv_kb_create(PopupMDP, NULL); 02049 lv_kb_set_mode(kb, LV_KB_MODE_NUM ); 02050 lv_obj_set_event_cb(kb, kb_MDP_ACT); 02051 lv_kb_set_ta(kb, MDP); 02052 lv_obj_set_size(kb,175,175); 02053 lv_btnm_set_map(kb, PAVE_MDP_MAP); 02054 lv_obj_align(kb, MDP, LV_ALIGN_OUT_BOTTOM_MID, 0, 5); 02055 lv_obj_set_opa_scale_enable(kb, true); 02056 lv_obj_set_opa_scale(kb, LV_OPA_COVER); 02057 lv_kb_set_cursor_manage(kb, true); 02058 lv_kb_set_style(kb, LV_KB_STYLE_BG, &lv_style_transp_tight); 02059 lv_kb_set_style(kb, LV_KB_STYLE_BTN_REL, &rel_style); 02060 lv_kb_set_style(kb, LV_KB_STYLE_BTN_PR, &pr_style); 02061 lv_ta_set_text(MDP, ""); 02062 02063 02064 } 02065 static void kb_MDP_ACT(lv_obj_t * event_kb, lv_event_t event) 02066 { 02067 lv_kb_def_event_cb(event_kb, event); 02068 if(event == LV_EVENT_APPLY ) { 02069 //RECUPERATION DU NOM DE L'UTILISATEUR SELECTIONNE 02070 char NomSelect[20]; 02071 lv_roller_get_selected_str(SelectID, NomSelect, sizeof(NomSelect)); 02072 02073 //RECUPERATION MOT DE PASSE SAISIE 02074 string MdpSaisie; 02075 MdpSaisie = lv_ta_get_text(MDP); 02076 02077 //FOND GRISE 02078 static lv_style_t modal_style; 02079 lv_style_copy(&modal_style, &lv_style_plain_color); 02080 modal_style.body.main_color = modal_style.body.grad_color = LV_COLOR_BLACK; 02081 modal_style.body.opa = LV_OPA_50; 02082 FondGris2 = lv_obj_create(lv_scr_act(), NULL); 02083 lv_obj_set_style(FondGris2, &modal_style); 02084 lv_obj_set_pos(FondGris2, 0, 0); 02085 lv_obj_set_size(FondGris2, LV_HOR_RES, LV_VER_RES); 02086 lv_obj_set_opa_scale_enable(FondGris2, true); 02087 //COMPARAISON AVEC LISTE 02088 static const char * btns2[] = {"Ok", ""}; 02089 for (int i = 1; i < 100; i++) { 02090 if (User[i].Nom==NomSelect) 02091 if (User[i].MDP==MdpSaisie){ 02092 mbox=lv_mbox_create(FondGris2, NULL); 02093 lv_mbox_add_btns(mbox, btns2); 02094 if (User[i].Niveau==1){sprintf(text2, "qu'operateur" );} 02095 if (User[i].Niveau==2){sprintf(text2, "que superviseur");} 02096 if (User[i].Niveau==3){sprintf(text2, "que constructeur");} 02097 sprintf(text, "Connexion autorisee a %s en tant %s pour une duree de %d min",User[i].Nom ,text2,User[i].Tps ); 02098 lv_mbox_set_text(mbox, text); 02099 lv_obj_align(mbox, NULL, LV_ALIGN_CENTER, 0, 0); 02100 lv_obj_set_event_cb(mbox, mboxMdp_ACT); 02101 TpsMdpEnCours=User[i].Tps*60; 02102 UserEC=User[i]; 02103 //RECLASSEMENT DU TABLEAU DES UTILISATEURS POUR AVOIR LE DERNIER CONNECTé EN PREMIER 02104 User[0]=User[i]; 02105 for (int j = i; j >0; j--) { //DECALAGE TABLEAU 02106 User[j]=User[j-1]; 02107 } 02108 return; 02109 } 02110 } 02111 mbox=lv_mbox_create(FondGris2, NULL); 02112 lv_mbox_add_btns(mbox, btns2); 02113 lv_mbox_set_text(mbox, "MOT DE PASSE ERRONE"); 02114 lv_obj_align(mbox, NULL, LV_ALIGN_CENTER, 0, 0); 02115 lv_obj_set_event_cb(mbox, mboxMdp_ACT2); 02116 } 02117 if(event == LV_EVENT_CANCEL ) { 02118 lv_obj_del_async(FondGris); 02119 PopupMDP=NULL; 02120 } 02121 } 02122 static void mboxMdp_ACT(lv_obj_t * obj, lv_event_t event) 02123 { 02124 if(event == LV_EVENT_CLICKED) { 02125 lv_obj_del_async(FondGris); 02126 lv_obj_del_async(FondGris2); 02127 PopupMDP=NULL; 02128 if(BandeauHaut){AFFBandeauHaut(NumBandeauHaut);} 02129 if(SousMenu){AFFSousMenu(NumSousMenu);} 02130 } 02131 } 02132 static void mboxMdp_ACT2(lv_obj_t * obj, lv_event_t event) 02133 { 02134 if(event == LV_EVENT_CLICKED) { 02135 lv_obj_del_async(FondGris2); 02136 lv_ta_set_text(MDP, ""); 02137 } 02138 } 02139 02140 02141 //******************** 02142 // SAISIE FLOAT 02143 //******************** 02144 static void DdeSaisieFloat(lv_obj_t * label, lv_event_t event) 02145 { 02146 if(event == LV_EVENT_CLICKED) { 02147 SaisieFloat = (Float_S *)lv_obj_get_user_data(label); 02148 if (UserEC.Niveau<SaisieFloat->Niveau){ 02149 AFFPopupMDP(); 02150 } 02151 else{ 02152 PageSaisieFloat(label); 02153 } 02154 } 02155 } 02156 static void PageSaisieFloat(lv_obj_t * label){ 02157 02158 //STRUCTURE SAISIE 02159 SaisieFloat = (Float_S *)lv_obj_get_user_data(label); 02160 02161 //FOND GRISE 02162 static lv_style_t modal_style; 02163 lv_style_copy(&modal_style, &lv_style_plain_color); 02164 modal_style.body.main_color = modal_style.body.grad_color = LV_COLOR_BLACK; 02165 modal_style.body.opa = LV_OPA_50; 02166 FondGris = lv_obj_create(lv_scr_act(), NULL); 02167 lv_obj_set_style(FondGris, &modal_style); 02168 lv_obj_set_pos(FondGris, 0, 0); 02169 lv_obj_set_size(FondGris, LV_HOR_RES, LV_VER_RES); 02170 lv_obj_set_opa_scale_enable(FondGris, true); 02171 02172 //CREATION POPUP 02173 lv_obj_t *PopupNum = lv_obj_create(FondGris, NULL); 02174 lv_obj_set_size(PopupNum,400,260); 02175 lv_obj_align(PopupNum, FondGris, LV_ALIGN_CENTER, 0, 0); 02176 lv_obj_set_opa_scale_enable(PopupNum, true); 02177 lv_obj_set_opa_scale(PopupNum, 240); 02178 02179 //TITRE 02180 label = lv_label_create(PopupNum, NULL); 02181 lv_obj_set_style(label,&PG16); 02182 sprintf(text, "%s", SaisieFloat->Txt); 02183 lv_label_set_text(label, text); 02184 lv_obj_align(label, PopupNum, LV_ALIGN_IN_TOP_MID, 0, 3); 02185 lv_obj_set_opa_scale_enable(label, true); 02186 lv_obj_set_opa_scale(label, LV_OPA_COVER); 02187 02188 //CHAMPS SAISI 02189 ChSaisi = lv_ta_create(PopupNum, NULL); 02190 lv_ta_set_text(ChSaisi, ""); 02191 lv_ta_set_one_line(ChSaisi, true); 02192 lv_obj_set_width(ChSaisi, 200); 02193 lv_obj_align(ChSaisi, PopupNum, LV_ALIGN_IN_TOP_LEFT, 20, 25); 02194 lv_obj_set_opa_scale_enable(ChSaisi, true); 02195 lv_obj_set_opa_scale(ChSaisi, LV_OPA_COVER); 02196 02197 //VALEUR EN COURS / mini /maxi 02198 label = lv_label_create(PopupNum, NULL); 02199 lv_obj_set_style(label,&P12); 02200 sprintf(text, _("Valeur Actuelle = %2.2f %s\nValeur mini = %2.2f %s\nValeur maxi = %2.2f %s\n"), SaisieFloat->Val, SaisieFloat->Unit, SaisieFloat->Min, SaisieFloat->Unit, SaisieFloat->Max, SaisieFloat->Unit); 02201 lv_label_set_text(label, text); 02202 lv_obj_align(label, ChSaisi, LV_ALIGN_OUT_RIGHT_MID,5, 30); 02203 lv_obj_set_opa_scale_enable(label, true); 02204 lv_obj_set_opa_scale(label, LV_OPA_COVER); 02205 02206 // PAVE NUMERIQUE SAISIE 02207 static lv_style_t rel_style, pr_style; //STYLE CLAVIER 02208 lv_style_copy(&rel_style, &lv_style_btn_rel); 02209 rel_style.body.radius = 0; 02210 rel_style.body.border.width = 1; 02211 lv_style_copy(&pr_style, &lv_style_btn_pr); 02212 pr_style.body.radius = 0; 02213 pr_style.body.border.width = 1; 02214 02215 kb = lv_kb_create(PopupNum, NULL); 02216 lv_kb_set_mode(kb, LV_KB_MODE_NUM ); 02217 lv_obj_set_event_cb(kb, KbSaisieFloat_ACT); 02218 lv_kb_set_ta(kb, ChSaisi); 02219 lv_obj_set_size(kb,200,180); 02220 // lv_btnm_set_map(kb, PAVE_NUMERIQUE_MAP); 02221 lv_obj_align(kb, ChSaisi, LV_ALIGN_OUT_BOTTOM_MID, 0, 5); 02222 lv_obj_set_opa_scale_enable(kb, true); 02223 lv_obj_set_opa_scale(kb, LV_OPA_COVER); 02224 lv_kb_set_cursor_manage(kb, true); 02225 lv_kb_set_style(kb, LV_KB_STYLE_BG, &lv_style_transp_tight); 02226 lv_kb_set_style(kb, LV_KB_STYLE_BTN_REL, &rel_style); 02227 lv_kb_set_style(kb, LV_KB_STYLE_BTN_PR, &pr_style); 02228 lv_ta_set_text(ChSaisi, ""); 02229 02230 } 02231 02232 static void KbSaisieFloat_ACT(lv_obj_t * event_kb, lv_event_t event) 02233 { 02234 lv_kb_def_event_cb(event_kb, event); 02235 if(event == LV_EVENT_APPLY ) { 02236 //CONVERSION VALEUR SAISIE 02237 const char * tmp = lv_ta_get_text(ChSaisi); 02238 float ValSaisie=strtof(tmp, NULL); 02239 //VALEUR OK 02240 if (ValSaisie>=SaisieFloat->Min and ValSaisie<=SaisieFloat->Max){ 02241 SaisieFloat->Val=ValSaisie; 02242 lv_obj_del_async(FondGris); 02243 } 02244 else{ 02245 //VALEUR HORS LIMITES 02246 //MESSAGE BOX SUR FOND GRISE 02247 static lv_style_t modal_style; 02248 lv_style_copy(&modal_style, &lv_style_plain_color); 02249 modal_style.body.main_color = modal_style.body.grad_color = LV_COLOR_BLACK; 02250 modal_style.body.opa = LV_OPA_50; 02251 FondGris2 = lv_obj_create(lv_scr_act(), NULL); 02252 lv_obj_set_style(FondGris2, &modal_style); 02253 lv_obj_set_pos(FondGris2, 0, 0); 02254 lv_obj_set_size(FondGris2, LV_HOR_RES, LV_VER_RES); 02255 lv_obj_set_opa_scale_enable(FondGris2, true); 02256 static const char * btns2[] = {"Ok", ""}; 02257 mbox=lv_mbox_create(FondGris2, NULL); 02258 lv_mbox_add_btns(mbox, btns2); 02259 lv_mbox_set_text(mbox, "VALEUR SAISIE HORS LIMITES"); 02260 lv_obj_align(mbox, NULL, LV_ALIGN_CENTER, 0, 0); 02261 lv_obj_set_event_cb(mbox, mbox_ACT); 02262 } 02263 } 02264 if(event == LV_EVENT_CANCEL ) { 02265 lv_obj_del_async(FondGris); 02266 } 02267 } 02268 02269 //******************** 02270 // SAISIE INT 02271 //******************** 02272 static void DdeSaisieInt(lv_obj_t * label, lv_event_t event) 02273 { 02274 if(event == LV_EVENT_CLICKED) { 02275 SaisieFloat = (Float_S *)lv_obj_get_user_data(label); 02276 if (UserEC.Niveau<SaisieInt->Niveau){ 02277 AFFPopupMDP(); 02278 } 02279 else{ 02280 PageSaisieInt(label); 02281 } 02282 } 02283 } 02284 static void PageSaisieInt(lv_obj_t * label) 02285 { 02286 //STRUCTURE SAISIE 02287 SaisieInt = (Int_S *)lv_obj_get_user_data(label); 02288 02289 //FOND GRISE 02290 static lv_style_t modal_style; 02291 lv_style_copy(&modal_style, &lv_style_plain_color); 02292 modal_style.body.main_color = modal_style.body.grad_color = LV_COLOR_BLACK; 02293 modal_style.body.opa = LV_OPA_50; 02294 FondGris = lv_obj_create(lv_scr_act(), NULL); 02295 lv_obj_set_style(FondGris, &modal_style); 02296 lv_obj_set_pos(FondGris, 0, 0); 02297 lv_obj_set_size(FondGris, LV_HOR_RES, LV_VER_RES); 02298 lv_obj_set_opa_scale_enable(FondGris, true); 02299 02300 //CREATION POPUP 02301 lv_obj_t *PopupNum = lv_obj_create(FondGris, NULL); 02302 lv_obj_set_size(PopupNum,400,260); 02303 lv_obj_align(PopupNum, FondGris, LV_ALIGN_CENTER, 0, 0); 02304 lv_obj_set_opa_scale_enable(PopupNum, true); 02305 lv_obj_set_opa_scale(PopupNum, 240); 02306 02307 //TITRE 02308 label = lv_label_create(PopupNum, NULL); 02309 lv_obj_set_style(label,&PG16); 02310 sprintf(text, "%s", SaisieInt->Txt); 02311 lv_label_set_text(label, text); 02312 lv_obj_align(label, PopupNum, LV_ALIGN_IN_TOP_MID, 0, 3); 02313 lv_obj_set_opa_scale_enable(label, true); 02314 lv_obj_set_opa_scale(label, LV_OPA_COVER); 02315 02316 //CHAMPS SAISI 02317 ChSaisi = lv_ta_create(PopupNum, NULL); 02318 lv_ta_set_text(ChSaisi, ""); 02319 lv_ta_set_one_line(ChSaisi, true); 02320 lv_obj_set_width(ChSaisi, 200); 02321 lv_obj_align(ChSaisi, PopupNum, LV_ALIGN_IN_TOP_LEFT, 20, 25); 02322 lv_obj_set_opa_scale_enable(ChSaisi, true); 02323 lv_obj_set_opa_scale(ChSaisi, LV_OPA_COVER); 02324 02325 //VALEUR EN COURS / mini /maxi 02326 label = lv_label_create(PopupNum, NULL); 02327 lv_obj_set_style(label,&P12); 02328 sprintf(text, _("Valeur Actuelle = %d %s\nValeur mini = %d %s\nValeur maxi = %d %s\n"), SaisieInt->Val, SaisieInt->Unit, SaisieInt->Min, SaisieInt->Unit, SaisieInt->Max, SaisieInt->Unit); 02329 lv_label_set_text(label, text); 02330 lv_obj_align(label, ChSaisi, LV_ALIGN_OUT_RIGHT_MID,5, 30); 02331 lv_obj_set_opa_scale_enable(label, true); 02332 lv_obj_set_opa_scale(label, LV_OPA_COVER); 02333 02334 // PAVE NUMERIQUE SAISIE 02335 static lv_style_t rel_style, pr_style; //STYLE CLAVIER 02336 lv_style_copy(&rel_style, &lv_style_btn_rel); 02337 rel_style.body.radius = 0; 02338 rel_style.body.border.width = 1; 02339 lv_style_copy(&pr_style, &lv_style_btn_pr); 02340 pr_style.body.radius = 0; 02341 pr_style.body.border.width = 1; 02342 02343 kb = lv_kb_create(PopupNum, NULL); 02344 lv_kb_set_mode(kb, LV_KB_MODE_NUM ); 02345 lv_obj_set_event_cb(kb, KbSaisieInt_ACT); 02346 lv_kb_set_ta(kb, ChSaisi); 02347 lv_obj_set_size(kb,200,180); 02348 // lv_btnm_set_map(kb, PAVE_NUMERIQUE_MAP); 02349 lv_obj_align(kb, ChSaisi, LV_ALIGN_OUT_BOTTOM_MID, 0, 5); 02350 lv_obj_set_opa_scale_enable(kb, true); 02351 lv_obj_set_opa_scale(kb, LV_OPA_COVER); 02352 lv_kb_set_cursor_manage(kb, true); 02353 lv_kb_set_style(kb, LV_KB_STYLE_BG, &lv_style_transp_tight); 02354 lv_kb_set_style(kb, LV_KB_STYLE_BTN_REL, &rel_style); 02355 lv_kb_set_style(kb, LV_KB_STYLE_BTN_PR, &pr_style); 02356 lv_ta_set_text(ChSaisi, ""); 02357 } 02358 02359 static void KbSaisieInt_ACT(lv_obj_t * event_kb, lv_event_t event) 02360 { 02361 lv_kb_def_event_cb(event_kb, event); 02362 if(event == LV_EVENT_APPLY ) { 02363 //CONVERSION VALEUR SAISIE 02364 const char * tmp = lv_ta_get_text(ChSaisi); 02365 int ValSaisie=strtof(tmp, NULL); 02366 //VALEUR OK 02367 if (ValSaisie>=SaisieInt->Min and ValSaisie<=SaisieInt->Max){ 02368 SaisieInt->Val=ValSaisie; 02369 lv_obj_del_async(FondGris); 02370 } 02371 else{ 02372 //VALEUR HORS LIMITES 02373 //MESSAGE BOX SUR FOND GRISE 02374 static lv_style_t modal_style; 02375 lv_style_copy(&modal_style, &lv_style_plain_color); 02376 modal_style.body.main_color = modal_style.body.grad_color = LV_COLOR_BLACK; 02377 modal_style.body.opa = LV_OPA_50; 02378 FondGris2 = lv_obj_create(lv_scr_act(), NULL); 02379 lv_obj_set_style(FondGris2, &modal_style); 02380 lv_obj_set_pos(FondGris2, 0, 0); 02381 lv_obj_set_size(FondGris2, LV_HOR_RES, LV_VER_RES); 02382 lv_obj_set_opa_scale_enable(FondGris2, true); 02383 static const char * btns2[] = {"Ok", ""}; 02384 mbox=lv_mbox_create(FondGris2, NULL); 02385 lv_mbox_add_btns(mbox, btns2); 02386 lv_mbox_set_text(mbox, "VALEUR SAISIE HORS LIMITES"); 02387 lv_obj_align(mbox, NULL, LV_ALIGN_CENTER, 0, 0); 02388 lv_obj_set_event_cb(mbox, mbox_ACT); 02389 } 02390 } 02391 if(event == LV_EVENT_CANCEL ) { 02392 lv_obj_del_async(FondGris); 02393 } 02394 } 02395 02396 //******************** 02397 // SAISIE TEXTE 02398 //******************** 02399 static void DdeSaisieTxt(lv_obj_t * label, lv_event_t event) 02400 { 02401 if(event == LV_EVENT_CLICKED) { 02402 SaisieTxt = (Txt_S *)lv_obj_get_user_data(label); 02403 if (UserEC.Niveau<SaisieTxt->Niveau){ 02404 AFFPopupMDP(); 02405 } 02406 else{ 02407 PageSaisieTxt(label); 02408 } 02409 } 02410 } 02411 static void PageSaisieTxt(lv_obj_t * label) 02412 { 02413 //STRUCTURE SAISIE 02414 SaisieTxt = (Txt_S *)lv_obj_get_user_data(label); 02415 02416 //FOND GRISE 02417 static lv_style_t modal_style; 02418 lv_style_copy(&modal_style, &lv_style_plain_color); 02419 modal_style.body.main_color = modal_style.body.grad_color = LV_COLOR_BLACK; 02420 modal_style.body.opa = LV_OPA_50; 02421 FondGris = lv_obj_create(lv_scr_act(), NULL); 02422 lv_obj_set_style(FondGris, &modal_style); 02423 lv_obj_set_pos(FondGris, 0, 0); 02424 lv_obj_set_size(FondGris, LV_HOR_RES, LV_VER_RES); 02425 lv_obj_set_opa_scale_enable(FondGris, true); 02426 02427 //CREATION POPUP 02428 lv_obj_t *PopupNum = lv_obj_create(FondGris, NULL); 02429 lv_obj_set_size(PopupNum,480,260); 02430 lv_obj_align(PopupNum, FondGris, LV_ALIGN_CENTER, 0, 0); 02431 lv_obj_set_opa_scale_enable(PopupNum, true); 02432 lv_obj_set_opa_scale(PopupNum, 240); 02433 02434 //TITRE 02435 label = lv_label_create(PopupNum, NULL); 02436 lv_obj_set_style(label,&PG16); 02437 sprintf(text, "%s", SaisieTxt->Txt); 02438 lv_label_set_text(label, text); 02439 lv_obj_align(label, PopupNum, LV_ALIGN_IN_TOP_MID, 0, 3); 02440 lv_obj_set_opa_scale_enable(label, true); 02441 lv_obj_set_opa_scale(label, LV_OPA_COVER); 02442 02443 //CHAMPS SAISI 02444 ChSaisi = lv_ta_create(PopupNum, NULL); 02445 lv_ta_set_text(ChSaisi, ""); 02446 lv_ta_set_one_line(ChSaisi, true); 02447 lv_obj_set_width(ChSaisi, 250); 02448 lv_obj_align(ChSaisi, PopupNum, LV_ALIGN_IN_TOP_LEFT, 20, 25); 02449 lv_obj_set_opa_scale_enable(ChSaisi, true); 02450 lv_obj_set_opa_scale(ChSaisi, LV_OPA_COVER); 02451 lv_ta_set_max_length(ChSaisi, SaisieTxt->NbCarMax); 02452 02453 //VALEUR EN COURS /Nombre de caractère maxi 02454 label = lv_label_create(PopupNum, NULL); 02455 lv_obj_set_style(label,&P12); 02456 sprintf(text, _("Actuel = %s\n%d caractères maximum"), SaisieTxt->Val, SaisieTxt->NbCarMax); 02457 lv_label_set_text(label, text); 02458 lv_obj_align(label, ChSaisi, LV_ALIGN_OUT_RIGHT_MID,5, 0); 02459 lv_obj_set_opa_scale_enable(label, true); 02460 lv_obj_set_opa_scale(label, LV_OPA_COVER); 02461 02462 // PAVE NUMERIQUE SAISIE 02463 static lv_style_t rel_style, pr_style; //STYLE CLAVIER 02464 lv_style_copy(&rel_style, &lv_style_btn_rel); 02465 rel_style.body.radius = 0; 02466 rel_style.body.border.width = 1; 02467 lv_style_copy(&pr_style, &lv_style_btn_pr); 02468 pr_style.body.radius = 0; 02469 pr_style.body.border.width = 1; 02470 02471 kb = lv_kb_create(PopupNum, NULL); 02472 // lv_kb_set_mode(kb, LV_KB_MODE_NUM ); 02473 lv_obj_set_event_cb(kb, KbSaisieTxt_ACT); 02474 lv_kb_set_ta(kb, ChSaisi); 02475 lv_obj_set_size(kb,480,190); ; 02476 lv_obj_align(kb, PopupNum, LV_ALIGN_IN_TOP_LEFT, 0, 65); 02477 lv_obj_set_opa_scale_enable(kb, true); 02478 lv_obj_set_opa_scale(kb, LV_OPA_COVER); 02479 lv_kb_set_cursor_manage(kb, true); 02480 lv_kb_set_style(kb, LV_KB_STYLE_BG, &lv_style_transp_tight); 02481 lv_kb_set_style(kb, LV_KB_STYLE_BTN_REL, &rel_style); 02482 lv_kb_set_style(kb, LV_KB_STYLE_BTN_PR, &pr_style); 02483 lv_ta_set_text(ChSaisi, ""); 02484 } 02485 02486 static void KbSaisieTxt_ACT(lv_obj_t * event_kb, lv_event_t event) 02487 { 02488 lv_kb_def_event_cb(event_kb, event); 02489 if(event == LV_EVENT_APPLY ) { 02490 //CONVERSION VALEUR SAISIE 02491 const char * ValSaisie = lv_ta_get_text(ChSaisi); 02492 string CalcNbCar = lv_ta_get_text(ChSaisi); 02493 char test[100]; 02494 02495 //VALEUR OK 02496 if (CalcNbCar.length()>0){ 02497 strcpy(SaisieTxt->Val, ValSaisie); 02498 // SaisieTxt->Val=ValSaisie; 02499 lv_obj_del_async(FondGris); 02500 } 02501 else{ 02502 //VALEUR HORS LIMITES 02503 //MESSAGE BOX SUR FOND GRISE 02504 static lv_style_t modal_style; 02505 lv_style_copy(&modal_style, &lv_style_plain_color); 02506 modal_style.body.main_color = modal_style.body.grad_color = LV_COLOR_BLACK; 02507 modal_style.body.opa = LV_OPA_50; 02508 FondGris2 = lv_obj_create(lv_scr_act(), NULL); 02509 lv_obj_set_style(FondGris2, &modal_style); 02510 lv_obj_set_pos(FondGris2, 0, 0); 02511 lv_obj_set_size(FondGris2, LV_HOR_RES, LV_VER_RES); 02512 lv_obj_set_opa_scale_enable(FondGris2, true); 02513 static const char * btns2[] = {"Ok", ""}; 02514 mbox=lv_mbox_create(FondGris2, NULL); 02515 lv_mbox_add_btns(mbox, btns2); 02516 lv_mbox_set_text(mbox, "SAISIR AU MOINS 1 CARACTERE"); 02517 lv_obj_align(mbox, NULL, LV_ALIGN_CENTER, 0, 0); 02518 lv_obj_set_event_cb(mbox, mbox_ACT); 02519 } 02520 } 02521 if(event == LV_EVENT_CANCEL ) { 02522 lv_obj_del_async(FondGris); 02523 } 02524 } 02525 02526 02527 02528 //FERMETURE POPUP MESSAGE BOX 02529 static void mbox_ACT(lv_obj_t * obj, lv_event_t event) 02530 { 02531 if(event == LV_EVENT_CLICKED) { 02532 lv_obj_del_async(FondGris2); 02533 } 02534 } 02535 02536 02537 02538 //************************** 02539 // ACTION BOUTONS MENUS 02540 //************************** 02541 02542 static void Reglage_R_RGB(lv_obj_t * obj, lv_event_t event) 02543 { 02544 if(event == LV_EVENT_PRESSING) { 02545 Reglage_R= lv_slider_get_value(obj); 02546 sprintf(text, " %d ",Reglage_R ); 02547 lv_label_set_text(Val_R, text); 02548 } 02549 } 02550 02551 static void BPRAZ_ACT(lv_obj_t * btn, lv_event_t event) 02552 { 02553 if(event == LV_EVENT_CLICKED) { 02554 TpsMinEntre2Puls=999999; 02555 TpsMaPpe=0; 02556 TpsMaxEntre2Puls=0; 02557 CptPuls=0; 02558 Volume.Val=0; 02559 Duree.Val=50*60; 02560 for (NumDent=20;NumDent>0;NumDent--){ 02561 TpsEntre2Puls[NumDent]=0; 02562 MemTpsPuls=0; 02563 MemTps16Puls=0; 02564 } 02565 } 02566 } 02567 static void BPPOMPE_ACT(lv_obj_t * btn, lv_event_t event) 02568 { 02569 if(event == LV_EVENT_CLICKED) { 02570 DO_POMPE=!DO_POMPE; 02571 } 02572 } 02573 static void LANGUE_FR_ACT(lv_obj_t * btn, lv_event_t event) 02574 { 02575 if(event == LV_EVENT_CLICKED) { 02576 lv_i18n_set_locale("fr"); 02577 AFFBandeauHaut(1); 02578 AFFPage(PageAff); 02579 } 02580 } 02581 static void LANGUE_EN_ACT(lv_obj_t * btn, lv_event_t event) 02582 { 02583 if(event == LV_EVENT_CLICKED) { 02584 lv_i18n_set_locale("en-GB"); 02585 AFFBandeauHaut(1); 02586 AFFPage(PageAff); 02587 } 02588 } 02589 02590 static void BPMENU_ACT(lv_obj_t * btn, lv_event_t event) 02591 { 02592 if(event == LV_EVENT_CLICKED) { 02593 AFFBandeauHaut(2); 02594 } 02595 } 02596 02597 static void M100_ACT(lv_obj_t * btn, lv_event_t event) 02598 { 02599 if(event == LV_EVENT_CLICKED) { 02600 PosX_MenuDepart = lv_obj_get_x(BandeauHaut); 02601 PosX_MenuCible = -lv_obj_get_x(M100); 02602 DdeAlignMenu=1; 02603 NumSousMenu=100; 02604 } 02605 } 02606 static void M200_ACT(lv_obj_t * btn, lv_event_t event) 02607 { 02608 if(event == LV_EVENT_CLICKED) { 02609 PosX_MenuDepart = lv_obj_get_x(BandeauHaut); 02610 PosX_MenuCible = -lv_obj_get_x(M200); 02611 DdeAlignMenu=1; 02612 NumSousMenu=200; 02613 } 02614 } 02615 static void M300_ACT(lv_obj_t * btn, lv_event_t event) 02616 { 02617 if(event == LV_EVENT_CLICKED) { 02618 PosX_MenuDepart = lv_obj_get_x(BandeauHaut); 02619 PosX_MenuCible = -lv_obj_get_x(M300); 02620 DdeAlignMenu=1; 02621 NumSousMenu=300; 02622 } 02623 } 02624 static void M400_ACT(lv_obj_t * btn, lv_event_t event) 02625 { 02626 if(event == LV_EVENT_CLICKED) { 02627 PosX_MenuDepart = lv_obj_get_x(BandeauHaut); 02628 PosX_MenuCible = -lv_obj_get_x(M400); 02629 DdeAlignMenu=1; 02630 NumSousMenu=400; 02631 } 02632 } 02633 static void M500_ACT(lv_obj_t * btn, lv_event_t event) 02634 { 02635 if(event == LV_EVENT_CLICKED) { 02636 PosX_MenuDepart = lv_obj_get_x(BandeauHaut); 02637 PosX_MenuCible = -lv_obj_get_x(M500); 02638 DdeAlignMenu=1; 02639 NumSousMenu=500; 02640 } 02641 } 02642 static void M600_ACT(lv_obj_t * btn, lv_event_t event) 02643 { 02644 if(event == LV_EVENT_CLICKED) { 02645 PosX_MenuDepart = lv_obj_get_x(BandeauHaut); 02646 PosX_MenuCible = -lv_obj_get_x(M600); 02647 DdeAlignMenu=1; 02648 NumSousMenu=600; 02649 } 02650 } 02651 static void M700_ACT(lv_obj_t * btn, lv_event_t event) 02652 { 02653 if(event == LV_EVENT_CLICKED) { 02654 PosX_MenuDepart = lv_obj_get_x(BandeauHaut); 02655 PosX_MenuCible = -lv_obj_get_x(M700); 02656 DdeAlignMenu=1; 02657 NumSousMenu=700; 02658 } 02659 } 02660 //************************** 02661 // ACTION BOUTONS SOUS MENUS 02662 //************************** 02663 static void SM_ACT(lv_obj_t * btn, lv_event_t event) 02664 { 02665 if(event == LV_EVENT_CLICKED) { 02666 //VERIFICATION AUTORISATION ACCES 02667 uint8_t EtatBp = lv_btn_get_state(btn); 02668 if (EtatBp==LV_BTN_STATE_INA){ 02669 AFFPopupMDP(); 02670 } 02671 else{ 02672 DdeFermBandeauHaut=true; 02673 TpsAvFermSousMenu=0; 02674 // AFFPage(101); 02675 lv_obj_t * label = lv_obj_get_child(btn, NULL); 02676 const char * txt = lv_label_get_text(label); 02677 if(strcmp(txt, _("M101")) == 0) {AFFPage(101);} 02678 if(strcmp(txt, _("M102")) == 0) {AFFPage(102);} 02679 if(strcmp(txt, _("M103")) == 0) {AFFPage(103);} 02680 if(strcmp(txt, _("M104")) == 0) {AFFPage(104);} 02681 if(strcmp(txt, _("M105")) == 0) {AFFPage(105);} 02682 if(strcmp(txt, _("M106")) == 0) {AFFPage(106);} 02683 if(strcmp(txt, _("M107")) == 0) {AFFPage(107);} 02684 02685 if(strcmp(txt, _("M201")) == 0) {AFFPage(201);} 02686 if(strcmp(txt, _("M202")) == 0) {AFFPage(202);} 02687 if(strcmp(txt, _("M203")) == 0) {AFFPage(203);} 02688 if(strcmp(txt, _("M204")) == 0) {AFFPage(204);} 02689 if(strcmp(txt, _("M205")) == 0) {AFFPage(205);} 02690 if(strcmp(txt, _("M206")) == 0) {AFFPage(206);} 02691 if(strcmp(txt, _("M207")) == 0) {AFFPage(207);} 02692 02693 if(strcmp(txt, _("M301")) == 0) {AFFPage(301);} 02694 if(strcmp(txt, _("M302")) == 0) {AFFPage(302);} 02695 if(strcmp(txt, _("M303")) == 0) {AFFPage(303);} 02696 if(strcmp(txt, _("M304")) == 0) {AFFPage(304);} 02697 if(strcmp(txt, _("M305")) == 0) {AFFPage(305);} 02698 if(strcmp(txt, _("M306")) == 0) {AFFPage(306);} 02699 if(strcmp(txt, _("M307")) == 0) {AFFPage(307);} 02700 02701 if(strcmp(txt, _("M401")) == 0) {AFFPage(401);} 02702 if(strcmp(txt, _("M402")) == 0) {AFFPage(402);} 02703 if(strcmp(txt, _("M403")) == 0) {AFFPage(403);} 02704 if(strcmp(txt, _("M404")) == 0) {AFFPage(404);} 02705 if(strcmp(txt, _("M405")) == 0) {AFFPage(405);} 02706 if(strcmp(txt, _("M406")) == 0) {AFFPage(406);} 02707 if(strcmp(txt, _("M407")) == 0) {AFFPage(407);} 02708 02709 if(strcmp(txt, _("M501")) == 0) {AFFPage(501);} 02710 if(strcmp(txt, _("M502")) == 0) {AFFPage(502);} 02711 if(strcmp(txt, _("M503")) == 0) {AFFPage(503);} 02712 if(strcmp(txt, _("M504")) == 0) {AFFPage(504);} 02713 if(strcmp(txt, _("M505")) == 0) {AFFPage(505);} 02714 if(strcmp(txt, _("M506")) == 0) {AFFPage(506);} 02715 if(strcmp(txt, _("M507")) == 0) {AFFPage(507);} 02716 02717 if(strcmp(txt, _("M601")) == 0) {AFFPage(601);} 02718 if(strcmp(txt, _("M602")) == 0) {AFFPage(602);} 02719 if(strcmp(txt, _("M603")) == 0) {AFFPage(603);} 02720 if(strcmp(txt, _("M604")) == 0) {AFFPage(604);} 02721 if(strcmp(txt, _("M605")) == 0) {AFFPage(605);} 02722 if(strcmp(txt, _("M606")) == 0) {AFFPage(606);} 02723 if(strcmp(txt, _("M607")) == 0) {AFFPage(607);} 02724 02725 if(strcmp(txt, _("M701")) == 0) {AFFPage(701);} 02726 if(strcmp(txt, _("M702")) == 0) {AFFPage(702);} 02727 if(strcmp(txt, _("M703")) == 0) {AFFPage(703);} 02728 if(strcmp(txt, _("M704")) == 0) {AFFPage(704);} 02729 if(strcmp(txt, _("M705")) == 0) {AFFPage(705);} 02730 if(strcmp(txt, _("M706")) == 0) {AFFPage(706);} 02731 if(strcmp(txt, _("M707")) == 0) {AFFPage(707);} 02732 02733 } 02734 } 02735 } 02736 02737 02738 //******************** 02739 // FONCTIONS GENERALES 02740 //******************** 02741 void lv_ticker_func() 02742 { 02743 lv_tick_inc(5); //Call lv_tick_inc(x) every x milliseconds in a Timer or Task (x should be between 1 and 10). It is required for the internal timing of LittlevGL. 02744 } 02745 02746 //FONCTION D'AFFICHAGE 02747 void my_disp_flush(lv_disp_drv_t* disp_drv, const lv_area_t* area, lv_color_t* color_p) 02748 { 02749 //The most simple case (but also the slowest) to put all pixels to the screen one-by-one 02750 uint16_t x, y; 02751 for(y = area->y1; y <= area->y2; y++) { 02752 for(x = area->x1; x <= area->x2; x++) { 02753 02754 lcd.DrawPixel( x, y, color_p->full); 02755 color_p++; 02756 } 02757 } 02758 02759 // IMPORTANT!!! 02760 // Inform the graphics library that you are ready with the flushing 02761 lv_disp_flush_ready(disp_drv); 02762 } 02763 02764 //FONCTION RECUPERATION COORDONNEES APPUI 02765 bool my_touchpad_read(lv_indev_drv_t * indev_driver, lv_indev_data_t * data) 02766 { 02767 static lv_coord_t last_x = 0; 02768 static lv_coord_t last_y = 0; 02769 02770 //Save the state and save the pressed coordinate 02771 ts.GetState(&TS_State); 02772 02773 if(TS_State.touchDetected == 1) { 02774 data->state = LV_INDEV_STATE_PR; 02775 } else { 02776 data->state = LV_INDEV_STATE_REL; 02777 } 02778 02779 //data->state = tttt ? LV_INDEV_STATE_PR : LV_INDEV_STATE_REL; 02780 // if(data->state == LV_INDEV_STATE_PR){ 02781 if(data->state == LV_INDEV_STATE_PR) { 02782 //touchpad_get_xy(&last_x, &last_y); 02783 last_x = TS_State.touchX[0]; 02784 last_y = TS_State.touchY[0]; 02785 } 02786 02787 //Set the coordinates (if released use the last pressed coordinates) 02788 data->point.x = last_x; 02789 data->point.y = last_y; 02790 02791 X = TS_State.touchDetected ; 02792 02793 02794 02795 return false; //Return `false` because we are not buffering and no more data to read 02796 } 02797 02798 //FONCTION CONVERSION STRING EN CHAINE DE CARACTERE 02799 static char *S(string S){ 02800 char Ch[100]; 02801 for (int i = 0; i < S.length(); i++) { Ch[i] = S[i];} 02802 return Ch; 02803 } 02804 // FONCTION CONVERSION DUREE EN SECONDE EN CHAINE DE CARACTERES hh:mm:ss 02805 static char *HHMMSS(int32_t Seconde){ 02806 char Ch[8]; 02807 char HH[2]; 02808 char MM[2]; 02809 char SS[2]; 02810 int32_t h = (Seconde / 3600); 02811 int32_t m = ((Seconde - (h * 3600)) / 60); 02812 int32_t s = (Seconde - ((h * 3600) + (m * 60))); 02813 sprintf(HH, "%d",h ); 02814 if (h<10){sprintf(HH, "0%d",h );} 02815 sprintf(MM, "%d",m ); 02816 if (m<10){sprintf(MM, "0%d",m );} 02817 sprintf(SS, "%d",s ); 02818 if (s<10){sprintf(SS, "0%d",s );} 02819 sprintf(Ch, "%s:%s:%s",HH,MM,SS ); 02820 return Ch; 02821 02822 } 02823 02824 /***************************** 02825 **********STYLES************** 02826 *****************************/ 02827 static void StyleBPM(lv_obj_t * Obj){ 02828 static lv_style_t btn_rel, btn_pr, btn_tgl_rel, btn_tgl_pr, btn_ina; 02829 02830 lv_style_copy(&btn_rel, &lv_style_btn_rel); 02831 btn_rel.text.font = &RB_lv_font_roboto_bold_18; 02832 btn_rel.body.padding.top = 10; 02833 btn_rel.body.padding.bottom = 10; 02834 btn_rel.body.main_color = LV_COLOR_MAKE(R3, G3, B3); 02835 btn_rel.body.grad_color = LV_COLOR_MAKE(R4, G4, B4); 02836 btn_rel.body.border.color = LV_COLOR_MAKE(R5, G5, B5); 02837 btn_rel.text.color = LV_COLOR_MAKE(R6, G6, B6); 02838 02839 lv_style_copy(&btn_pr, &lv_style_btn_pr); 02840 btn_pr.text.font = &RB_lv_font_roboto_bold_16; 02841 btn_pr.body.padding.top = 10; 02842 btn_pr.body.padding.bottom = 10; 02843 btn_pr.body.main_color = LV_COLOR_MAKE(R7, G7, B7); 02844 btn_pr.body.grad_color = LV_COLOR_MAKE(R8, G8, B8); 02845 btn_pr.body.border.color = LV_COLOR_MAKE(R9, G9, B9); 02846 btn_pr.text.color = LV_COLOR_MAKE(R10, G10, B10); 02847 02848 lv_style_copy(&btn_tgl_rel, &btn_rel); 02849 btn_tgl_rel.text.font = &RB_lv_font_roboto_bold_16; 02850 btn_tgl_rel.body.padding.top = 10; 02851 btn_tgl_rel.body.padding.bottom = 10; 02852 02853 lv_style_copy(&btn_tgl_pr, &btn_pr); 02854 btn_tgl_pr.text.font = &RB_lv_font_roboto_bold_16; 02855 btn_tgl_pr.body.padding.top = 10; 02856 btn_tgl_pr.body.padding.bottom = 10; 02857 02858 lv_style_copy(&btn_ina, &lv_style_btn_ina); 02859 btn_ina.text.font = &RB_lv_font_roboto_bold_16; 02860 btn_ina.body.padding.top = 10; 02861 btn_ina.body.padding.bottom = 10; 02862 btn_ina.body.main_color = LV_COLOR_MAKE(R11, G11, B11); 02863 btn_ina.body.grad_color = LV_COLOR_MAKE(R12, G12, B12); 02864 btn_ina.body.border.color = LV_COLOR_MAKE(R13, G13, B13); 02865 btn_ina.text.color = LV_COLOR_MAKE(R14, G14, B14); 02866 02867 lv_btn_set_style(Obj, LV_BTN_STATE_REL, &btn_rel); 02868 lv_btn_set_style(Obj, LV_BTN_STATE_PR, &btn_pr); 02869 lv_btn_set_style(Obj, LV_BTN_STATE_TGL_REL, &btn_pr); 02870 lv_btn_set_style(Obj, LV_BTN_STATE_TGL_PR, &btn_tgl_pr); 02871 lv_btn_set_style(Obj, LV_BTN_STATE_INA, &btn_ina); 02872 } 02873 02874 static void StyleBPSM(lv_obj_t * Obj){ 02875 02876 static lv_style_t btn_rel, btn_pr, btn_tgl_rel, btn_tgl_pr, btn_ina; 02877 02878 lv_style_copy(&btn_rel, &lv_style_btn_rel); 02879 btn_rel.text.font = &RB_lv_font_roboto_16; 02880 btn_rel.body.padding.top = 10; 02881 btn_rel.body.padding.bottom = 10; 02882 btn_rel.body.padding.left = 5; 02883 btn_rel.body.padding.right = 50; 02884 btn_rel.body.main_color = LV_COLOR_MAKE(R3, G3, B3); 02885 btn_rel.body.grad_color = LV_COLOR_MAKE(R4, G4, B4); 02886 btn_rel.body.border.color = LV_COLOR_MAKE(R5, G5, B5); 02887 btn_rel.text.color = LV_COLOR_MAKE(R6, G6, B6); 02888 02889 lv_style_copy(&btn_pr, &lv_style_btn_pr); 02890 btn_pr.text.font = &RB_lv_font_roboto_16; 02891 btn_pr.body.padding.top = 10; 02892 btn_pr.body.padding.bottom = 10; 02893 btn_pr.body.padding.left = 5; 02894 btn_pr.body.padding.right = 50; 02895 btn_pr.body.main_color = LV_COLOR_MAKE(R7, G7, B7); 02896 btn_pr.body.grad_color = LV_COLOR_MAKE(R8, G8, B8); 02897 btn_pr.body.border.color = LV_COLOR_MAKE(R9, G9, B9); 02898 btn_pr.text.color = LV_COLOR_MAKE(R10, G10, B10); 02899 02900 lv_style_copy(&btn_tgl_rel, &btn_rel); 02901 btn_tgl_rel.text.font = &RB_lv_font_roboto_16; 02902 btn_tgl_rel.body.padding.top = 10; 02903 btn_tgl_rel.body.padding.bottom = 10; 02904 btn_tgl_rel.body.padding.left = 5; 02905 btn_tgl_rel.body.padding.right = 50; 02906 02907 lv_style_copy(&btn_tgl_pr, &btn_pr); 02908 btn_tgl_pr.text.font = &RB_lv_font_roboto_16; 02909 btn_tgl_pr.body.padding.top = 10; 02910 btn_tgl_pr.body.padding.bottom = 10; 02911 btn_tgl_pr.body.padding.left = 5; 02912 btn_tgl_pr.body.padding.right = 50; 02913 02914 lv_style_copy(&btn_ina, &lv_style_btn_ina); 02915 btn_ina.text.font = &RB_lv_font_roboto_16; 02916 btn_ina.body.padding.top = 10; 02917 btn_ina.body.padding.bottom = 10; 02918 btn_ina.body.padding.left = 5; 02919 btn_ina.body.padding.right = 50; 02920 btn_ina.body.main_color = LV_COLOR_MAKE(R11, G11, B11); 02921 btn_ina.body.grad_color = LV_COLOR_MAKE(R12, G12, B12); 02922 btn_ina.body.border.color = LV_COLOR_MAKE(R13, G13, B13); 02923 btn_ina.text.color = LV_COLOR_MAKE(R14, G14, B14); 02924 02925 lv_list_set_style(Obj, LV_LIST_STYLE_BTN_REL, &btn_rel); 02926 lv_list_set_style(Obj, LV_LIST_STYLE_BTN_PR, &btn_pr); 02927 lv_list_set_style(Obj, LV_LIST_STYLE_BTN_TGL_REL, &btn_pr); 02928 lv_list_set_style(Obj, LV_LIST_STYLE_BTN_TGL_PR, &btn_tgl_pr); 02929 lv_list_set_style(Obj, LV_LIST_STYLE_BTN_INA, &btn_ina); 02930 02931 } 02932 02933 02934 02935
Generated on Sat Jul 16 2022 01:40:02 by
