Matlab - Problema abrir puerto COM

 
Vista:
sin imagen de perfil

Problema abrir puerto COM

Publicado por bidi (9 intervenciones) el 23/05/2017 12:05:46
Buenos días, estoy intentando leer y enviar datos desde un Arduino mediante bluetooth a Matlab 2017a. Para las primeras pruebas he usado Putty y me ha funcionado sin ningún problema el leer en el puerto COM, pero al llegar a Matlab, aun no he conseguido abrir que abra el puerto y poder trabajar con ello, siempre me da el siguiente error:
1
2
3
4
5
6
7
8
Error using serial/fopen (line 72)
Open failed: Port: COM5 is not available. Available ports:
COM3, COM11, COM22.
Use INSTRFIND to determine if other instrument objects are
connected to the requested device.
 
Error in PruebaMatARd_TXRX_DUE (line 19)
fopen(puerto_serial);

El puerto que trato de abrir es el correcto, dado que lo compruebo con el administrador de dispositivos y con el Putty previamente, ademas también uso la utilidad de Test &Measurament Tool de Matlab para asegurarme de que no haya ninguna conexión previa hecha por esté hacia el puerto serial, ni que quede ningún resto de conexiones previas. He probado a ejecutarlo en modo administrador, deshabilitar el antivirus y no consigo que funcione.
Eso si, una vez ejecutado mi código de matlab, no me deja volver a conectarme mediante Putty porque dice que el puerto esta ocupado.

Os dejo el código por si veis que este haciendo algo mal

Saludos.
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
%% Codigo de prueba para lectura %%
close all;clear all; clc;
 
% Inicializo el puerto serial que usare
delete( instrfind({'PORT'},{'COM5'} ));
puerto_serial = serial('COM5');
puerto_serial.BaudRate = 38400;
puerto_serial.DataBits = 8;
puerto_serial.StopBits = 1;
puerto_serial.Terminator = 'CR/LF';
puerto_serial.Parity = 'none';
%puerto_serial.FlowControl = 
 
warning('off','MATLAB:serial:fscanf:unsuccessfulRead');
 
disp('Abriendo puerto serial');
% Abro el puerto serial
fopen(puerto_serial);
disp('puerto serial abierto');
 
pause(5);
cont = 1;
y = zeros(4,1);
% Leo datos
disp('Leo datos');
while cont < 20
    valor = fscanf(puerto_serial,'%d/n',1)';
    disp(valor);
    y(cont) = valor;
    cont=cont+1;
end


% Cierro el puerto serial y borro la conexion
fclose(puerto_serial);
delete(puerto_serial);
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