Está en la página 1de 4

s = serial('COM1') set(s, 'BaudRate', 9600) set(s, 'DataBits', 8) set(s, 'Parity','none') set(s, 'StopBits', 1) set(s, 'FlowControl', 'none') fopen(s) fprintf(s,'G')

out = fread(s,1) Otro: y S= serial('COM1','BaudRate',9600,'DataBits',8); y fopen(S) y write(S, datos) y fclose(S) Otro clear all; close all; clc; PS=serial('COM1'); set(PS,'Baudrate',9600); % se configura la velocidad a 9600 Baudios set(PS,'StopBits',1); % se configura bit de parada a uno set(PS,'DataBits',8); % se configura que el dato es de 8 bits, debe estar entre 5 y 8 set(PS,'Parity','none'); % se configura sin paridad set(PS,'Terminator','CR/LF');% c caracter con que finaliza el envo set(PS,'OutputBufferSize',1); % n es el nmero de bytes a enviar set(PS,'InputBufferSize' ,1); % n es el nmero de bytes a recibir set(PS,'Timeout',5); % 5 segundos de tiempo de espera fopen(PS); El dispositivo que enva o recibe los datos (como un Pic o un DSP) debe transmitir o recibir a la misma velocidad que el programa de Matlab (o viceversa) en este caso: 9600 baudios, y enviando un bit a la vez. Con la instruccin "fopen" se abre el puerto. Para leer datos binarios se usa la instruccin: variable = fread(PS,1,'uint8'); Esto le dice al Matlab como qu tipo de datos se interpretan los bits que se estn recibiendo. Los tipos de datos pueden ser enteros sin signo, enteros con signo, de punto flotante, de 8 bits, de 16 bits, etc. (para ms informacin consultar el archivo de Ayuda de Matlab). Si el dispositivo, como un pic, est mandando cdigos Ascii, se debe poner: variable= fread(PS,1,'uchar');

"variable" almacenar un nmero que corresponde al cdigo Ascii del caracter recibido. Si es la 'A', "variable" almacenar el nmero 65. Para convertir a caracter se hace: variable= char(variable); Una vez utilizado el puerto, ste se debe cerrar: fclose(PS); delete(PS); clear PS; Si no se hace esto, al querer correr nuevamente el programa, nos botar error. Y ahora, una funcin que yo hice y que me fue muy til: function h=convertir(hh); q=quantizer('fixed','max',0.9999998,'min',-1,'format',[16 15],'round','wrap'); hexh=num2hex(q,hh); h=hex2dec(hexh);

Lo que hace esta funcin es convertir los bits de un dato con coma flotante de 32 bits a uno de tipo entero sin signo de 16 bits (as tena que hacerse porque as reciba los datos el dispositivo conectado al puerto serial), la informacin de estos bits se mantiene, pero lo que cambia es cmo lo interpreta el Matlab y cmo los transmite al puerto serial. Cuando le pona entero con signo, en lugar de un 7FFF transmita un FFFF, para ahorrarme esos problemas de conversin program esta funcin y declar el tipo de datos a transmitir como entero sin signo. El dispositivo que reciba los bits en este caso fue un DSP Motorola. (muchas veces es mejor trabajar con datos tipo enteros sin signo o char sin signo, que con datos de coma flotante o con bit de signo).

Otro
Para recibir todo un vector de una seal capturada a travs de un sensor se hace:

clear all; close all; clc; PS=serial('COM1'); set(PS,'Baudrate',9600); % se configura la velocidad a 9600 Baudios set(PS,'StopBits',1); % se configura bit de parada a uno set(PS,'DataBits',8); % se configura que el dato es de 8 bits, debe estar entre 5 y 8 set(PS,'Parity','none'); % se configura sin paridad set(PS,'Terminator','CR/LF');% c caracter con que finaliza el envo set(PS,'OutputBufferSize',1); % n es el nmero de bytes a enviar set(PS,'InputBufferSize' ,1); % n es el nmero de bytes a recibir set(PS,'Timeout',5); % 5 segundos de tiempo de espera fopen(PS);

K1= []; K= [];

for i=1:lo_que_dure_el_muestreo for j=1:4 K1 = [K1 fread(PS,1,'uchar')]; end;

K1=char(K1); K=[K str2num(K1)]; K1=[]; end; fclose(PS); delete(PS); clear PS; INSTRFIND
La seal se va acumulando en el vector K. K1 slo recoge cada cuatro caracteres (una muestra).

Acerca de INSTRFIND: Esta instruccin nos dice el estado del puerto serial. Siempre debe estar cerrado una vez finalizado el programa que lo utiliza. Si el puerto est cerrado, INSTRFIND nos botar:

Si el puerto est abierto, nos botar:

O cualquier otra informacin acerca del puerto o puertos que se hayan abierto.

También podría gustarte