Matlab - Duda con guide

 
Vista:
sin imagen de perfil

Duda con guide

Publicado por Luis (10 intervenciones) el 04/04/2013 11:35:09
Hola, estoy haciendo una interfaz gráfica a través de guide. A través del boton Iniciar, inicio la comunicación a través del puerto serie, el cual va mandando valores de tensión convertidos a traves del conversor analógico digital del microcontrolador MSP430 y esos valores conforme les va llegando al ordenador los va representando en una gráfica (axes3). Ahora mismo tengo configurado el programa para que vaya recibiendo valores de tensión hasta que la tensión caiga por debajo de un determinado valor que es 160 (en realidad 0.54 voltios). Pero lo que quiero hacer es crear un botón que se llame Interrumpir la comunicación que me permita parar la comunicación de datos en cualquier momento sin necesidad de que el valor de tensión sea menor que 0.54 voltios y no sé como hacerlo.
Os dejo la callback del boton iniciar y la callback del botón interrumpir:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
function iniciar_Callback(hObject, eventdata, handles)
% hObject    handle to iniciar (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
    %msgbox('Inicio de comunicación. Espere a nuevo mensaje de información en el que se indique que ha acabado de recibir datos.','Información')
    set(handles.text1,'String',' ');
    hold off;
    MSP=serial('COM5'); %abro el puerto serie com5
    set(MSP,'Baudrate',9600); % se configura la velocidad a 9600 Baudios
    set(MSP,'StopBits',1); % se configura bit de parada a uno
    set(MSP,'DataBits',8); % se configura que el dato es de 8 bits, debe estar entre 5 y 8
    set(MSP,'Parity','none'); % se configura sin paridad
    %set(MSP,'OutputBufferSize',1);  ”n” es el número de bytes a enviar
    %set(MSP,'InputBufferSize' ,2);  ”n” es el número de bytes a recibir
    %set(MSP,'Timeout',1);  1 segundos de tiempo de espera
 
    fopen(MSP);
 
    K1= [702]; %meto este valor inicial en el vector para que luego entre en el bucle while,702 equivale a un valor de tensión de 2.4 y 1023 equivale a 3.5 voltios
    i=1;
    flag=1;
    t1=tic;
    handles.tiempo(1)=0;
    auxiliar=0;
    while (K1(i)> 160)
        K1 = [K1 fread(MSP,1,'uint16')]; %vamos leyendo del puerto serie, este valor será
        auxiliar=auxiliar+toc(t1); %guardo el instante de tiempo en el que recibo un dato en segundos
        handles.tiempo(length(K1))=auxiliar;
        t1=tic;
        tension1 = K1.*(3.5/1024)'; %guardo en este vector la equivalencia en voltios
        axes(handles.axes3); %voy representando la evolución de la tensión con el tiempo en axes3
        plot(handles.tiempo, tension1, 'LineWidth',2);
        xlabel('Tiempo(seg)');
        ylabel('Tensión(v)');
        grid on;
        
        i=i+1;
    end
    K1(1)=K1(2);
    handles.tension = K1.*(3.5/1024)';
    fclose(MSP);
    delete(MSP);
    clear MSP;
    msgbox('Datos almacenados','Fin de procesado de datos');
    handles.output = hObject;
    guidata(hObject, handles);
 
% --- Executes on button press in interrumpir.
function interrumpir_Callback(hObject, eventdata, handles)
% hObject    handle to interrumpir (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
    %fclose(handles.MSP);
    %delete(handles.MSP);
    %clear handles.MSP;
    handles.parar=questdlg('¿Desea dejar de recibir datos?','Fin de recepción','Si','No','No');
    if strcmp(handles.parar,'Si')
        fclose(handles.MSP);
        delete(handles.MSP);
        clear handles.MSP;
        warndlg('El programa no continuará su ejecución normal hasta que no pulse la tecla ENTER.','Aviso');
        end
    handles.output=hObject;
    guidata(hObject,handles);


Así como lo tengo hecho el programa me da error.

Un saludo y a ver si podéis ayudarme. Muchas gracias.
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
sin imagen de perfil

Duda con guide

Publicado por Luis (10 intervenciones) el 10/04/2013 10:12:36
Por favor, nadie me puede echar una mano?

Gracias y perdonen por las molestias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar