Matlab - Envio de datos de uitable por el puerto serie

   
Vista:

Envio de datos de uitable por el puerto serie

Publicado por Alberto (19 intervenciones) el 22/02/2014 16:26:52
Hola, tengo unos datos almacenados en una uitable de 5 columnas y 4 filas.
Ahora quiero enviar esos datos por el puerto serie pero me da una error que no comprendo bien.
Creo que puede estar relacionao con el formato de los datos los cuales no son buenos para enviar por el serial.

Antes de mandar por el serie he realizado un disp(datos de tabla) para ver que es lo que tengo y son estos:
Se pueden apreciar los datos de las 5 columnas y las cuatro filas

[1] % Numero de figura
[105] % Coordenada X
[175] % Coordenada Y
'Circulo' % Forma de la figura
'AMARILLA' % Color de la figura

[2]
[173]
[238]
'Cuadrado'
'AMARILLA'

[3]
[219]
[90]
'Triangulo'
'ROJA'

[4]
[304]
[196]
'Circulo'
'ROJA'

Ahora tengo que convertir esos datos para que la instruccion fprintf los acepte.

Me puede orientar alguien sobre este tema?

Adjunto imagen de la tabla:

En las columnas 1, 2 y 3 los datos son numeros
En las columnas 4 y 5 es una cadena string

Un saludo
Alberto
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
Imágen de perfil de JOSE JEREMIAS CABALLERO

Envio de datos de uitable por el puerto serie

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3428 intervenciones) el 23/02/2014 12:38:38
Sube tu código para ver en que parte se tiene que modificar.
además estudia los formatos de fprintf

>> help fprintf


Saludos.
JOSE JEREMÍAS CABALLERO
Asesorías en Matlab
programador en matlab
Servicios de programación matlab
jjcc94@hotmail.com


http://matlabcaballero.blogspot.com


http://www.lawebdelprogramador.com/foros/Matlab/1371532-FORMA_DE_APRENDER_MATLAB.html
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

Envio de datos de uitable por el puerto serie

Publicado por Alberto alopez80@hotmail.com (19 intervenciones) el 23/02/2014 20:47:47
Esta es la funcion que se ejecuta al pulsar un boton:

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
%*****************************************************************************************
function comienzo_transferencia_Callback(hObject, eventdata, handles)
 
 
global num_element
global n_amarillas
global n_rojas
 
Serial_PORT = serial('COM1');
set(Serial_PORT,'Terminator','CR');
fopen(Serial_PORT);
 
%% Envio de datos de la TABLA a traves del puerto serie 
 
numero_formas=n_amarillas+n_rojas;
 
for n=1:numero_formas
	fprintf(Serial_PORT,num_element(n,1));
	fprintf(Serial_PORT,num_element(n,2));
	fprintf(Serial_PORT,num_element(n,3));
	fprintf(Serial_PORT,num_element(n,4));
	fprintf(Serial_PORT,num_element(n,5));
end
 
% Cerramos y borramos el puerto serie para poder usarlo de nuevo
fclose(Serial_PORT);
delete(Serial_PORT);
clear Serial_PORT
%**************************************************************************************

La variable "num_element" es la que contiene los datos de la uitable y quiero enviar por el serie y es lo siguiente:

[1] % Numero de figura
[105] % Coordenada X
[175] % Coordenada Y
'Circulo' % Forma de la figura
'AMARILLA' % Color de la figura

[2]
[173]
[238]
'Cuadrado'
'AMARILLA'

[3]
[219]
[90]
'Triangulo'
'ROJA'

[4]
[304]
[196]
'Circulo'
'ROJA'

He estado estudiando un poco los posibles errores y la funcion fprintf tal y como me has dicho y creo que el problema es que el formato de datos de num_element que aparece entre [corchetes] es de tipo cell y por eso no le sienta bien a fprintf que está esperando un string pero no soy capaz de convertir los datos tipo cell a string.

Espero que haya quedado claro.
Un saludo
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
Imágen de perfil de JOSE JEREMIAS CABALLERO

Envio de datos de uitable por el puerto serie

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3428 intervenciones) el 23/02/2014 23:36:34
tu código es un guide, tiene dos partes una *.fig y *m. la idea es ejecutar tu código y ver en que parte falla.
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

Envio de datos de uitable por el puerto serie

Publicado por Alberto (19 intervenciones) el 24/02/2014 11:29:54
Hola, para poder subir todo el codigo tendria que mandarte un manual de usuario y tendria que realizar bastantes modificaciones para que funcione en otro PC.
La idea es hacer funcionar este codigo y enviar por el serie por ejemplo esto:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
%*******************************************************************************************************************
num_element={1 235 684 'Cuadrado' 'Roja'; 2 251 454 'Cuadrado' 'Amarillo'; 3 142 456 'Triangulo' 'Rojo'; 4 772 146 'Circulo' 'Roja'};
 
Serial_PORT = serial('COM1');
set(Serial_PORT,'Terminator','CR');
fopen(Serial_PORT);
 
%% Envio de datos de la TABLA a traves del puerto serie 
 
for n=1:4
     fprintf(Serial_PORT,num_element(n,1));
     fprintf(Serial_PORT,num_element(n,2));
     fprintf(Serial_PORT,num_element(n,3));
     fprintf(Serial_PORT,num_element(n,4));
     fprintf(Serial_PORT,num_element(n,5));
end
 
% Cerramos y borramos el puerto serie para poder usarlo de nuevo 
fclose(Serial_PORT);
delete(Serial_PORT);
clear Serial_PORT
%*******************************************************************************************************************

Gracias por tu interes y un saludo
Alberto
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

Envio de datos de uitable por el puerto serie

Publicado por Alberto alopez80@hotmail.com (19 intervenciones) el 25/02/2014 12:02:57
Ya he encontrado algo. Hay que pasar los datos de tipo cell a tipo matriz (mat) con la funcion cell2mat y luego pasarlos a string con mat2str.

fprintf(Serial_PORT,mat2str(cell2mat(num_element(n,1))));

Ahora tengo otro problema...

Quiero enviar toda la informacion de cada linea de una sola vez y en un formato que entienda un microcontrolador, es decir, tratar la informacion en el PC para que no consuma tantos recursos el microcontrolador.

En este caso quiero enviar 4 tramas, una por cada fila. En cada trama debe estar la informacion de la fila entera, es decir:
1 235 684 'Cuadrado' 'Roja'
Alguien sabe como puedo hacerlo?
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