Versión sin post-procesado del software del VmRideR
Dependencies: mbed
FileManager/Configuracion.cpp@0:3d456b8ce449, 2015-06-15 (annotated)
- Committer:
- JuanManuelAmador
- Date:
- Mon Jun 15 15:34:27 2015 +0000
- Revision:
- 0:3d456b8ce449
prueba
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
JuanManuelAmador | 0:3d456b8ce449 | 1 | #include "Configuracion.h" |
JuanManuelAmador | 0:3d456b8ce449 | 2 | |
JuanManuelAmador | 0:3d456b8ce449 | 3 | extern ScreenManager SC; |
JuanManuelAmador | 0:3d456b8ce449 | 4 | extern SelecManager SM; |
JuanManuelAmador | 0:3d456b8ce449 | 5 | |
JuanManuelAmador | 0:3d456b8ce449 | 6 | Configuracion::Configuracion(){ |
JuanManuelAmador | 0:3d456b8ce449 | 7 | // Se lee el archivo de configuración, en caso de no existir se crea |
JuanManuelAmador | 0:3d456b8ce449 | 8 | FILE* file; |
JuanManuelAmador | 0:3d456b8ce449 | 9 | if((file = fopen("/local/Config.vme","r")) == NULL){ |
JuanManuelAmador | 0:3d456b8ce449 | 10 | setDefaults(); |
JuanManuelAmador | 0:3d456b8ce449 | 11 | createFile(); |
JuanManuelAmador | 0:3d456b8ce449 | 12 | }else{ // El archivo ya existe |
JuanManuelAmador | 0:3d456b8ce449 | 13 | getParam(file, "adquisitionvelocity", velocidadAdquisicion); |
JuanManuelAmador | 0:3d456b8ce449 | 14 | getParam(file, "languaje", idioma); |
JuanManuelAmador | 0:3d456b8ce449 | 15 | getParam(file, "selectiontype", formaSeleccion); |
JuanManuelAmador | 0:3d456b8ce449 | 16 | } |
JuanManuelAmador | 0:3d456b8ce449 | 17 | // Se cierra el fichero |
JuanManuelAmador | 0:3d456b8ce449 | 18 | if(file != NULL){ |
JuanManuelAmador | 0:3d456b8ce449 | 19 | fclose(file); |
JuanManuelAmador | 0:3d456b8ce449 | 20 | } |
JuanManuelAmador | 0:3d456b8ce449 | 21 | } |
JuanManuelAmador | 0:3d456b8ce449 | 22 | |
JuanManuelAmador | 0:3d456b8ce449 | 23 | void Configuracion::restoreSettings(){ |
JuanManuelAmador | 0:3d456b8ce449 | 24 | setDefaults(); |
JuanManuelAmador | 0:3d456b8ce449 | 25 | createFile(); |
JuanManuelAmador | 0:3d456b8ce449 | 26 | } |
JuanManuelAmador | 0:3d456b8ce449 | 27 | |
JuanManuelAmador | 0:3d456b8ce449 | 28 | void Configuracion::setDefaults(){ |
JuanManuelAmador | 0:3d456b8ce449 | 29 | strcpy(velocidadAdquisicion, "1000"); |
JuanManuelAmador | 0:3d456b8ce449 | 30 | strcpy(idioma, "spanish"); |
JuanManuelAmador | 0:3d456b8ce449 | 31 | strcpy(formaSeleccion, "shading"); |
JuanManuelAmador | 0:3d456b8ce449 | 32 | |
JuanManuelAmador | 0:3d456b8ce449 | 33 | // Además del fichero de configuración se cambia la configuración actual de la interfaz |
JuanManuelAmador | 0:3d456b8ce449 | 34 | char aux[16]; |
JuanManuelAmador | 0:3d456b8ce449 | 35 | // Se selecciona el idioma |
JuanManuelAmador | 0:3d456b8ce449 | 36 | getIdioma(aux); |
JuanManuelAmador | 0:3d456b8ce449 | 37 | if(strcmp(aux, "spanish") == 0){ |
JuanManuelAmador | 0:3d456b8ce449 | 38 | SC.selectGroup(0); |
JuanManuelAmador | 0:3d456b8ce449 | 39 | }else if(strcmp(aux, "english") == 0){ |
JuanManuelAmador | 0:3d456b8ce449 | 40 | SC.selectGroup(1); |
JuanManuelAmador | 0:3d456b8ce449 | 41 | } |
JuanManuelAmador | 0:3d456b8ce449 | 42 | // Se selecciona el modo de selección |
JuanManuelAmador | 0:3d456b8ce449 | 43 | getFormaSeleccion(aux); |
JuanManuelAmador | 0:3d456b8ce449 | 44 | if(strcmp(aux, "shading") == 0){ |
JuanManuelAmador | 0:3d456b8ce449 | 45 | SM.setInverterSelection(); |
JuanManuelAmador | 0:3d456b8ce449 | 46 | }else if(strcmp(aux, "framing") == 0){ |
JuanManuelAmador | 0:3d456b8ce449 | 47 | SM.setRectSelection(); |
JuanManuelAmador | 0:3d456b8ce449 | 48 | } |
JuanManuelAmador | 0:3d456b8ce449 | 49 | } |
JuanManuelAmador | 0:3d456b8ce449 | 50 | |
JuanManuelAmador | 0:3d456b8ce449 | 51 | // Esta función busca el valor del parámetro nameParam y lo guarda en buf |
JuanManuelAmador | 0:3d456b8ce449 | 52 | // Para ello se recorrera cada una de las lineas del archivo de configuración hasta encontrarlo y leer su valor |
JuanManuelAmador | 0:3d456b8ce449 | 53 | // Recordar: El archivo de configuración tiene le siguiente formato |
JuanManuelAmador | 0:3d456b8ce449 | 54 | // nombreParámetro valorParámetro |
JuanManuelAmador | 0:3d456b8ce449 | 55 | void Configuracion::getParam(FILE* file, char nameParam[], char buf[]){ |
JuanManuelAmador | 0:3d456b8ce449 | 56 | // se calcula la longitud del nombre del parámetro |
JuanManuelAmador | 0:3d456b8ce449 | 57 | int lenParam = strlen(nameParam); |
JuanManuelAmador | 0:3d456b8ce449 | 58 | char aux[NCARACTERESLECTURA]; |
JuanManuelAmador | 0:3d456b8ce449 | 59 | bool encontrado = false; |
JuanManuelAmador | 0:3d456b8ce449 | 60 | while(!encontrado && (!feof(file))){ // Solo se para de leer si se ha llegado al fin de fichero o se ha encontrado el valor del parámetro |
JuanManuelAmador | 0:3d456b8ce449 | 61 | // Se lee una linea |
JuanManuelAmador | 0:3d456b8ce449 | 62 | fgets(aux, NCARACTERESLECTURA, file); |
JuanManuelAmador | 0:3d456b8ce449 | 63 | if(strncmp(nameParam, aux, lenParam)== 0){ |
JuanManuelAmador | 0:3d456b8ce449 | 64 | // Se ha encontrado la línea del parámetro que está guardada en aux |
JuanManuelAmador | 0:3d456b8ce449 | 65 | // se guarda el valor del parámetro (que empieza después de un espacio desde el nombre del parámetro y acaba antes del salto de línea) |
JuanManuelAmador | 0:3d456b8ce449 | 66 | // Antes se calcula cuantos caracteres tiene el valor del parámetro |
JuanManuelAmador | 0:3d456b8ce449 | 67 | // que será la longitud de la línea menos a longitud del nombre del parámetro - 2 (un caracter que es el espacio y el caracter final \n que tampoco debe copiarse |
JuanManuelAmador | 0:3d456b8ce449 | 68 | for(int i = 0; i < strlen(aux) - lenParam - 2; i++){ |
JuanManuelAmador | 0:3d456b8ce449 | 69 | buf[i] = aux[i + lenParam + 1]; // +1 porque se empieza a guardar a partir del espacio entre el nombre y el valor |
JuanManuelAmador | 0:3d456b8ce449 | 70 | } |
JuanManuelAmador | 0:3d456b8ce449 | 71 | encontrado = true; |
JuanManuelAmador | 0:3d456b8ce449 | 72 | } |
JuanManuelAmador | 0:3d456b8ce449 | 73 | } |
JuanManuelAmador | 0:3d456b8ce449 | 74 | } |
JuanManuelAmador | 0:3d456b8ce449 | 75 | |
JuanManuelAmador | 0:3d456b8ce449 | 76 | void Configuracion::createFile(){ |
JuanManuelAmador | 0:3d456b8ce449 | 77 | FILE* file = fopen("/local/Config.vme","w"); |
JuanManuelAmador | 0:3d456b8ce449 | 78 | fprintf(file, "adquisitionvelocity %s\n", velocidadAdquisicion); |
JuanManuelAmador | 0:3d456b8ce449 | 79 | fprintf(file, "languaje %s\n", idioma); |
JuanManuelAmador | 0:3d456b8ce449 | 80 | fprintf(file, "selectiontype %s\n", formaSeleccion); |
JuanManuelAmador | 0:3d456b8ce449 | 81 | fclose(file); |
JuanManuelAmador | 0:3d456b8ce449 | 82 | } |
JuanManuelAmador | 0:3d456b8ce449 | 83 | |
JuanManuelAmador | 0:3d456b8ce449 | 84 | void Configuracion::setVelocidadAdquision(int nuevaVelocidadAdqusicion){ |
JuanManuelAmador | 0:3d456b8ce449 | 85 | sprintf(velocidadAdquisicion,"%d",nuevaVelocidadAdqusicion); |
JuanManuelAmador | 0:3d456b8ce449 | 86 | createFile(); |
JuanManuelAmador | 0:3d456b8ce449 | 87 | } |
JuanManuelAmador | 0:3d456b8ce449 | 88 | void Configuracion::setIdioma(char nuevoIdioma[]){ |
JuanManuelAmador | 0:3d456b8ce449 | 89 | strcpy(idioma, nuevoIdioma); |
JuanManuelAmador | 0:3d456b8ce449 | 90 | createFile(); |
JuanManuelAmador | 0:3d456b8ce449 | 91 | } |
JuanManuelAmador | 0:3d456b8ce449 | 92 | void Configuracion::setFormaSeleccion(char nuevaFormaSeleccion[]){ |
JuanManuelAmador | 0:3d456b8ce449 | 93 | strcpy(formaSeleccion, nuevaFormaSeleccion); |
JuanManuelAmador | 0:3d456b8ce449 | 94 | createFile(); |
JuanManuelAmador | 0:3d456b8ce449 | 95 | } |
JuanManuelAmador | 0:3d456b8ce449 | 96 | |
JuanManuelAmador | 0:3d456b8ce449 | 97 | int Configuracion::getVelocidadAdquisicion(){ |
JuanManuelAmador | 0:3d456b8ce449 | 98 | return atoi(velocidadAdquisicion); |
JuanManuelAmador | 0:3d456b8ce449 | 99 | } |
JuanManuelAmador | 0:3d456b8ce449 | 100 | |
JuanManuelAmador | 0:3d456b8ce449 | 101 | void Configuracion::getVelocidadAdquisicionString(char buff[]){ |
JuanManuelAmador | 0:3d456b8ce449 | 102 | strcpy(buff, velocidadAdquisicion); |
JuanManuelAmador | 0:3d456b8ce449 | 103 | } |
JuanManuelAmador | 0:3d456b8ce449 | 104 | |
JuanManuelAmador | 0:3d456b8ce449 | 105 | void Configuracion::getIdioma(char buf[]){ |
JuanManuelAmador | 0:3d456b8ce449 | 106 | strcpy(buf, idioma); |
JuanManuelAmador | 0:3d456b8ce449 | 107 | } |
JuanManuelAmador | 0:3d456b8ce449 | 108 | |
JuanManuelAmador | 0:3d456b8ce449 | 109 | void Configuracion::getFormaSeleccion(char buf[]){ |
JuanManuelAmador | 0:3d456b8ce449 | 110 | strcpy(buf, formaSeleccion); |
JuanManuelAmador | 0:3d456b8ce449 | 111 | } |