Matlab - problema pausando una gui

 
Vista:

problema pausando una gui

Publicado por Giovanny Beltrán (20 intervenciones) el 31/01/2012 21:26:40
buenas tardes amigos de LWP

tengo un problema con una gui que es el siguiente:

el programa de la gui con un boton me carga unos datos, los promedia y los almacena en un vector.

con otro boton, toma ese vector y lo compara con otros vectores en un ciclo WHILE, la comparcion se efectua cargando la base de datos , promediandola y tomando valores maximos y los compara con los valoes macximos de la primera muestra , si la camparacion es existosa se sale y acaba el proceso , sino, carga la siguiente base de datos y vuleve a comparar.

cada vez qeu compara el grafica las dos muestras en un mismo plot y esta grafica va cambiando a medida que cambia la base de datos hasta qeu la comparacion sea exitosa.

ahora como el programa no se detiene hasta qeu las comparaciones no trerminan decidi colocarle un boton de pause para poder detener el proceso entre comparacion y comparacion para poder ver las graficas. el boton pause lo hice con uin togglebutton y su programacion fue la siguiente:

v=get(handles.paus,'Value');
if v==1
uiwait(gcf)
else
uiresume(gcbf)
end

este boton si detenien la gui pero con el inconveniente que si lo oprimo para ver la primera comparcion el se pausa hasta en la siguiente comparcion, es decir, si qiero ver la primera grafica el no se detiene hasta mortrar la segunda, y si quiero ver la segunda comparacion el se detiene en la rtercera y asui,.


como hago para arreglkarlo.

adjunto el codigo principal


hi=waitbar(0,'Procesando los Datos...Espere Por Favor');
set(hi,'Position',[375.75 42 270 56.25]);
ph = findobj(hi, 'type', 'patch');
set(ph, 'FaceColor', [0 0.8 1], 'EdgeColor', [0 0.8 1]);

directorio=(configuracion+columna+posicion);
switch directorio
case 111
direccion='C:\Sistema Experto\Base de Datos\SensorEnColumna1\Columna1UP\Funcionamiento Vacio';
case 112
direccion='C:\Sistema Experto\Base de Datos\SensorEnColumna1\Columna1MID\Funcionamiento Vacio';
case 113
direccion='C:\Sistema Experto\Base de Datos\SensorEnColumna1\Columna1DOWN\Funcionamiento Vacio';
case 121
direccion='C:\Sistema Experto\Base de Datos\SensorEnColumna2\Columna2UP\Funcionamiento Vacio';
case 122
direccion='C:\Sistema Experto\Base de Datos\SensorEnColumna2\Columna2MID\Funcionamiento Vacio';
case 123
direccion='C:\Sistema Experto\Base de Datos\SensorEnColumna2\Columna2DOWN\Funcionamiento Vacio';
case 131
direccion='C:\Sistema Experto\Base de Datos\SensorEnColumna3\Columna3UP\Funcionamiento Vacio';
case 132
direccion='C:\Sistema Experto\Base de Datos\SensorEnColumna3\Columna3MID\Funcionamiento Vacio';
case 133
direccion='C:\Sistema Experto\Base de Datos\SensorEnColumna3\Columna3DOWN\Funcionamiento Vacio';
case 211
direccion='C:\Sistema Experto\Base de Datos\SensorEnColumna1\Columna1UP\Funcionamiento Delta';
case 212
direccion='C:\Sistema Experto\Base de Datos\SensorEnColumna1\Columna1MID\Funcionamiento Delta';
case 213
direccion='C:\Sistema Experto\Base de Datos\SensorEnColumna1\Columna1DOWN\Funcionamiento Delta';
case 221
direccion='C:\Sistema Experto\Base de Datos\SensorEnColumna2\Columna2UP\Funcionamiento Delta';
case 222
direccion='C:\Sistema Experto\Base de Datos\SensorEnColumna2\Columna2MID\Funcionamiento Delta';
case 223
direccion='C:\Sistema Experto\Base de Datos\SensorEnColumna2\Columna2DOWN\Funcionamiento Delta';
case 231
direccion='C:\Sistema Experto\Base de Datos\SensorEnColumna3\Columna3UP\Funcionamiento Delta';
case 232
direccion='C:\Sistema Experto\Base de Datos\SensorEnColumna3\Columna3MID\Funcionamiento Delta';
case 233
direccion='C:\Sistema Experto\Base de Datos\SensorEnColumna3\Columna3DOWN\Funcionamiento Delta';
case 311
direccion='C:\Sistema Experto\Base de Datos\SensorEnColumna1\Columna1UP\Funcionamiento Estrella';
case 312
direccion='C:\Sistema Experto\Base de Datos\SensorEnColumna1\Columna1MID\Funcionamiento Estrella';
case 313
direccion='C:\Sistema Experto\Base de Datos\SensorEnColumna1\Columna1DOWN\Funcionamiento Estrella';
case 321
direccion='C:\Sistema Experto\Base de Datos\SensorEnColumna2\Columna2UP\Funcionamiento Estrella';
case 322
direccion='C:\Sistema Experto\Base de Datos\SensorEnColumna2\Columna2MID\Funcionamiento Estrella';
case 323
direccion='C:\Sistema Experto\Base de Datos\SensorEnColumna2\Columna2DOWN\Funcionamiento Estrella';
case 331
direccion='C:\Sistema Experto\Base de Datos\SensorEnColumna3\Columna3UP\Funcionamiento Estrella';
case 332
direccion='C:\Sistema Experto\Base de Datos\SensorEnColumna3\Columna3MID\Funcionamiento Estrella';
case 333
direccion='C:\Sistema Experto\Base de Datos\SensorEnColumna3\Columna3DOWN\Funcionamiento Estrella';
end

iteraciones=0;
i=0;
carpeta1=['Normal\'
'CaidaR\'
'CaidaS\'
'CaidaT\'];
carpeta2=['CortoC1LC\'
'CortoC1LS\'
'CortoC2LC\'
'CortoC2LS\'
'CortoC3LC\'
'CortoC3LS\'];

while iteraciones==0
clear a* ds* l* t*
i=i+1;
waitbar(i/10)
if i<=4
d1=carpeta1(i,:);
lista_de_archivos=dir(fullfile(direccion,d1,'*.lvm'));
nombres={lista_de_archivos.name};

%importo los datos , a1, a2, a3,......a42; de las primeras 4 carpetas

%calculo la media
amedia=(a1+a2+a3+a4+a5+a6+a7+a8+a9+a10+a11+a12+a13+a14+a15+a16+a17+a18+a19+a20+a21+a22+...
a23+a24+a25+a26+a27+a28+a29+a30+a31+a32+a33+a34+a35+a36+a37+a38+a39+a40+a41+a42)/42;

%calculo las desviaciones estandar (ds60,ds120.....ds420) de los datos y se los sumo a la media

ls60=amedia(50)+(2*ds60); li60=amedia(50)-(2*ds60);
ls120=amedia(99)+(2*ds120); li120=amedia(99)-(2*ds120);
ls180=amedia(148)+(2*ds180); li180=amedia(148)-(2*ds180);
ls240=amedia(198)+(2*ds240); li240=amedia(198)-(2*ds240);
ls300=amedia(247)+(2*ds300); li300=amedia(247)-(2*ds300);
ls360=amedia(296)+(2*ds360); li360=amedia(296)-(2*ds360);
ls420=amedia(345)+(2*ds420); li420=amedia(345)-(2*ds420);

%muestra la grafica de compracion de la primera muestra y de la base de datso

media=handles.muestra;
cla(handles.axes2)
axes(handles.axes2)
altura=amedia(50)+10;
f=0:5000/4096:5000-(5000/4096);
plot(f,amedia,'r'),axis([0 450 0 altura]),grid on
hold on
plot(f+2,media,'b'),axis([0 450 0 altura])
plot([40,80],[ls60,ls60],'m')
plot([40,80],[li60,li60],'m')
plot([100,140],[ls120,ls120],'m')
plot([100,140],[li120,li120],'m')
plot([160,200],[ls180,ls180],'m')
plot([160,200],[li180,li180],'m')
plot([220,260],[ls240,ls240],'m')
plot([220,260],[li240,li240],'m')
plot([280,320],[ls300,ls300],'m')
plot([280,320],[li300,li300],'m')
plot([340,380],[ls360,ls360],'m')
plot([340,380],[li360,li360],'m')
plot([400,440],[ls420,ls420],'m')
plot([400,440],[li420,li420],'m')

if m60<=ls60 && m60>=li60
t60=1;
else t60=0;
end
if m120<=ls120 && m120>=li120
t120=1;
else t120=0;
end
if m180<=ls180 && m180>=li180
t180=1;
else t180=0;
end
if m240<=ls240 && m240>=li240
t240=1;
else t240=0;
end
if m300<=ls300 && m300>=li300
t300=1;
else t300=0;
end
if m360<=ls360 && m360>=li360
t360=1;
else t360=0;
end
if m420<=ls420 && m420>=li420
t420=1;
else t420=0;
end

if [t60 t120 t180 t240 t300 t360 t420]==[1 1 1 1 1 1 1]
iteraciones=1;
resul=i;
for h=i:30
waitbar(h/10,hi);
end
end

elseif i>4 && i<=10
i=i-4;
d1=carpeta2(i,:);
i=i+4;

lista_de_archivos=dir(fullfile(direccion,d1,'*.lvm'));
nombres={lista_de_archivos.name};

%importa datos delas siguientes 6 carpetas

amedia=(a1+a2+a3+a4)/4;

%calcula desviaciones

ls60=amedia(50)+(2*ds60); li60=amedia(50)-(2*ds60);
ls120=amedia(99)+(2*ds120); li120=amedia(99)-(2*ds120);
ls180=amedia(148)+(2*ds180); li180=amedia(148)-(2*ds180);
ls240=amedia(198)+(2*ds240); li240=amedia(198)-(2*ds240);
ls300=amedia(247)+(2*ds300); li300=amedia(247)-(2*ds300);
ls360=amedia(296)+(2*ds360); li360=amedia(296)-(2*ds360);
ls420=amedia(345)+(2*ds420); li420=amedia(345)-(2*ds420);

media=handles.muestra;
cla(handles.axes2)
axes(handles.axes2)
f=0:5000/4096:5000-(5000/4096);
altura=amedia(50)+10;
plot(f,amedia,'r'),axis([0 450 0 altura]),grid on
hold on
plot(f+2,media,'b'),axis([0 450 0 altura])
plot([40,80],[ls60,ls60],'m')
plot([40,80],[li60,li60],'m')
plot([100,140],[ls120,ls120],'m')
plot([100,140],[li120,li120],'m')
plot([160,200],[ls180,ls180],'m')
plot([160,200],[li180,li180],'m')
plot([220,260],[ls240,ls240],'m')
plot([220,260],[li240,li240],'m')
plot([280,320],[ls300,ls300],'m')
plot([280,320],[li300,li300],'m')
plot([340,380],[ls360,ls360],'m')
plot([340,380],[li360,li360],'m')
plot([400,440],[ls420,ls420],'m')
plot([400,440],[li420,li420],'m')

if m60<=ls60 && m60>=li60
t60=1;
else t60=0;
end
if m120<=ls120 && m120>=li120
t120=1;
else t120=0;
end
if m180<=ls180 && m180>=li180
t180=1;
else t180=0;
end
if m240<=ls240 && m240>=li240
t240=1;
else t240=0;
end
if m300<=ls300 && m300>=li300
t300=1;
else t300=0;
end
if m360<=ls360 && m360>=li360
t360=1;
else t360=0;
end
if m420<=ls420 && m420>=li420
t420=1;
else t420=0;
end

if [t60 t120 t180 t240 t300 t360 t420]==[1 1 1 1 1 1 1]
iteraciones=1;
resul=i;
for h=i:30
waitbar(h/10,hi);
end
elseif i==10
iteraciones=1;
resul=0;
waitbar(1,hi)
end

end
end


close(hi);

end
end
end
end
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder