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
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


0