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