• Lunes 23 de Diciembre de 2024, 16:40

Autor Tema:  Validar Datos de entrada  (Leído 5066 veces)

NeoKco

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Validar Datos de entrada
« en: Martes 23 de Diciembre de 2008, 07:17 »
0
buenas a todos , tengo el siguiente problema en GUI : coloco varias cajas de texto vacias incluso un boton que me captura un directorio y una foto, luego con otro boton capturo todos estos datos, si estan colocados los datos con normalidad me funciona la funcion que llamo cuando presiono el boton de captura, pero si no lleno ningun dato y presiono el boton de captura me envia errores diciendome que los datos a los que hago referencia no existen , especificamente el del path, la pregunta es hay alguna forma de que si al presionar el boton de captura y no hay nada en las cajas me diga que debo llenar los datos , asi como cargar el directorio con la foto??  como se captura el vacio en los handles?? me explico si no he escrito nada en el box text me envia un error de creacion que me dice no existe como lo aborto cuando se presiona el boton con los datos no cargados?

colocare un poco de codigo acerca del boton para que lo chequeen ojala me puedan ayudar gracias de antemano

function procesar_Callback(hObject, eventdata, handles)

set(handles.numero,'String','Preprocesando');
set(handles.ptos_rodilla,'String','Datos');
set(handles.ptos_cadera,'String','Espere...')
guidata(hObject,handles);
pause(0.001);

%if (handles.cant_fps) && (handles.d_altura) && (handles.genero) && (handles.nombre_v)&&(handles.path)
    % cantidad de FPS
    cantidadDeFotos = handles.cant_fps;
    % altura del voluntario
    altura = handles.d_altura;
    %  genero del voluntario
    genero = handles.genero;
    % nombre del path
    path = handles.path;
    % nombre del voluntario
    nombre_v = handles.nombre_v;
    %llamada a la funcion tesisv1 que analiza los FPS,saca los puntos y grados
    %necesarios. Devuelve la matriz final con todos los datos(puntos de tobillo, ptos_rodilla, ptos_cadera y las pendientes de ambos femur y perone junto a su distancia)
    [matrizEnd,celda1,celda2] = tesisv1(cantidadDeFotos,altura,genero,path,nombre_v);
    handles.procesar = 1;
    for cont = 1:cantidadDeFotos
        axes(handles.image_real);
        imshow(celda1{cont});
        axes(handles.image_BN);
        imshow(celda2{cont});
        pause(0.25)
        % salida de datos de los puntos
        temp = ['---------- Fotograma ',int2str(cont),' ---------- '];        
        set(handles.numero,'String',temp);        
        ptosTR = ['Perone encontrado : Centroide_1 X: ',num2str(matrizEnd(cont,2)),',Y: ',num2str(matrizEnd(cont,3)),' & Centroide_2 X:',num2str(matrizEnd(cont,4)),',Y: ',num2str(matrizEnd(cont,5)),',Distancia: ',num2str(matrizEnd(cont,6)),',Pendiente: ',num2str(matrizEnd(cont,7))];
        set(handles.ptos_rodilla,'String',ptosTR);
        ptosRC = ['Femur encontrado : Centroide_1 X: ',num2str(matrizEnd(cont,8)),',Y: ',num2str(matrizEnd(cont,9)),' & Centroide_2 X:',num2str(matrizEnd(cont,10)),',Y: ',num2str(matrizEnd(cont,11)),',Distancia: ',num2str(matrizEnd(cont,12)),',Pendiente: ',num2str(matrizEnd(cont,13))];
        set(handles.ptos_cadera,'String',ptosRC);
        guidata(hObject,handles);
    end
%else
%    beep;
%    errordlg('debe rellenar todos los datos ,intente nuevamente...', 'Entrada erronea', 'modal')    
%    return;  
%end
%guidata(hObject,handles);

NeoKco

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: Validar Datos de entrada
« Respuesta #1 en: Miércoles 24 de Diciembre de 2008, 03:30 »
0
bueno buscando y probando cosas llegue a la solucion y he aqui la solucion:

primero cuando se inicializa se debe colocar el callback a -1 (yo lo hice asi),
luego cuando se activa el cuadro de texto lo colocas a 1 y si es 1 lo dejas pasar , eso quiere decir que tiene datos reales dentro de si la variable, lo mismo para el path,
si se presiona el boton que requiere los otros datos simplemente manda un cuadro de error que dice que faltan los datos... bueno eso hice yo si alguien requiere saber mas como lo hice que me comente aqui en este hilo y yo le explico con mas detalle.... suerte

elgato_a3

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Re:Validar Datos de entrada
« Respuesta #2 en: Viernes 13 de Septiembre de 2013, 14:57 »
0
Buen dia cordial saludo

Yo utilizaría las etiquetas try catch, asi:

function procesar_Callback(hObject, eventdata, handles)

try
   set(handles.numero,'String','Preprocesando');
   set(handles.ptos_rodilla,'String','Datos');
   set(handles.ptos_cadera,'String','Espere...')
   guidata(hObject,handles);
   pause(0.001);

   %if (handles.cant_fps) && (handles.d_altura) && (handles.genero) && (handles.nombre_v)&&(handles.path)
    % cantidad de FPS
    cantidadDeFotos = handles.cant_fps;
    % altura del voluntario
    altura = handles.d_altura;
    %  genero del voluntario
    genero = handles.genero;
    % nombre del path
    path = handles.path;
    % nombre del voluntario
    nombre_v = handles.nombre_v;
    %llamada a la funcion tesisv1 que analiza los FPS,saca los puntos y grados
    %necesarios. Devuelve la matriz final con todos los datos(puntos de tobillo, ptos_rodilla, ptos_cadera y las pendientes de ambos femur y perone junto a su distancia)
    [matrizEnd,celda1,celda2] = tesisv1(cantidadDeFotos,altura,genero,path,nombre_v);
    handles.procesar = 1;
    for cont = 1:cantidadDeFotos
        axes(handles.image_real);
        imshow(celda1{cont});
        axes(handles.image_BN);
        imshow(celda2{cont});
        pause(0.25)
        % salida de datos de los puntos
        temp = ['---------- Fotograma ',int2str(cont),' ---------- '];       
        set(handles.numero,'String',temp);       
        ptosTR = ['Perone encontrado : Centroide_1 X: ',num2str(matrizEnd(cont,2)),',Y: ',num2str(matrizEnd(cont,3)),' & Centroide_2 X:',num2str(matrizEnd(cont,4)),',Y: ',num2str(matrizEnd(cont,5)),',Distancia: ',num2str(matrizEnd(cont,6)),',Pendiente: ',num2str(matrizEnd(cont,7))];
        set(handles.ptos_rodilla,'String',ptosTR);
        ptosRC = ['Femur encontrado : Centroide_1 X: ',num2str(matrizEnd(cont,8)),',Y: ',num2str(matrizEnd(cont,9)),' & Centroide_2 X:',num2str(matrizEnd(cont,10)),',Y: ',num2str(matrizEnd(cont,11)),',Distancia: ',num2str(matrizEnd(cont,12)),',Pendiente: ',num2str(matrizEnd(cont,13))];
        set(handles.ptos_cadera,'String',ptosRC);
        guidata(hObject,handles);
    end
%else
%    beep;
%    errordlg('debe rellenar todos los datos ,intente nuevamente...', 'Entrada erronea', 'modal')   
%    return;   
%end
%guidata(hObject,handles);
catch error
 msgbox ('Error en el ingreso de datos')
end