
Parar la Comunicación puerto serie en GUI
Publicado por Luis (10 intervenciones) el 01/06/2014 19:26:01
Hola a todos,
Tengo el siguiente problema: estoy realizando un programa a través de la GUI de Matlab en el cual voy mandando a través de un microcontrolador datos al pc a través del puerto serie. El caso es que eso lo hago bien abriendo los puertos y cerrandolos. El caso es que quiero que haya un boton que cuando se pulse mientras se está recibiendo datos, se cierre el puerto serie y ya no se reciba más nada, pero no consigo que funcione.
El boton de inicio de comunicación que abre el puerto serie, establece la comunicación, procesa los datos y cierra el puerto me funciona correctamente:
handles.MSP=serial('COM5');
set(handles.MSP,'Baudrate',9600); % se configura la velocidad a 9600 Baudios
set(handles.MSP,'StopBits',1); % se configura bit de parada a uno
set(handles.MSP,'DataBits',8); % se configura que el dato es de 8 bits, debe estar entre 5 y 8
set(handles.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(handles.MSP);
.
. aquí proceso los datos y lo hago todo correctamente.
.
fclose(handles.MSP);
delete(handles.MSP);
clear handles.MSP;
msgbox('Datos almacenados','Fin de procesado de datos');
handles.output = hObject;
guidata(hObject, handles);
Pero si yo quiero que mientras se están mandando los datos en la función descrita anteriormente, si el usuario pulse un botón se pare la comunicación, es decir, un botón de interrupción de la comunicación. Había pensado hacerlo simplemente cerrando el puerto serie una vez que se pulsa ese botón:
function interrumpir_Callback(hObject, eventdata, handles)
fclose(handles.MSP);
delete(handles.MSP);
%clear handles.MSP;
clear all;
%handles.maximo = 5;
handles.output=hObject;
guidata(hObject,handles);
Pero cuando pulso el botón me sale el siguiente error:
Reference to non-existent field 'MSP'.
Error in pfc>interrumpir_Callback (line 212)
fclose(handles.MSP);
Y no sé cómo hacerlo para que funcione. Por favor espero que alguien me ayude.
Muchísimas gracias. Un saludo
Tengo el siguiente problema: estoy realizando un programa a través de la GUI de Matlab en el cual voy mandando a través de un microcontrolador datos al pc a través del puerto serie. El caso es que eso lo hago bien abriendo los puertos y cerrandolos. El caso es que quiero que haya un boton que cuando se pulse mientras se está recibiendo datos, se cierre el puerto serie y ya no se reciba más nada, pero no consigo que funcione.
El boton de inicio de comunicación que abre el puerto serie, establece la comunicación, procesa los datos y cierra el puerto me funciona correctamente:
handles.MSP=serial('COM5');
set(handles.MSP,'Baudrate',9600); % se configura la velocidad a 9600 Baudios
set(handles.MSP,'StopBits',1); % se configura bit de parada a uno
set(handles.MSP,'DataBits',8); % se configura que el dato es de 8 bits, debe estar entre 5 y 8
set(handles.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(handles.MSP);
.
. aquí proceso los datos y lo hago todo correctamente.
.
fclose(handles.MSP);
delete(handles.MSP);
clear handles.MSP;
msgbox('Datos almacenados','Fin de procesado de datos');
handles.output = hObject;
guidata(hObject, handles);
Pero si yo quiero que mientras se están mandando los datos en la función descrita anteriormente, si el usuario pulse un botón se pare la comunicación, es decir, un botón de interrupción de la comunicación. Había pensado hacerlo simplemente cerrando el puerto serie una vez que se pulsa ese botón:
function interrumpir_Callback(hObject, eventdata, handles)
fclose(handles.MSP);
delete(handles.MSP);
%clear handles.MSP;
clear all;
%handles.maximo = 5;
handles.output=hObject;
guidata(hObject,handles);
Pero cuando pulso el botón me sale el siguiente error:
Reference to non-existent field 'MSP'.
Error in pfc>interrumpir_Callback (line 212)
fclose(handles.MSP);
Y no sé cómo hacerlo para que funcione. Por favor espero que alguien me ayude.
Muchísimas gracias. Un saludo
Valora esta pregunta


0