MpLab, 18f4550 y dudas varias de funciones

Bueno bueno, para un laboratorio debo hacer lo siguiente:

Programar un microcontrolador para realizar el montaje de un dispositivo de control de acceso por contraseña de cuatro dígitos que permita almacenar hasta 50 usuarios diferentes, el reconocimiento de usuario se debe realizar por número de cédula, se debe contar con dos módulos uno administrador y otro de usuario, donde el acceso a administrador debe ser por contraseña con opciones de crear usuario, desbloquear, cambiar contraseña y borrar usuario, debe identificarse si un usuario ya ha sido creado o si se intenta ingresar con un usuario bloqueado, en el módulo de usuario se debe pedir el id de quien va a ingresar y validar si esta asignado sino debe visualizar un mensaje de error, si se valida el número de cédula con la clave respectiva se debe generar una alarma sonora y un mensaje por LCD alfanumérica de acceso, si se introduce una contraseña más de 3 veces erróneamente debe generar bloqueo y una alarma sonora diferente así como mensaje en la pantalla, debe existir una opción para interacción con el computador en donde se generé un reporte con el nombre del usuario, hora y fecha de cada uno de los ingresos, así como si está bloqueada la contraseña, identificación por foto y desbloqueo remoto.
Se debe incluir la posibilidad de cambio de contraseña por parte del usuario, una tecla de borrado si se introduce un digito mal y si no se realiza ingresos debe visualizar la hora y fecha actual. Almacenar las contraseñas en la memoria EEPROM del micro.

Bueno, ahora, obviamente no les pido que me hagan el programa :LOL: pero es que me da pereza explicar las cosas por separado :D

Entonces, vamos al punto, mis dudas puntuales son:

  1. Una de mis dudas es con respecto al apartado "bloquear usuario". Tratando a cada usuario como un registro en la memoria, que puede ser creado/editado/bloqueado/eliminado, y almacenado de una forma cualquiera, no tengo muy en claro cómo hacer para "bloquearlo". La idea es que al intentar acceder con dicho usuario salga un aviso que muestre que esté bloqueado.
    Tengo la forma de saber cuándo un usuario ingresa la clave erróneamente:

    Código:
    error: WriteCmdXLCD(1);putrsXLCD("Ingrese su clave");SetDDRamAddr(0x40);SetDDRamAddr(0x40);Delay10KTCYx(100);
    	for(C=0;C<3;C++){cla[C]=teclado();WriteDataXLCD(0x3F);Delay10KTCYx(80);}
    	id=clavealm();PORTD=0;
    	if(usuario[ced[0]]==id){ONP=1;ingreso();Delay10KTCYx(150);return;}
    	else{cla_err();d=d+1;}
    	if(d<3)goto error;
    	if(d>2){WriteCmdXLCD(1);putrsXLCD("USUARIO");
    		SetDDRamAddr(0x40);putrsXLCD("BLOQUEADO !!!");Delay10KTCYx(100);}

    Código:
    void claerr(void){
    	WriteCmdXLCD(1);putrsXLCD("Clave errada");
    	Delay10KTCYx(200);
    	return;}

    Ahora, lo que no se es cómo hacer para que, una vez bloqueado el usuario, realmente lo blquee, y que solo pueda desbloquearlo un adiministrador.
    Tengo en mente una función (para poder usarla cuando quiera) en la que si la función que ingresa los datos de teclado está procedida por una clave de admin, pueda acceder al menú de desbloqueo, pero no se cómo bloquear el usuario.

  2. Con respecto a algo parecido a lo anterior, si no se cómo bloquear, mucho menos se cómo desbloquear :LOL:
    En cuanto al desbloqueo remoto, estoy usando C# como interfaz en el computador, y tengo este "código" para enviar datos al microcontrolador:

    Código:
    serialPort1.Write(tx, 0, 1)
    tx[0]=byte.Parse(dato.Text)

    Lo que haría es enviar un "x" para cuando quiera desbloquearlo, pero volvemos al mismo problema de antes :confused::enfadado:
  3. Para saber si un usuario está bloqueado o ya ha sido creado, tengo pensado hacer esto:

    Código:
    for(u=0;u<50;u++){
    [INDENT]if(usuarioingresado==usuariosbloqueados[u])[I]Escribir:[/I]"USUARIO BLOQUEADO"[/INDENT]
    }
    
    for(u=0;u<50;u++){
    [INDENT]if(usuarioingresado==usuarioscreados[u])[I]Escribir:[/I]"USUARIO YA CREADO"[/INDENT]
    }

    Guardando las distancias sobre los errores obvios (los de escribir y todo eso, :LOL::D), hay algún problema con la forma de hacerlo ???
    Lo mismo para validar si el usuario está o no registrado a la hora de querer ingresar.

Bueno, mis dudas son esas, espero que me puedan ayudar a resolveras.
Subiré el código y todo lo necesario para que el programa funcione :D
 
Atrás
Arriba