Identification_GT-521F52

Dependencies:   BSP_DISCO_F746NG GT511C3

Committer:
ROUCHDI
Date:
Wed Jun 24 15:58:57 2020 +0000
Revision:
2:baaccd9cb124
Parent:
0:e0918584a802
bonne version

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ROUCHDI 0:e0918584a802 1 #include "mbed.h"
ROUCHDI 0:e0918584a802 2 #include "logo.h"
ROUCHDI 0:e0918584a802 3 #include "GT511C3.hpp"
ROUCHDI 0:e0918584a802 4 #include "stm32746g_discovery_lcd.h"
ROUCHDI 0:e0918584a802 5 #include "stm32746g_discovery_ts.h"
ROUCHDI 0:e0918584a802 6
ROUCHDI 0:e0918584a802 7 // init la com serie et du capteur
ROUCHDI 0:e0918584a802 8 Serial pc(USBTX, USBRX,9600); // tx, rx
ROUCHDI 0:e0918584a802 9 GT511C3 finger(D1,D0);
ROUCHDI 0:e0918584a802 10
ROUCHDI 0:e0918584a802 11 int pass = 2606;
ROUCHDI 0:e0918584a802 12 int code = 0;
ROUCHDI 0:e0918584a802 13 int multi = 1;
ROUCHDI 0:e0918584a802 14 int id;
ROUCHDI 0:e0918584a802 15 uint8_t text[30];
ROUCHDI 0:e0918584a802 16 int EnrollID = -1;
ROUCHDI 0:e0918584a802 17 unsigned char data[498];
ROUCHDI 0:e0918584a802 18 int identificateur;
ROUCHDI 0:e0918584a802 19 //variable
ROUCHDI 0:e0918584a802 20
ROUCHDI 0:e0918584a802 21 void touch_screen();
ROUCHDI 0:e0918584a802 22 void init_lcd();
ROUCHDI 0:e0918584a802 23 void font_clavier(int on_off);
ROUCHDI 0:e0918584a802 24 void font_menu_principal_simple(int on_off);
ROUCHDI 0:e0918584a802 25 void font_menu_principal_add(int on_off);
ROUCHDI 0:e0918584a802 26 void font_menu_principal(int on_off);
ROUCHDI 0:e0918584a802 27 void touch_screen_simple();
ROUCHDI 0:e0918584a802 28 void touch_screen_add();
ROUCHDI 0:e0918584a802 29 void menu_principal();
ROUCHDI 0:e0918584a802 30 void identifier();
ROUCHDI 0:e0918584a802 31 void identifier_add();
ROUCHDI 0:e0918584a802 32 void ajouter_finger();
ROUCHDI 0:e0918584a802 33 void init_finger();
ROUCHDI 0:e0918584a802 34 void drawImageLogo(int offsetX, int offsetY);
ROUCHDI 0:e0918584a802 35 void codetouche(int touche,int multi);
ROUCHDI 0:e0918584a802 36 int menu_clavier();
ROUCHDI 0:e0918584a802 37 int progress(int status,char *msg);
ROUCHDI 0:e0918584a802 38 //fonction
ROUCHDI 0:e0918584a802 39
ROUCHDI 0:e0918584a802 40
ROUCHDI 0:e0918584a802 41 //affichage de message
ROUCHDI 0:e0918584a802 42 int progress(int status,char *msg)
ROUCHDI 0:e0918584a802 43 {
ROUCHDI 0:e0918584a802 44 pc.printf("%s\r\n",msg);
ROUCHDI 0:e0918584a802 45 BSP_LCD_ClearStringLine(1);
ROUCHDI 0:e0918584a802 46 sprintf((char*)text,"%s",msg);
ROUCHDI 0:e0918584a802 47 BSP_LCD_DisplayStringAt(0, LINE(1), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 48 return 0;
ROUCHDI 0:e0918584a802 49 }
ROUCHDI 0:e0918584a802 50 // recuperation du code taper
ROUCHDI 0:e0918584a802 51 void codetouche(int touche,int multi)
ROUCHDI 0:e0918584a802 52 {
ROUCHDI 0:e0918584a802 53 if (code == 0) {
ROUCHDI 0:e0918584a802 54 code = touche;
ROUCHDI 0:e0918584a802 55 pc.printf("code: %d",code);
ROUCHDI 0:e0918584a802 56 sprintf((char*)text,"code: %d",code);//valider
ROUCHDI 0:e0918584a802 57 BSP_LCD_DisplayStringAt(0, LINE(2), (uint8_t *)&text, RIGHT_MODE);
ROUCHDI 0:e0918584a802 58 } else {
ROUCHDI 0:e0918584a802 59 code *= multi;
ROUCHDI 0:e0918584a802 60 code += touche;
ROUCHDI 0:e0918584a802 61 pc.printf("code: %d",code);
ROUCHDI 0:e0918584a802 62 sprintf((char*)text,"code: %d ",code);//valider
ROUCHDI 0:e0918584a802 63 BSP_LCD_DisplayStringAt(0, LINE(2), (uint8_t *)&text, RIGHT_MODE);
ROUCHDI 0:e0918584a802 64 }
ROUCHDI 0:e0918584a802 65 if(code == pass) {
ROUCHDI 0:e0918584a802 66 code = 0;
ROUCHDI 0:e0918584a802 67 identificateur = 1;
ROUCHDI 0:e0918584a802 68 }
ROUCHDI 0:e0918584a802 69 }
ROUCHDI 0:e0918584a802 70 // affiche le logo de l'IUT
ROUCHDI 0:e0918584a802 71 void drawImageLogo(int offsetX, int offsetY)
ROUCHDI 0:e0918584a802 72 {
ROUCHDI 0:e0918584a802 73 int x = 0;
ROUCHDI 0:e0918584a802 74 int y = 0;
ROUCHDI 0:e0918584a802 75 uint32_t* dataPtr = (uint32_t*)logo.data;
ROUCHDI 0:e0918584a802 76 while(y < logo.height) {
ROUCHDI 0:e0918584a802 77 while(x < logo.width) {
ROUCHDI 0:e0918584a802 78 BSP_LCD_DrawPixel(x + offsetX, y + offsetY, *dataPtr);
ROUCHDI 0:e0918584a802 79 dataPtr++;
ROUCHDI 0:e0918584a802 80 x++;
ROUCHDI 0:e0918584a802 81 }
ROUCHDI 0:e0918584a802 82 x = 0;
ROUCHDI 0:e0918584a802 83 y++;
ROUCHDI 0:e0918584a802 84 }
ROUCHDI 0:e0918584a802 85 }
ROUCHDI 0:e0918584a802 86 // initialisation du capteur
ROUCHDI 0:e0918584a802 87 void init_finger()
ROUCHDI 0:e0918584a802 88 {
ROUCHDI 0:e0918584a802 89 int sts = 0;
ROUCHDI 0:e0918584a802 90 //int EnrollID = -1;
ROUCHDI 0:e0918584a802 91 unsigned char data[498];
ROUCHDI 0:e0918584a802 92
ROUCHDI 0:e0918584a802 93 pc.format(8,Serial::None,1);
ROUCHDI 0:e0918584a802 94 pc.printf("Hello World\n\r");
ROUCHDI 0:e0918584a802 95 pc.printf("Fingerprint reader module \"GT-511C3 / GT-511C31\" test program.\n\r");
ROUCHDI 0:e0918584a802 96 pc.printf("Build: %s %s\n\r",__DATE__,__TIME__);
ROUCHDI 0:e0918584a802 97 pc.printf("Open\n\r");
ROUCHDI 0:e0918584a802 98 sts = finger.Open();
ROUCHDI 0:e0918584a802 99 pc.printf("sts = %d\n\r",sts);
ROUCHDI 0:e0918584a802 100
ROUCHDI 0:e0918584a802 101 if(sts == 0) {
ROUCHDI 0:e0918584a802 102 int i;
ROUCHDI 0:e0918584a802 103 pc.printf("FirmwareVersion = %lx\n\r",finger.FirmwareVersion);
ROUCHDI 0:e0918584a802 104 pc.printf("IsoAreaMaxSize = %ld\n\r",finger.IsoAreaMaxSize);
ROUCHDI 0:e0918584a802 105 pc.printf("DeviceSerialNumber = ");
ROUCHDI 0:e0918584a802 106 for(i = 0; i < sizeof(finger.DeviceSerialNumber); i++) {
ROUCHDI 0:e0918584a802 107 pc.printf("%02X",finger.DeviceSerialNumber[i]);
ROUCHDI 0:e0918584a802 108 }
ROUCHDI 0:e0918584a802 109 pc.printf("\n\r");
ROUCHDI 0:e0918584a802 110 }
ROUCHDI 0:e0918584a802 111 }
ROUCHDI 0:e0918584a802 112 // ajout d'empreinte
ROUCHDI 0:e0918584a802 113 void ajouter_finger()
ROUCHDI 0:e0918584a802 114 {
ROUCHDI 0:e0918584a802 115 EnrollID++;
ROUCHDI 0:e0918584a802 116 finger.CmosLed( 1);
ROUCHDI 0:e0918584a802 117 finger.Enroll(EnrollID, progress);
ROUCHDI 0:e0918584a802 118 pc.printf("SetTemplate = %d\n", finger.SetTemplate(11,data,498));
ROUCHDI 0:e0918584a802 119 finger.CmosLed(0);
ROUCHDI 0:e0918584a802 120 }
ROUCHDI 0:e0918584a802 121 // fond pour le menu ajouter empreinte
ROUCHDI 0:e0918584a802 122 void font_menu_principal_add(int on_off)
ROUCHDI 0:e0918584a802 123 {
ROUCHDI 0:e0918584a802 124 uint8_t text[30];
ROUCHDI 0:e0918584a802 125 int touche = 0;
ROUCHDI 0:e0918584a802 126
ROUCHDI 0:e0918584a802 127 if (on_off == 1) {
ROUCHDI 0:e0918584a802 128 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 129 BSP_LCD_DisplayStringAt(0, LINE(0), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 130 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 131 BSP_LCD_DisplayStringAt(0, LINE(1), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 132 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 133 BSP_LCD_DisplayStringAt(0, LINE(2), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 134 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 135 BSP_LCD_DisplayStringAt(0, LINE(3), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 136 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 137 BSP_LCD_DisplayStringAt(0, LINE(4), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 138 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 139 BSP_LCD_DisplayStringAt(0, LINE(5), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 140 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 141 BSP_LCD_DisplayStringAt(0, LINE(6), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 142 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 143 BSP_LCD_DisplayStringAt(0, LINE(7), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 144 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 145 BSP_LCD_DisplayStringAt(0, LINE(8), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 146 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 147 BSP_LCD_DisplayStringAt(0, LINE(9), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 148 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 149 BSP_LCD_DisplayStringAt(0, LINE(10), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 150 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 151 BSP_LCD_DisplayStringAt(0, LINE(11), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 152 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 153 BSP_LCD_DisplayStringAt(0, LINE(12), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 154 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 155 BSP_LCD_DisplayStringAt(0, LINE(13), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 156 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 157 BSP_LCD_DisplayStringAt(0, LINE(14), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 158 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 159 BSP_LCD_DisplayStringAt(0, LINE(15), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 160 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 161 BSP_LCD_DisplayStringAt(0, LINE(16), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 162 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 163 BSP_LCD_DisplayStringAt(0, LINE(17), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 164 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 165 BSP_LCD_DisplayStringAt(0, LINE(18), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 166 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 167 BSP_LCD_DisplayStringAt(0, LINE(19), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 168 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 169 BSP_LCD_DisplayStringAt(0, LINE(20), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 170 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 171 BSP_LCD_DisplayStringAt(0, LINE(21), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 172 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 173 BSP_LCD_DisplayStringAt(0, LINE(20), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 174 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 175 BSP_LCD_DisplayStringAt(0, LINE(21), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 176
ROUCHDI 0:e0918584a802 177 sprintf((char*)text, " AJOUTER ");
ROUCHDI 0:e0918584a802 178 BSP_LCD_DisplayStringAt(0, LINE(10), (uint8_t *)&text, LEFT_MODE );
ROUCHDI 0:e0918584a802 179 sprintf((char*)text, " SUPPRIMER ");
ROUCHDI 0:e0918584a802 180 BSP_LCD_DisplayStringAt(0, LINE(10), (uint8_t *)&text, RIGHT_MODE);
ROUCHDI 0:e0918584a802 181 sprintf((char*)text, "| BACK |");
ROUCHDI 0:e0918584a802 182 BSP_LCD_DisplayStringAt(0, LINE(1), (uint8_t *)&text, RIGHT_MODE );
ROUCHDI 0:e0918584a802 183 }
ROUCHDI 0:e0918584a802 184 }
ROUCHDI 0:e0918584a802 185 // permet de detecter les touches appuyer dans le menu ajouter
ROUCHDI 0:e0918584a802 186 void touch_screen_add()
ROUCHDI 0:e0918584a802 187 {
ROUCHDI 0:e0918584a802 188 TS_StateTypeDef TS_State;
ROUCHDI 0:e0918584a802 189 int touche= -1;
ROUCHDI 0:e0918584a802 190 uint16_t x, y;
ROUCHDI 0:e0918584a802 191 uint8_t text[30];
ROUCHDI 0:e0918584a802 192 uint8_t status;
ROUCHDI 0:e0918584a802 193 uint8_t idx;
ROUCHDI 0:e0918584a802 194 uint8_t cleared = 0;
ROUCHDI 0:e0918584a802 195 uint8_t prev_nb_touches = 0;
ROUCHDI 0:e0918584a802 196
ROUCHDI 0:e0918584a802 197 BSP_LCD_Init();
ROUCHDI 0:e0918584a802 198 BSP_LCD_LayerDefaultInit(LTDC_ACTIVE_LAYER, LCD_FB_START_ADDRESS);
ROUCHDI 0:e0918584a802 199 BSP_LCD_SelectLayer(LTDC_ACTIVE_LAYER);
ROUCHDI 0:e0918584a802 200 status = BSP_TS_Init(BSP_LCD_GetXSize(), BSP_LCD_GetYSize());
ROUCHDI 0:e0918584a802 201 BSP_LCD_SetFont(&Font12);
ROUCHDI 0:e0918584a802 202 BSP_LCD_SetBackColor(LCD_COLOR_BLUE);
ROUCHDI 0:e0918584a802 203 BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
ROUCHDI 0:e0918584a802 204 BSP_LCD_Clear(LCD_COLOR_BLUE);
ROUCHDI 0:e0918584a802 205 while(1) {
ROUCHDI 0:e0918584a802 206 BSP_TS_GetState(&TS_State);
ROUCHDI 0:e0918584a802 207 font_menu_principal_add(1);
ROUCHDI 0:e0918584a802 208 if (TS_State.touchDetected) {
ROUCHDI 0:e0918584a802 209 if (TS_State.touchDetected < prev_nb_touches) {
ROUCHDI 0:e0918584a802 210 for (idx = (TS_State.touchDetected + 1); idx <= 5; idx++) {
ROUCHDI 0:e0918584a802 211 BSP_LCD_ClearStringLine(idx);
ROUCHDI 0:e0918584a802 212 }
ROUCHDI 0:e0918584a802 213 }
ROUCHDI 0:e0918584a802 214 prev_nb_touches = TS_State.touchDetected;
ROUCHDI 0:e0918584a802 215
ROUCHDI 0:e0918584a802 216 cleared = 0;
ROUCHDI 0:e0918584a802 217
ROUCHDI 0:e0918584a802 218 //sprintf((char*)text, "Touches: %d", TS_State.touchDetected);
ROUCHDI 0:e0918584a802 219 //BSP_LCD_DisplayStringAt(0, LINE(0), (uint8_t *)&text, LEFT_MODE);
ROUCHDI 0:e0918584a802 220
ROUCHDI 0:e0918584a802 221 for (idx = 0; idx < TS_State.touchDetected; idx++) {
ROUCHDI 0:e0918584a802 222 x = TS_State.touchX[idx];
ROUCHDI 0:e0918584a802 223 y = TS_State.touchY[idx];
ROUCHDI 0:e0918584a802 224 //sprintf((char*)text, "Touch %d: x=%d y=%d ", touche, x, y);
ROUCHDI 0:e0918584a802 225 //BSP_LCD_DisplayStringAt(0, LINE(0)/*LINE(idx+1)*/, (uint8_t *)&text, LEFT_MODE);
ROUCHDI 0:e0918584a802 226 }
ROUCHDI 0:e0918584a802 227
ROUCHDI 0:e0918584a802 228 if((x>=1 &&x<=70)&&(y>=120&&y<=140)) {
ROUCHDI 0:e0918584a802 229
ROUCHDI 0:e0918584a802 230 sprintf((char*)text, "ajouter ");//1
ROUCHDI 0:e0918584a802 231 BSP_LCD_DisplayStringAt(0, LINE(0), (uint8_t *)&text, RIGHT_MODE);
ROUCHDI 0:e0918584a802 232 ajouter_finger();
ROUCHDI 0:e0918584a802 233 BSP_LCD_Clear(LCD_COLOR_BLUE);
ROUCHDI 0:e0918584a802 234 } else if((x>=380 &&x<=500)&&(y>=120&&y<=140)) {
ROUCHDI 0:e0918584a802 235 sprintf((char*)text,"Suprimer id");
ROUCHDI 0:e0918584a802 236 BSP_LCD_DisplayStringAt(0, LINE(0), (uint8_t *)&text, RIGHT_MODE);
ROUCHDI 0:e0918584a802 237 finger.DeleteID(id);
ROUCHDI 0:e0918584a802 238 EnrollID = -1;
ROUCHDI 0:e0918584a802 239 touch_screen_simple();
ROUCHDI 0:e0918584a802 240 } else if((x>=410 &&x<=500)&&(y>=20&&y<=40)) {
ROUCHDI 0:e0918584a802 241 sprintf((char*)text,"Back");
ROUCHDI 0:e0918584a802 242 BSP_LCD_DisplayStringAt(0, LINE(0), (uint8_t *)&text, CENTER_MODE);
ROUCHDI 0:e0918584a802 243 touch_screen_simple();
ROUCHDI 0:e0918584a802 244 }
ROUCHDI 0:e0918584a802 245 } else {
ROUCHDI 0:e0918584a802 246 //sprintf((char*)text,"code: %d",0);//valider
ROUCHDI 0:e0918584a802 247 //BSP_LCD_DisplayStringAt(0, LINE(2), (uint8_t *)&text, RIGHT_MODE);
ROUCHDI 0:e0918584a802 248 }
ROUCHDI 0:e0918584a802 249 }
ROUCHDI 0:e0918584a802 250 }
ROUCHDI 0:e0918584a802 251
ROUCHDI 0:e0918584a802 252 void touch_screen_2()
ROUCHDI 0:e0918584a802 253 {
ROUCHDI 0:e0918584a802 254 TS_StateTypeDef TS_State;
ROUCHDI 0:e0918584a802 255 int touche= -1;
ROUCHDI 0:e0918584a802 256 uint16_t x, y;
ROUCHDI 0:e0918584a802 257 uint8_t text[30];
ROUCHDI 0:e0918584a802 258 uint8_t status;
ROUCHDI 0:e0918584a802 259 uint8_t idx;
ROUCHDI 0:e0918584a802 260 uint8_t cleared = 0;
ROUCHDI 0:e0918584a802 261 uint8_t prev_nb_touches = 0;
ROUCHDI 0:e0918584a802 262
ROUCHDI 0:e0918584a802 263 BSP_LCD_Init();
ROUCHDI 0:e0918584a802 264 BSP_LCD_LayerDefaultInit(LTDC_ACTIVE_LAYER, LCD_FB_START_ADDRESS);
ROUCHDI 0:e0918584a802 265 BSP_LCD_SelectLayer(LTDC_ACTIVE_LAYER);
ROUCHDI 0:e0918584a802 266 status = BSP_TS_Init(BSP_LCD_GetXSize(), BSP_LCD_GetYSize());
ROUCHDI 0:e0918584a802 267 BSP_LCD_SetFont(&Font12);
ROUCHDI 0:e0918584a802 268 BSP_LCD_SetBackColor(LCD_COLOR_BLUE);
ROUCHDI 0:e0918584a802 269 BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
ROUCHDI 0:e0918584a802 270 BSP_LCD_Clear(LCD_COLOR_BLUE);
ROUCHDI 0:e0918584a802 271 while(1) {
ROUCHDI 0:e0918584a802 272 BSP_TS_GetState(&TS_State);
ROUCHDI 0:e0918584a802 273 font_menu_principal_add(1);
ROUCHDI 0:e0918584a802 274 if (TS_State.touchDetected) {
ROUCHDI 0:e0918584a802 275 if (TS_State.touchDetected < prev_nb_touches) {
ROUCHDI 0:e0918584a802 276 for (idx = (TS_State.touchDetected + 1); idx <= 5; idx++) {
ROUCHDI 0:e0918584a802 277 BSP_LCD_ClearStringLine(idx);
ROUCHDI 0:e0918584a802 278 }
ROUCHDI 0:e0918584a802 279 }
ROUCHDI 0:e0918584a802 280 prev_nb_touches = TS_State.touchDetected;
ROUCHDI 0:e0918584a802 281
ROUCHDI 0:e0918584a802 282 cleared = 0;
ROUCHDI 0:e0918584a802 283
ROUCHDI 0:e0918584a802 284 //sprintf((char*)text, "Touches: %d", TS_State.touchDetected);
ROUCHDI 0:e0918584a802 285 //BSP_LCD_DisplayStringAt(0, LINE(0), (uint8_t *)&text, LEFT_MODE);
ROUCHDI 0:e0918584a802 286
ROUCHDI 0:e0918584a802 287 for (idx = 0; idx < TS_State.touchDetected; idx++) {
ROUCHDI 0:e0918584a802 288 x = TS_State.touchX[idx];
ROUCHDI 0:e0918584a802 289 y = TS_State.touchY[idx];
ROUCHDI 0:e0918584a802 290 //sprintf((char*)text, "Touch %d: x=%d y=%d ", touche, x, y);
ROUCHDI 0:e0918584a802 291 //BSP_LCD_DisplayStringAt(0, LINE(0)/*LINE(idx+1)*/, (uint8_t *)&text, LEFT_MODE);
ROUCHDI 0:e0918584a802 292 }
ROUCHDI 0:e0918584a802 293
ROUCHDI 0:e0918584a802 294 if((x>=1 &&x<=70)&&(y>=120&&y<=140)) {
ROUCHDI 0:e0918584a802 295
ROUCHDI 0:e0918584a802 296 sprintf((char*)text, "ajouter ");//1
ROUCHDI 0:e0918584a802 297 BSP_LCD_DisplayStringAt(0, LINE(0), (uint8_t *)&text, RIGHT_MODE);
ROUCHDI 0:e0918584a802 298 ajouter_finger();
ROUCHDI 0:e0918584a802 299 BSP_LCD_Clear(LCD_COLOR_BLUE);
ROUCHDI 0:e0918584a802 300 } else if((x>=380 &&x<=500)&&(y>=120&&y<=140)) {
ROUCHDI 0:e0918584a802 301 sprintf((char*)text,"Suprimer id");
ROUCHDI 0:e0918584a802 302 BSP_LCD_DisplayStringAt(0, LINE(0), (uint8_t *)&text, RIGHT_MODE);
ROUCHDI 0:e0918584a802 303 finger.DeleteID(id);
ROUCHDI 0:e0918584a802 304 EnrollID = -1;
ROUCHDI 0:e0918584a802 305 touch_screen();
ROUCHDI 0:e0918584a802 306 } else if((x>=410 &&x<=500)&&(y>=20&&y<=40)) {
ROUCHDI 0:e0918584a802 307 sprintf((char*)text,"Back");
ROUCHDI 0:e0918584a802 308 BSP_LCD_DisplayStringAt(0, LINE(0), (uint8_t *)&text, CENTER_MODE);
ROUCHDI 0:e0918584a802 309 touch_screen();
ROUCHDI 0:e0918584a802 310 }
ROUCHDI 0:e0918584a802 311 } else {
ROUCHDI 0:e0918584a802 312 //sprintf((char*)text,"code: %d",0);//valider
ROUCHDI 0:e0918584a802 313 //BSP_LCD_DisplayStringAt(0, LINE(2), (uint8_t *)&text, RIGHT_MODE);
ROUCHDI 0:e0918584a802 314 }
ROUCHDI 0:e0918584a802 315 }
ROUCHDI 0:e0918584a802 316 }
ROUCHDI 0:e0918584a802 317
ROUCHDI 0:e0918584a802 318 //permet d'identifier si l'empreinte est bien enregistre ou pas pour le menu ajouter
ROUCHDI 0:e0918584a802 319 void identifier_add()
ROUCHDI 0:e0918584a802 320 {
ROUCHDI 0:e0918584a802 321 finger.CmosLed(1);
ROUCHDI 0:e0918584a802 322 finger.WaitPress(1);
ROUCHDI 0:e0918584a802 323 if (finger.IsPress()!= 0) {
ROUCHDI 0:e0918584a802 324 finger.Capture(false);
ROUCHDI 0:e0918584a802 325 id = finger.Identify();
ROUCHDI 0:e0918584a802 326 if(id!=-1) {
ROUCHDI 0:e0918584a802 327 pc.printf("Student found!");
ROUCHDI 0:e0918584a802 328 BSP_LCD_SetFont(&Font24);
ROUCHDI 0:e0918584a802 329 BSP_LCD_SetBackColor(LCD_COLOR_GREEN);
ROUCHDI 0:e0918584a802 330 BSP_LCD_SetTextColor(LCD_COLOR_BLACK);
ROUCHDI 0:e0918584a802 331 BSP_LCD_Clear(LCD_COLOR_GREEN);
ROUCHDI 0:e0918584a802 332 sprintf((char*)text, "VALIDER");
ROUCHDI 0:e0918584a802 333 BSP_LCD_DisplayStringAt(0, LINE(5), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 334 HAL_Delay(1000);
ROUCHDI 0:e0918584a802 335 BSP_LCD_SetFont(&Font12);
ROUCHDI 0:e0918584a802 336 BSP_LCD_SetBackColor(LCD_COLOR_BLUE);
ROUCHDI 0:e0918584a802 337 BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
ROUCHDI 0:e0918584a802 338 finger.CmosLed(0);
ROUCHDI 0:e0918584a802 339 touch_screen_add();
ROUCHDI 0:e0918584a802 340 } else {
ROUCHDI 0:e0918584a802 341 pc.printf("Student not found");
ROUCHDI 0:e0918584a802 342 BSP_LCD_SetFont(&Font24);
ROUCHDI 0:e0918584a802 343 BSP_LCD_SetBackColor(LCD_COLOR_RED);
ROUCHDI 0:e0918584a802 344 BSP_LCD_SetTextColor(LCD_COLOR_BLACK);
ROUCHDI 0:e0918584a802 345 BSP_LCD_Clear(LCD_COLOR_RED);
ROUCHDI 0:e0918584a802 346 sprintf((char*)text, "REFUSER");
ROUCHDI 0:e0918584a802 347 BSP_LCD_DisplayStringAt(0, LINE(5), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 348 HAL_Delay(1000);
ROUCHDI 0:e0918584a802 349 BSP_LCD_SetFont(&Font12);
ROUCHDI 0:e0918584a802 350 BSP_LCD_SetBackColor(LCD_COLOR_BLUE);
ROUCHDI 0:e0918584a802 351 BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
ROUCHDI 0:e0918584a802 352 }
ROUCHDI 0:e0918584a802 353 if (id <300) {
ROUCHDI 0:e0918584a802 354 pc.printf("Verified ID:%d",id);
ROUCHDI 0:e0918584a802 355 } else {
ROUCHDI 0:e0918584a802 356 pc.printf("Finger not found");
ROUCHDI 0:e0918584a802 357 }
ROUCHDI 0:e0918584a802 358 }
ROUCHDI 0:e0918584a802 359 finger.CmosLed(0);
ROUCHDI 0:e0918584a802 360 }
ROUCHDI 0:e0918584a802 361 //permet d'identifier si l'empreinte est bien enregistre ou pas
ROUCHDI 0:e0918584a802 362 void identifier()
ROUCHDI 0:e0918584a802 363 {
ROUCHDI 0:e0918584a802 364 finger.CmosLed(1);
ROUCHDI 0:e0918584a802 365 finger.WaitPress(1);
ROUCHDI 0:e0918584a802 366 if (finger.IsPress()!= 0) {
ROUCHDI 0:e0918584a802 367 finger.Capture(false);
ROUCHDI 0:e0918584a802 368 int id = finger.Identify();
ROUCHDI 0:e0918584a802 369 if(id!=-1) {
ROUCHDI 0:e0918584a802 370 pc.printf("Student found!");
ROUCHDI 0:e0918584a802 371 BSP_LCD_SetFont(&Font24);
ROUCHDI 0:e0918584a802 372 BSP_LCD_SetBackColor(LCD_COLOR_GREEN);
ROUCHDI 0:e0918584a802 373 BSP_LCD_SetTextColor(LCD_COLOR_BLACK);
ROUCHDI 0:e0918584a802 374 BSP_LCD_Clear(LCD_COLOR_GREEN);
ROUCHDI 0:e0918584a802 375 sprintf((char*)text, "VALIDER");
ROUCHDI 0:e0918584a802 376 BSP_LCD_DisplayStringAt(0, LINE(5), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 377 HAL_Delay(1000);
ROUCHDI 0:e0918584a802 378 BSP_LCD_SetFont(&Font12);
ROUCHDI 0:e0918584a802 379 BSP_LCD_SetBackColor(LCD_COLOR_BLUE);
ROUCHDI 0:e0918584a802 380 BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
ROUCHDI 0:e0918584a802 381 identificateur = 2;
ROUCHDI 0:e0918584a802 382 } else {
ROUCHDI 0:e0918584a802 383 pc.printf("Student not found");
ROUCHDI 0:e0918584a802 384 BSP_LCD_SetFont(&Font24);
ROUCHDI 0:e0918584a802 385 BSP_LCD_SetBackColor(LCD_COLOR_RED);
ROUCHDI 0:e0918584a802 386 BSP_LCD_SetTextColor(LCD_COLOR_BLACK);
ROUCHDI 0:e0918584a802 387 BSP_LCD_Clear(LCD_COLOR_RED);
ROUCHDI 0:e0918584a802 388 sprintf((char*)text, "REFUSER");
ROUCHDI 0:e0918584a802 389 BSP_LCD_DisplayStringAt(0, LINE(5), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 390 HAL_Delay(1000);
ROUCHDI 0:e0918584a802 391 BSP_LCD_SetFont(&Font12);
ROUCHDI 0:e0918584a802 392 BSP_LCD_SetBackColor(LCD_COLOR_BLUE);
ROUCHDI 0:e0918584a802 393 BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
ROUCHDI 0:e0918584a802 394 }
ROUCHDI 0:e0918584a802 395 if ((id <300)&& (id > -1)) {
ROUCHDI 0:e0918584a802 396 pc.printf("Verified ID:%d",id);
ROUCHDI 0:e0918584a802 397 BSP_LCD_SetFont(&Font24);
ROUCHDI 0:e0918584a802 398 BSP_LCD_SetBackColor(LCD_COLOR_GREEN);
ROUCHDI 0:e0918584a802 399 BSP_LCD_SetTextColor(LCD_COLOR_BLACK);
ROUCHDI 0:e0918584a802 400 BSP_LCD_Clear(LCD_COLOR_GREEN);
ROUCHDI 0:e0918584a802 401 sprintf((char*)text, "Verified ID:%d",id);
ROUCHDI 0:e0918584a802 402 BSP_LCD_DisplayStringAt(0, LINE(0), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 403 HAL_Delay(1000);
ROUCHDI 0:e0918584a802 404 BSP_LCD_SetFont(&Font12);
ROUCHDI 0:e0918584a802 405 BSP_LCD_SetBackColor(LCD_COLOR_BLUE);
ROUCHDI 0:e0918584a802 406 BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
ROUCHDI 0:e0918584a802 407 identificateur = 2;
ROUCHDI 0:e0918584a802 408 } else {
ROUCHDI 0:e0918584a802 409 pc.printf("Finger not found");
ROUCHDI 0:e0918584a802 410 BSP_LCD_SetFont(&Font24);
ROUCHDI 0:e0918584a802 411 BSP_LCD_SetBackColor(LCD_COLOR_RED);
ROUCHDI 0:e0918584a802 412 BSP_LCD_SetTextColor(LCD_COLOR_BLACK);
ROUCHDI 0:e0918584a802 413 BSP_LCD_Clear(LCD_COLOR_RED);
ROUCHDI 0:e0918584a802 414 sprintf((char*)text, "Finger not found");
ROUCHDI 0:e0918584a802 415 BSP_LCD_DisplayStringAt(0, LINE(0), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 416 HAL_Delay(1000);
ROUCHDI 0:e0918584a802 417 BSP_LCD_SetFont(&Font12);
ROUCHDI 0:e0918584a802 418 BSP_LCD_SetBackColor(LCD_COLOR_BLUE);
ROUCHDI 0:e0918584a802 419 BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
ROUCHDI 0:e0918584a802 420 }
ROUCHDI 0:e0918584a802 421 }
ROUCHDI 0:e0918584a802 422 finger.CmosLed(0);
ROUCHDI 0:e0918584a802 423 }
ROUCHDI 0:e0918584a802 424 //fond pour le menu simple identification
ROUCHDI 0:e0918584a802 425 void font_menu_principal_simple(int on_off)
ROUCHDI 0:e0918584a802 426 {
ROUCHDI 0:e0918584a802 427 uint8_t text[30];
ROUCHDI 0:e0918584a802 428 int touche = 0;
ROUCHDI 0:e0918584a802 429
ROUCHDI 0:e0918584a802 430 if (on_off == 1) {
ROUCHDI 0:e0918584a802 431 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 432 BSP_LCD_DisplayStringAt(0, LINE(0), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 433 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 434 BSP_LCD_DisplayStringAt(0, LINE(1), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 435 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 436 BSP_LCD_DisplayStringAt(0, LINE(2), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 437 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 438 BSP_LCD_DisplayStringAt(0, LINE(3), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 439 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 440 BSP_LCD_DisplayStringAt(0, LINE(4), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 441 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 442 BSP_LCD_DisplayStringAt(0, LINE(5), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 443 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 444 BSP_LCD_DisplayStringAt(0, LINE(6), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 445 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 446 BSP_LCD_DisplayStringAt(0, LINE(7), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 447 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 448 BSP_LCD_DisplayStringAt(0, LINE(8), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 449 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 450 BSP_LCD_DisplayStringAt(0, LINE(9), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 451 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 452 BSP_LCD_DisplayStringAt(0, LINE(10), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 453 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 454 BSP_LCD_DisplayStringAt(0, LINE(11), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 455 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 456 BSP_LCD_DisplayStringAt(0, LINE(12), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 457 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 458 BSP_LCD_DisplayStringAt(0, LINE(13), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 459 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 460 BSP_LCD_DisplayStringAt(0, LINE(14), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 461 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 462 BSP_LCD_DisplayStringAt(0, LINE(15), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 463 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 464 BSP_LCD_DisplayStringAt(0, LINE(16), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 465 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 466 BSP_LCD_DisplayStringAt(0, LINE(17), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 467 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 468 BSP_LCD_DisplayStringAt(0, LINE(18), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 469 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 470 BSP_LCD_DisplayStringAt(0, LINE(19), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 471 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 472 BSP_LCD_DisplayStringAt(0, LINE(20), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 473 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 474 BSP_LCD_DisplayStringAt(0, LINE(21), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 475 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 476 BSP_LCD_DisplayStringAt(0, LINE(20), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 477 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 478 BSP_LCD_DisplayStringAt(0, LINE(21), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 479
ROUCHDI 0:e0918584a802 480 sprintf((char*)text, " IDENTIFICATION ");
ROUCHDI 0:e0918584a802 481 BSP_LCD_DisplayStringAt(0, LINE(10), (uint8_t *)&text, LEFT_MODE );
ROUCHDI 0:e0918584a802 482 sprintf((char*)text, " BACK ");
ROUCHDI 0:e0918584a802 483 BSP_LCD_DisplayStringAt(0, LINE(10), (uint8_t *)&text, RIGHT_MODE );
ROUCHDI 0:e0918584a802 484 }
ROUCHDI 0:e0918584a802 485 }
ROUCHDI 0:e0918584a802 486 //fond pour le menu ajouter empreinte
ROUCHDI 0:e0918584a802 487 void font_menu_add(int on_off)
ROUCHDI 0:e0918584a802 488 {
ROUCHDI 0:e0918584a802 489 uint8_t text[30];
ROUCHDI 0:e0918584a802 490 int touche = 0;
ROUCHDI 0:e0918584a802 491
ROUCHDI 0:e0918584a802 492 if (on_off == 1) {
ROUCHDI 0:e0918584a802 493 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 494 BSP_LCD_DisplayStringAt(0, LINE(0), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 495 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 496 BSP_LCD_DisplayStringAt(0, LINE(1), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 497 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 498 BSP_LCD_DisplayStringAt(0, LINE(2), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 499 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 500 BSP_LCD_DisplayStringAt(0, LINE(3), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 501 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 502 BSP_LCD_DisplayStringAt(0, LINE(4), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 503 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 504 BSP_LCD_DisplayStringAt(0, LINE(5), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 505 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 506 BSP_LCD_DisplayStringAt(0, LINE(6), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 507 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 508 BSP_LCD_DisplayStringAt(0, LINE(7), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 509 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 510 BSP_LCD_DisplayStringAt(0, LINE(8), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 511 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 512 BSP_LCD_DisplayStringAt(0, LINE(9), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 513 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 514 BSP_LCD_DisplayStringAt(0, LINE(10), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 515 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 516 BSP_LCD_DisplayStringAt(0, LINE(11), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 517 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 518 BSP_LCD_DisplayStringAt(0, LINE(12), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 519 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 520 BSP_LCD_DisplayStringAt(0, LINE(13), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 521 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 522 BSP_LCD_DisplayStringAt(0, LINE(14), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 523 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 524 BSP_LCD_DisplayStringAt(0, LINE(15), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 525 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 526 BSP_LCD_DisplayStringAt(0, LINE(16), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 527 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 528 BSP_LCD_DisplayStringAt(0, LINE(17), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 529 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 530 BSP_LCD_DisplayStringAt(0, LINE(18), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 531 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 532 BSP_LCD_DisplayStringAt(0, LINE(19), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 533 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 534 BSP_LCD_DisplayStringAt(0, LINE(20), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 535 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 536 BSP_LCD_DisplayStringAt(0, LINE(21), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 537 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 538 BSP_LCD_DisplayStringAt(0, LINE(20), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 539 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 540 BSP_LCD_DisplayStringAt(0, LINE(21), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 541
ROUCHDI 0:e0918584a802 542 sprintf((char*)text, " IDENTIFICATION SIMPLE ");
ROUCHDI 0:e0918584a802 543 BSP_LCD_DisplayStringAt(0, LINE(10), (uint8_t *)&text, RIGHT_MODE );
ROUCHDI 0:e0918584a802 544 sprintf((char*)text, " DOUBLE IDENTIFICATION ");
ROUCHDI 0:e0918584a802 545 BSP_LCD_DisplayStringAt(0, LINE(10), (uint8_t *)&text, LEFT_MODE );
ROUCHDI 0:e0918584a802 546 }
ROUCHDI 0:e0918584a802 547 }
ROUCHDI 0:e0918584a802 548 //fond pour le menu principal
ROUCHDI 0:e0918584a802 549 void font_menu_principal(int on_off)
ROUCHDI 0:e0918584a802 550 {
ROUCHDI 0:e0918584a802 551 uint8_t text[30];
ROUCHDI 0:e0918584a802 552 int touche = 0;
ROUCHDI 0:e0918584a802 553
ROUCHDI 0:e0918584a802 554 if (on_off == 1) {
ROUCHDI 0:e0918584a802 555 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 556 BSP_LCD_DisplayStringAt(0, LINE(0), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 557 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 558 BSP_LCD_DisplayStringAt(0, LINE(1), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 559 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 560 BSP_LCD_DisplayStringAt(0, LINE(2), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 561 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 562 BSP_LCD_DisplayStringAt(0, LINE(3), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 563 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 564 BSP_LCD_DisplayStringAt(0, LINE(4), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 565 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 566 BSP_LCD_DisplayStringAt(0, LINE(5), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 567 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 568 BSP_LCD_DisplayStringAt(0, LINE(6), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 569 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 570 BSP_LCD_DisplayStringAt(0, LINE(7), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 571 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 572 BSP_LCD_DisplayStringAt(0, LINE(8), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 573 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 574 BSP_LCD_DisplayStringAt(0, LINE(9), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 575 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 576 BSP_LCD_DisplayStringAt(0, LINE(10), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 577 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 578 BSP_LCD_DisplayStringAt(0, LINE(11), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 579 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 580 BSP_LCD_DisplayStringAt(0, LINE(12), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 581 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 582 BSP_LCD_DisplayStringAt(0, LINE(13), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 583 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 584 BSP_LCD_DisplayStringAt(0, LINE(14), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 585 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 586 BSP_LCD_DisplayStringAt(0, LINE(15), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 587 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 588 BSP_LCD_DisplayStringAt(0, LINE(16), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 589 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 590 BSP_LCD_DisplayStringAt(0, LINE(17), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 591 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 592 BSP_LCD_DisplayStringAt(0, LINE(18), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 593 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 594 BSP_LCD_DisplayStringAt(0, LINE(19), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 595 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 596 BSP_LCD_DisplayStringAt(0, LINE(20), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 597 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 598 BSP_LCD_DisplayStringAt(0, LINE(21), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 599 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 600 BSP_LCD_DisplayStringAt(0, LINE(20), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 601 sprintf((char*)text, "|");
ROUCHDI 0:e0918584a802 602 BSP_LCD_DisplayStringAt(0, LINE(21), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 603
ROUCHDI 0:e0918584a802 604 sprintf((char*)text, " IDENTIFICATION SIMPLE ");
ROUCHDI 0:e0918584a802 605 BSP_LCD_DisplayStringAt(0, LINE(10), (uint8_t *)&text, RIGHT_MODE );
ROUCHDI 0:e0918584a802 606 sprintf((char*)text, " DOUBLE IDENTIFICATION ");
ROUCHDI 0:e0918584a802 607 BSP_LCD_DisplayStringAt(0, LINE(10), (uint8_t *)&text, LEFT_MODE );
ROUCHDI 0:e0918584a802 608 }
ROUCHDI 0:e0918584a802 609 }
ROUCHDI 0:e0918584a802 610 //fond pour le clavier
ROUCHDI 0:e0918584a802 611 void font_clavier(int on_off)
ROUCHDI 0:e0918584a802 612 {
ROUCHDI 0:e0918584a802 613 uint8_t text[30];
ROUCHDI 0:e0918584a802 614 int touche = 0;
ROUCHDI 0:e0918584a802 615
ROUCHDI 0:e0918584a802 616 if (on_off == 1) {
ROUCHDI 0:e0918584a802 617 sprintf((char*)text, "| DEL |");
ROUCHDI 0:e0918584a802 618 BSP_LCD_DisplayStringAt(0, LINE(1), (uint8_t *)&text, LEFT_MODE );
ROUCHDI 0:e0918584a802 619
ROUCHDI 0:e0918584a802 620 sprintf((char*)text, "| Back |");
ROUCHDI 0:e0918584a802 621 BSP_LCD_DisplayStringAt(0, LINE(1), (uint8_t *)&text, RIGHT_MODE );
ROUCHDI 0:e0918584a802 622
ROUCHDI 0:e0918584a802 623 sprintf((char*)text, "| 1 |");
ROUCHDI 0:e0918584a802 624 BSP_LCD_DisplayStringAt(0, LINE(5), (uint8_t *)&text, LEFT_MODE );
ROUCHDI 0:e0918584a802 625
ROUCHDI 0:e0918584a802 626 sprintf((char*)text, "| 2 |");
ROUCHDI 0:e0918584a802 627 BSP_LCD_DisplayStringAt(0, LINE(5), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 628
ROUCHDI 0:e0918584a802 629 sprintf((char*)text, "| 3 |");
ROUCHDI 0:e0918584a802 630 BSP_LCD_DisplayStringAt(0, LINE(5), (uint8_t *)&text, RIGHT_MODE );
ROUCHDI 0:e0918584a802 631
ROUCHDI 0:e0918584a802 632 sprintf((char*)text, "| 4 |");
ROUCHDI 0:e0918584a802 633 BSP_LCD_DisplayStringAt(0, LINE(10), (uint8_t *)&text, LEFT_MODE );
ROUCHDI 0:e0918584a802 634
ROUCHDI 0:e0918584a802 635 sprintf((char*)text, "| 5 |");
ROUCHDI 0:e0918584a802 636 BSP_LCD_DisplayStringAt(0, LINE(10), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 637
ROUCHDI 0:e0918584a802 638 sprintf((char*)text, "| 6 |");
ROUCHDI 0:e0918584a802 639 BSP_LCD_DisplayStringAt(0, LINE(10), (uint8_t *)&text, RIGHT_MODE );
ROUCHDI 0:e0918584a802 640
ROUCHDI 0:e0918584a802 641 sprintf((char*)text, "| 7 |");
ROUCHDI 0:e0918584a802 642 BSP_LCD_DisplayStringAt(0, LINE(15), (uint8_t *)&text, LEFT_MODE );
ROUCHDI 0:e0918584a802 643
ROUCHDI 0:e0918584a802 644 sprintf((char*)text, "| 8 |");
ROUCHDI 0:e0918584a802 645 BSP_LCD_DisplayStringAt(0, LINE(15), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 646
ROUCHDI 0:e0918584a802 647 sprintf((char*)text, "| 9 |");
ROUCHDI 0:e0918584a802 648 BSP_LCD_DisplayStringAt(0, LINE(15), (uint8_t *)&text, RIGHT_MODE );
ROUCHDI 0:e0918584a802 649
ROUCHDI 0:e0918584a802 650 sprintf((char*)text, "| 0 |");
ROUCHDI 0:e0918584a802 651 BSP_LCD_DisplayStringAt(0, LINE(20), (uint8_t *)&text, CENTER_MODE );
ROUCHDI 0:e0918584a802 652
ROUCHDI 0:e0918584a802 653 sprintf((char*)text, "| Valider |");
ROUCHDI 0:e0918584a802 654 BSP_LCD_DisplayStringAt(0, LINE(20), (uint8_t *)&text, RIGHT_MODE );
ROUCHDI 0:e0918584a802 655
ROUCHDI 0:e0918584a802 656 //sprintf((char*)text, "| Finger |");
ROUCHDI 0:e0918584a802 657 sprintf((char*)text, "| Annuler |");
ROUCHDI 0:e0918584a802 658 BSP_LCD_DisplayStringAt(0, LINE(20), (uint8_t *)&text, LEFT_MODE );
ROUCHDI 0:e0918584a802 659 }
ROUCHDI 0:e0918584a802 660 }
ROUCHDI 0:e0918584a802 661 //permet de detecter les touches appuyer dans le menu principal
ROUCHDI 0:e0918584a802 662 void menu_principal()
ROUCHDI 0:e0918584a802 663 {
ROUCHDI 0:e0918584a802 664 TS_StateTypeDef TS_State;
ROUCHDI 0:e0918584a802 665 int touche;
ROUCHDI 0:e0918584a802 666 uint16_t x, y;
ROUCHDI 0:e0918584a802 667 uint8_t text[30];
ROUCHDI 0:e0918584a802 668 uint8_t status;
ROUCHDI 0:e0918584a802 669 uint8_t idx;
ROUCHDI 0:e0918584a802 670 uint8_t cleared = 0;
ROUCHDI 0:e0918584a802 671 uint8_t prev_nb_touches = 0;
ROUCHDI 0:e0918584a802 672
ROUCHDI 0:e0918584a802 673 BSP_LCD_Init();
ROUCHDI 0:e0918584a802 674 BSP_LCD_LayerDefaultInit(LTDC_ACTIVE_LAYER, LCD_FB_START_ADDRESS);
ROUCHDI 0:e0918584a802 675 BSP_LCD_SelectLayer(LTDC_ACTIVE_LAYER);
ROUCHDI 0:e0918584a802 676
ROUCHDI 0:e0918584a802 677 status = BSP_TS_Init(BSP_LCD_GetXSize(), BSP_LCD_GetYSize());
ROUCHDI 0:e0918584a802 678 BSP_LCD_SetFont(&Font12);
ROUCHDI 0:e0918584a802 679 BSP_LCD_SetBackColor(LCD_COLOR_BLUE);
ROUCHDI 0:e0918584a802 680 BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
ROUCHDI 0:e0918584a802 681 BSP_LCD_Clear(LCD_COLOR_BLUE);
ROUCHDI 0:e0918584a802 682
ROUCHDI 0:e0918584a802 683 drawImageLogo(320,0);
ROUCHDI 0:e0918584a802 684
ROUCHDI 0:e0918584a802 685 while(1) {
ROUCHDI 0:e0918584a802 686 BSP_TS_GetState(&TS_State);
ROUCHDI 0:e0918584a802 687 font_menu_principal(1);
ROUCHDI 0:e0918584a802 688 if (TS_State.touchDetected) {
ROUCHDI 0:e0918584a802 689 if (TS_State.touchDetected < prev_nb_touches) {
ROUCHDI 0:e0918584a802 690 for (idx = (TS_State.touchDetected + 1); idx <= 5; idx++) {
ROUCHDI 0:e0918584a802 691 BSP_LCD_ClearStringLine(idx);
ROUCHDI 0:e0918584a802 692 }
ROUCHDI 0:e0918584a802 693 }
ROUCHDI 0:e0918584a802 694 prev_nb_touches = TS_State.touchDetected;
ROUCHDI 0:e0918584a802 695
ROUCHDI 0:e0918584a802 696 cleared = 0;
ROUCHDI 0:e0918584a802 697
ROUCHDI 0:e0918584a802 698 //sprintf((char*)text, "Touches: %d", TS_State.touchDetected);
ROUCHDI 0:e0918584a802 699 //BSP_LCD_DisplayStringAt(0, LINE(0), (uint8_t *)&text, LEFT_MODE);
ROUCHDI 0:e0918584a802 700
ROUCHDI 0:e0918584a802 701 for (idx = 0; idx < TS_State.touchDetected; idx++) {
ROUCHDI 0:e0918584a802 702 x = TS_State.touchX[idx];
ROUCHDI 0:e0918584a802 703 y = TS_State.touchY[idx];
ROUCHDI 0:e0918584a802 704 //sprintf((char*)text, "Touch %d: x=%d y=%d ", touche, x, y);
ROUCHDI 0:e0918584a802 705 //BSP_LCD_DisplayStringAt(0, LINE(0)/*LINE(idx+1)*/, (uint8_t *)&text, LEFT_MODE);
ROUCHDI 0:e0918584a802 706 }
ROUCHDI 0:e0918584a802 707
ROUCHDI 0:e0918584a802 708 if(x<=200) {
ROUCHDI 0:e0918584a802 709 touch_screen();
ROUCHDI 0:e0918584a802 710 } else if(x>=210) {
ROUCHDI 0:e0918584a802 711 touch_screen_simple();
ROUCHDI 0:e0918584a802 712 }
ROUCHDI 0:e0918584a802 713 } else {
ROUCHDI 0:e0918584a802 714 //sprintf((char*)text,"code: %d",0);//valider
ROUCHDI 0:e0918584a802 715 //BSP_LCD_DisplayStringAt(0, LINE(2), (uint8_t *)&text, RIGHT_MODE);
ROUCHDI 0:e0918584a802 716 }
ROUCHDI 0:e0918584a802 717 }
ROUCHDI 0:e0918584a802 718 }
ROUCHDI 0:e0918584a802 719 // permet de detecter les touches appuyer dans le menu simple identification
ROUCHDI 0:e0918584a802 720 void touch_screen_simple()
ROUCHDI 0:e0918584a802 721 {
ROUCHDI 0:e0918584a802 722 TS_StateTypeDef TS_State;
ROUCHDI 0:e0918584a802 723 int touche= -1;
ROUCHDI 0:e0918584a802 724 uint16_t x, y;
ROUCHDI 0:e0918584a802 725 uint8_t text[30];
ROUCHDI 0:e0918584a802 726 uint8_t status;
ROUCHDI 0:e0918584a802 727 uint8_t idx;
ROUCHDI 0:e0918584a802 728 uint8_t cleared = 0;
ROUCHDI 0:e0918584a802 729 uint8_t prev_nb_touches = 0;
ROUCHDI 0:e0918584a802 730
ROUCHDI 0:e0918584a802 731 BSP_LCD_Init();
ROUCHDI 0:e0918584a802 732 BSP_LCD_LayerDefaultInit(LTDC_ACTIVE_LAYER, LCD_FB_START_ADDRESS);
ROUCHDI 0:e0918584a802 733 BSP_LCD_SelectLayer(LTDC_ACTIVE_LAYER);
ROUCHDI 0:e0918584a802 734 status = BSP_TS_Init(BSP_LCD_GetXSize(), BSP_LCD_GetYSize());
ROUCHDI 0:e0918584a802 735 BSP_LCD_SetFont(&Font12);
ROUCHDI 0:e0918584a802 736 BSP_LCD_SetBackColor(LCD_COLOR_BLUE);
ROUCHDI 0:e0918584a802 737 BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
ROUCHDI 0:e0918584a802 738 BSP_LCD_Clear(LCD_COLOR_BLUE);
ROUCHDI 0:e0918584a802 739 while(1) {
ROUCHDI 0:e0918584a802 740 BSP_TS_GetState(&TS_State);
ROUCHDI 0:e0918584a802 741 font_menu_principal_simple(1);
ROUCHDI 0:e0918584a802 742 if (TS_State.touchDetected) {
ROUCHDI 0:e0918584a802 743 if (TS_State.touchDetected < prev_nb_touches) {
ROUCHDI 0:e0918584a802 744 for (idx = (TS_State.touchDetected + 1); idx <= 5; idx++) {
ROUCHDI 0:e0918584a802 745 BSP_LCD_ClearStringLine(idx);
ROUCHDI 0:e0918584a802 746 }
ROUCHDI 0:e0918584a802 747 }
ROUCHDI 0:e0918584a802 748 prev_nb_touches = TS_State.touchDetected;
ROUCHDI 0:e0918584a802 749
ROUCHDI 0:e0918584a802 750 cleared = 0;
ROUCHDI 0:e0918584a802 751
ROUCHDI 0:e0918584a802 752 //sprintf((char*)text, "Touches: %d", TS_State.touchDetected);
ROUCHDI 0:e0918584a802 753 //BSP_LCD_DisplayStringAt(0, LINE(0), (uint8_t *)&text, LEFT_MODE);
ROUCHDI 0:e0918584a802 754
ROUCHDI 0:e0918584a802 755 for (idx = 0; idx < TS_State.touchDetected; idx++) {
ROUCHDI 0:e0918584a802 756 x = TS_State.touchX[idx];
ROUCHDI 0:e0918584a802 757 y = TS_State.touchY[idx];
ROUCHDI 0:e0918584a802 758 //sprintf((char*)text, "Touch %d: x=%d y=%d ", touche, x, y);
ROUCHDI 0:e0918584a802 759 //BSP_LCD_DisplayStringAt(0, LINE(0)/*LINE(idx+1)*/, (uint8_t *)&text, LEFT_MODE);
ROUCHDI 0:e0918584a802 760 }
ROUCHDI 0:e0918584a802 761
ROUCHDI 0:e0918584a802 762 if(x<=200) {
ROUCHDI 0:e0918584a802 763 //finger.DeleteAllIDs();
ROUCHDI 0:e0918584a802 764 sprintf((char*)text, "Identification ");//1
ROUCHDI 0:e0918584a802 765 BSP_LCD_DisplayStringAt(0, LINE(0), (uint8_t *)&text, RIGHT_MODE);
ROUCHDI 0:e0918584a802 766 identifier_add();
ROUCHDI 0:e0918584a802 767 BSP_LCD_Clear(LCD_COLOR_BLUE);
ROUCHDI 0:e0918584a802 768
ROUCHDI 0:e0918584a802 769 } else if(x>=210) {
ROUCHDI 0:e0918584a802 770 sprintf((char*)text,"Back");
ROUCHDI 0:e0918584a802 771 BSP_LCD_DisplayStringAt(0, LINE(0), (uint8_t *)&text, RIGHT_MODE);
ROUCHDI 0:e0918584a802 772 menu_principal();
ROUCHDI 0:e0918584a802 773 }
ROUCHDI 0:e0918584a802 774 } else {
ROUCHDI 0:e0918584a802 775 //sprintf((char*)text,"code: %d",0);//valider
ROUCHDI 0:e0918584a802 776 //BSP_LCD_DisplayStringAt(0, LINE(2), (uint8_t *)&text, RIGHT_MODE);
ROUCHDI 0:e0918584a802 777 }
ROUCHDI 0:e0918584a802 778 }
ROUCHDI 0:e0918584a802 779 }
ROUCHDI 0:e0918584a802 780
ROUCHDI 0:e0918584a802 781 // mise en place de la detection des touches
ROUCHDI 0:e0918584a802 782 void touch_screen()
ROUCHDI 0:e0918584a802 783 {
ROUCHDI 0:e0918584a802 784 TS_StateTypeDef TS_State;
ROUCHDI 0:e0918584a802 785 int touche= -1;
ROUCHDI 0:e0918584a802 786 uint16_t x, y;
ROUCHDI 0:e0918584a802 787 uint8_t text[30];
ROUCHDI 0:e0918584a802 788 uint8_t status;
ROUCHDI 0:e0918584a802 789 uint8_t idx;
ROUCHDI 0:e0918584a802 790 uint8_t cleared = 0;
ROUCHDI 0:e0918584a802 791 uint8_t prev_nb_touches = 0;
ROUCHDI 0:e0918584a802 792
ROUCHDI 0:e0918584a802 793 BSP_LCD_Init();
ROUCHDI 0:e0918584a802 794 BSP_LCD_LayerDefaultInit(LTDC_ACTIVE_LAYER, LCD_FB_START_ADDRESS);
ROUCHDI 0:e0918584a802 795 BSP_LCD_SelectLayer(LTDC_ACTIVE_LAYER);
ROUCHDI 0:e0918584a802 796 status = BSP_TS_Init(BSP_LCD_GetXSize(), BSP_LCD_GetYSize());
ROUCHDI 0:e0918584a802 797 BSP_LCD_SetFont(&Font12);
ROUCHDI 0:e0918584a802 798 BSP_LCD_SetBackColor(LCD_COLOR_BLUE);
ROUCHDI 0:e0918584a802 799 BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
ROUCHDI 0:e0918584a802 800 BSP_LCD_Clear(LCD_COLOR_BLUE);
ROUCHDI 0:e0918584a802 801 while(1) {
ROUCHDI 0:e0918584a802 802 BSP_TS_GetState(&TS_State);
ROUCHDI 0:e0918584a802 803 font_clavier(1);
ROUCHDI 0:e0918584a802 804 if (TS_State.touchDetected) {
ROUCHDI 0:e0918584a802 805 if (TS_State.touchDetected < prev_nb_touches) {
ROUCHDI 0:e0918584a802 806 for (idx = (TS_State.touchDetected + 1); idx <= 5; idx++) {
ROUCHDI 0:e0918584a802 807 BSP_LCD_ClearStringLine(idx);
ROUCHDI 0:e0918584a802 808 }
ROUCHDI 0:e0918584a802 809 }
ROUCHDI 0:e0918584a802 810 prev_nb_touches = TS_State.touchDetected;
ROUCHDI 0:e0918584a802 811
ROUCHDI 0:e0918584a802 812 cleared = 0;
ROUCHDI 0:e0918584a802 813 touche = -1;
ROUCHDI 0:e0918584a802 814 //sprintf((char*)text, "Touches: %d", TS_State.touchDetected);
ROUCHDI 0:e0918584a802 815 //BSP_LCD_DisplayStringAt(0, LINE(0), (uint8_t *)&text, LEFT_MODE);
ROUCHDI 0:e0918584a802 816
ROUCHDI 0:e0918584a802 817 for (idx = 0; idx < TS_State.touchDetected; idx++) {
ROUCHDI 0:e0918584a802 818 x = TS_State.touchX[idx];
ROUCHDI 0:e0918584a802 819 y = TS_State.touchY[idx];
ROUCHDI 0:e0918584a802 820 //sprintf((char*)text, "Touch %d: x=%d y=%d ", touche, x, y);
ROUCHDI 0:e0918584a802 821 // BSP_LCD_DisplayStringAt(0, LINE(0)/*LINE(idx+1)*/, (uint8_t *)&text, LEFT_MODE);
ROUCHDI 0:e0918584a802 822 }
ROUCHDI 0:e0918584a802 823
ROUCHDI 0:e0918584a802 824 if((x>=1 &&x<=60)&&(y>=20&&y<=40)) {
ROUCHDI 0:e0918584a802 825 finger.DeleteAllIDs();
ROUCHDI 0:e0918584a802 826 BSP_LCD_ClearStringLine(0);
ROUCHDI 0:e0918584a802 827 sprintf((char*)text, "Delete all id ");
ROUCHDI 0:e0918584a802 828 BSP_LCD_DisplayStringAt(0, LINE(0), (uint8_t *)&text, CENTER_MODE);
ROUCHDI 0:e0918584a802 829 //BSP_LCD_ClearStringLine(0);
ROUCHDI 0:e0918584a802 830 code = 0;
ROUCHDI 0:e0918584a802 831 } else if((x>=410 &&x<=500)&&(y>=20&&y<=40)) {
ROUCHDI 0:e0918584a802 832 sprintf((char*)text,"BACK");
ROUCHDI 0:e0918584a802 833 BSP_LCD_ClearStringLine(0);
ROUCHDI 0:e0918584a802 834 BSP_LCD_DisplayStringAt(0, LINE(0), (uint8_t *)&text, CENTER_MODE);
ROUCHDI 0:e0918584a802 835 menu_principal();
ROUCHDI 0:e0918584a802 836 code = 0;
ROUCHDI 0:e0918584a802 837 } else if((x>=1 &&x<=60)&&(y>=60&&y<=80)) {
ROUCHDI 0:e0918584a802 838 touche=1;
ROUCHDI 0:e0918584a802 839 BSP_LCD_ClearStringLine(0);
ROUCHDI 0:e0918584a802 840 sprintf((char*)text, "Touches: %d",touche);//1
ROUCHDI 0:e0918584a802 841 BSP_LCD_DisplayStringAt(0, LINE(0), (uint8_t *)&text, CENTER_MODE);
ROUCHDI 0:e0918584a802 842 do {} while (!TS_State.touchDetected);
ROUCHDI 0:e0918584a802 843 } else if((x>=200 &&x<=260)&&(y>=60&&y<=80)) {
ROUCHDI 0:e0918584a802 844 touche=2;
ROUCHDI 0:e0918584a802 845 BSP_LCD_ClearStringLine(0);
ROUCHDI 0:e0918584a802 846 sprintf((char*)text,"Touches: %d",touche);//2
ROUCHDI 0:e0918584a802 847 BSP_LCD_DisplayStringAt(0, LINE(0), (uint8_t *)&text, CENTER_MODE);
ROUCHDI 0:e0918584a802 848 do {} while (!TS_State.touchDetected);
ROUCHDI 0:e0918584a802 849 } else if((x>=410 &&x<=500)&&(y>=60&&y<=80)) {
ROUCHDI 0:e0918584a802 850 touche=3;
ROUCHDI 0:e0918584a802 851 BSP_LCD_ClearStringLine(0);
ROUCHDI 0:e0918584a802 852 sprintf((char*)text,"Touches: %d",touche);//3
ROUCHDI 0:e0918584a802 853 BSP_LCD_DisplayStringAt(0, LINE(0), (uint8_t *)&text, CENTER_MODE);
ROUCHDI 0:e0918584a802 854 do {} while (!TS_State.touchDetected);
ROUCHDI 0:e0918584a802 855 } else if((x>=1 &&x<=60)&&(y>=120&&y<=140)) {
ROUCHDI 0:e0918584a802 856 touche=4;
ROUCHDI 0:e0918584a802 857 BSP_LCD_ClearStringLine(0);
ROUCHDI 0:e0918584a802 858 sprintf((char*)text,"Touches: %d",touche);//4
ROUCHDI 0:e0918584a802 859 BSP_LCD_DisplayStringAt(0, LINE(0), (uint8_t *)&text, CENTER_MODE);
ROUCHDI 0:e0918584a802 860 do {} while (!TS_State.touchDetected);
ROUCHDI 0:e0918584a802 861 } else if((x>=200 &&x<=260)&&(y>=115&&y<=135)) {
ROUCHDI 0:e0918584a802 862 touche=5;
ROUCHDI 0:e0918584a802 863 BSP_LCD_ClearStringLine(0);
ROUCHDI 0:e0918584a802 864 sprintf((char*)text,"Touches: %d",touche);//5
ROUCHDI 0:e0918584a802 865 BSP_LCD_DisplayStringAt(0, LINE(0), (uint8_t *)&text, CENTER_MODE);
ROUCHDI 0:e0918584a802 866 do {} while (!TS_State.touchDetected);
ROUCHDI 0:e0918584a802 867 } else if((x>=410 &&x<=500)&&(y>=115&&y<=130)) {
ROUCHDI 0:e0918584a802 868 touche=6;
ROUCHDI 0:e0918584a802 869 BSP_LCD_ClearStringLine(0);
ROUCHDI 0:e0918584a802 870 sprintf((char*)text,"Touches: %d",touche);//6
ROUCHDI 0:e0918584a802 871 BSP_LCD_DisplayStringAt(0, LINE(0), (uint8_t *)&text, CENTER_MODE);
ROUCHDI 0:e0918584a802 872 do {} while (!TS_State.touchDetected);
ROUCHDI 0:e0918584a802 873 } else if((x>=1 &&x<=60)&&(y>=170&&y<=190)) {
ROUCHDI 0:e0918584a802 874 touche=7;
ROUCHDI 0:e0918584a802 875 BSP_LCD_ClearStringLine(0);
ROUCHDI 0:e0918584a802 876 sprintf((char*)text,"Touches: %d",touche);//7
ROUCHDI 0:e0918584a802 877 BSP_LCD_DisplayStringAt(0, LINE(0), (uint8_t *)&text, CENTER_MODE);
ROUCHDI 0:e0918584a802 878 do {} while (!TS_State.touchDetected);
ROUCHDI 0:e0918584a802 879 } else if((x>=200 &&x<=260)&&(y>=180&&y<=200)) {
ROUCHDI 0:e0918584a802 880 touche=8;
ROUCHDI 0:e0918584a802 881 BSP_LCD_ClearStringLine(0);
ROUCHDI 0:e0918584a802 882 sprintf((char*)text,"Touches: %d",touche);//8
ROUCHDI 0:e0918584a802 883 BSP_LCD_DisplayStringAt(0, LINE(0), (uint8_t *)&text, CENTER_MODE);
ROUCHDI 0:e0918584a802 884 do {} while (!TS_State.touchDetected);
ROUCHDI 0:e0918584a802 885 } else if((x>=410 &&x<=500)&&(y>=180&&y<=210)) {
ROUCHDI 0:e0918584a802 886 touche=9;
ROUCHDI 0:e0918584a802 887 BSP_LCD_ClearStringLine(0);
ROUCHDI 0:e0918584a802 888 sprintf((char*)text,"Touches: %d",touche);//9
ROUCHDI 0:e0918584a802 889 BSP_LCD_DisplayStringAt(0, LINE(0), (uint8_t *)&text, CENTER_MODE);
ROUCHDI 0:e0918584a802 890 do {} while (!TS_State.touchDetected);
ROUCHDI 0:e0918584a802 891 } else if((x>=190 &&x<=260)&&(y>=230&&y<=260)) {
ROUCHDI 0:e0918584a802 892 touche=0;
ROUCHDI 0:e0918584a802 893 BSP_LCD_ClearStringLine(0);
ROUCHDI 0:e0918584a802 894 sprintf((char*)text,"Touches: %d",touche);//0
ROUCHDI 0:e0918584a802 895 BSP_LCD_DisplayStringAt(0, LINE(0), (uint8_t *)&text, CENTER_MODE);
ROUCHDI 0:e0918584a802 896 do {} while (!TS_State.touchDetected);
ROUCHDI 0:e0918584a802 897 } else if((x>=1 &&x<=60)&&(y>=230&&y<=260)) {
ROUCHDI 0:e0918584a802 898 sprintf((char*)text,"Touches: Annuler");//finger
ROUCHDI 0:e0918584a802 899 BSP_LCD_DisplayStringAt(0, LINE(0), (uint8_t *)&text, CENTER_MODE);
ROUCHDI 0:e0918584a802 900 BSP_LCD_ClearStringLine(2);
ROUCHDI 0:e0918584a802 901 code = 0;
ROUCHDI 0:e0918584a802 902 } else if((x>=370 &&x<=500)&&(y>=230&&y<=260)) {
ROUCHDI 0:e0918584a802 903 sprintf((char*)text,"Touches: valider");//valider
ROUCHDI 0:e0918584a802 904 BSP_LCD_DisplayStringAt(0, LINE(0), (uint8_t *)&text, CENTER_MODE);
ROUCHDI 2:baaccd9cb124 905 BSP_LCD_ClearStringLine(2);
ROUCHDI 0:e0918584a802 906 if(identificateur == 0) {
ROUCHDI 0:e0918584a802 907 sprintf((char*)text,"Saisir Code SVP");//valider
ROUCHDI 0:e0918584a802 908 BSP_LCD_DisplayStringAt(0, LINE(0), (uint8_t *)&text, CENTER_MODE);
ROUCHDI 0:e0918584a802 909 } else if(identificateur == 1) {
ROUCHDI 0:e0918584a802 910 if(EnrollID == -1) {
ROUCHDI 0:e0918584a802 911 sprintf((char*)text,"Ajouter empreinte SVP");//valider
ROUCHDI 0:e0918584a802 912 BSP_LCD_DisplayStringAt(0, LINE(0), (uint8_t *)&text, CENTER_MODE);
ROUCHDI 0:e0918584a802 913 ajouter_finger();
ROUCHDI 0:e0918584a802 914 }
ROUCHDI 0:e0918584a802 915 sprintf((char*)text,"Saisir empreinte SVP");//valider
ROUCHDI 0:e0918584a802 916 BSP_LCD_DisplayStringAt(0, LINE(0), (uint8_t *)&text, CENTER_MODE);
ROUCHDI 0:e0918584a802 917 identifier();
ROUCHDI 0:e0918584a802 918 }
ROUCHDI 2:baaccd9cb124 919 if(identificateur == 2) {
ROUCHDI 0:e0918584a802 920 sprintf((char*)text,"Bienvenue");//valider
ROUCHDI 0:e0918584a802 921 BSP_LCD_DisplayStringAt(0, LINE(0), (uint8_t *)&text, CENTER_MODE);
ROUCHDI 0:e0918584a802 922 code = 0;
ROUCHDI 0:e0918584a802 923 identificateur=0;
ROUCHDI 0:e0918584a802 924 touch_screen_2();
ROUCHDI 0:e0918584a802 925 } else {
ROUCHDI 0:e0918584a802 926 code = 0;
ROUCHDI 0:e0918584a802 927 }
ROUCHDI 0:e0918584a802 928 }
ROUCHDI 0:e0918584a802 929 if(code == pass) {
ROUCHDI 0:e0918584a802 930 code = 0;
ROUCHDI 0:e0918584a802 931 identificateur = 1;
ROUCHDI 0:e0918584a802 932 }
ROUCHDI 0:e0918584a802 933 } else {
ROUCHDI 0:e0918584a802 934 //code = code*multi + touche;
ROUCHDI 0:e0918584a802 935 if (touche != -1) {
ROUCHDI 0:e0918584a802 936 codetouche(touche,multi);
ROUCHDI 0:e0918584a802 937 }
ROUCHDI 0:e0918584a802 938 if(multi < 10) {
ROUCHDI 0:e0918584a802 939 multi *= 10;
ROUCHDI 0:e0918584a802 940 }
ROUCHDI 0:e0918584a802 941 touche =-1;
ROUCHDI 0:e0918584a802 942 }
ROUCHDI 0:e0918584a802 943 }
ROUCHDI 0:e0918584a802 944 }
ROUCHDI 0:e0918584a802 945 // initialisation du LCD
ROUCHDI 0:e0918584a802 946 void init_lcd()
ROUCHDI 0:e0918584a802 947 {
ROUCHDI 0:e0918584a802 948 uint8_t status;
ROUCHDI 0:e0918584a802 949 int touche = -1;
ROUCHDI 0:e0918584a802 950
ROUCHDI 0:e0918584a802 951 BSP_LCD_Init();
ROUCHDI 0:e0918584a802 952 finger.CmosLed(0);
ROUCHDI 0:e0918584a802 953 BSP_LCD_LayerDefaultInit(LTDC_ACTIVE_LAYER, LCD_FB_START_ADDRESS);
ROUCHDI 0:e0918584a802 954 BSP_LCD_SelectLayer(LTDC_ACTIVE_LAYER);
ROUCHDI 0:e0918584a802 955 status = BSP_TS_Init(BSP_LCD_GetXSize(), BSP_LCD_GetYSize());
ROUCHDI 0:e0918584a802 956 HAL_Delay(1000);
ROUCHDI 0:e0918584a802 957 BSP_LCD_SetFont(&Font12);
ROUCHDI 0:e0918584a802 958 BSP_LCD_SetBackColor(LCD_COLOR_BLACK);
ROUCHDI 0:e0918584a802 959 BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
ROUCHDI 0:e0918584a802 960 }
ROUCHDI 0:e0918584a802 961 // main principal
ROUCHDI 0:e0918584a802 962 int main()
ROUCHDI 0:e0918584a802 963 {
ROUCHDI 0:e0918584a802 964 init_lcd();
ROUCHDI 0:e0918584a802 965 init_finger();
ROUCHDI 0:e0918584a802 966 menu_principal();
ROUCHDI 0:e0918584a802 967 }