You are on page 1of 5

Puerto Serial con Matlab!

http://toyscaos.tripod.com/serial.html

USANDO EL PUERTO SERIAL CON MATLAB 7

Sucedió que necesité recibir y en i!r d!t"s #"r e$ #uert" seri!$% D!d" que &is !#r"'i&!d!&ente () $*ne!s de scri#t se $"s c"#i!r"n un &"ntón de +ente de $! ,!cu- decid* $iber!r e$ códi+" .e$ /)0 en re!$id!d1 y 2!cer este #eque3" tut"ri!$4 P!r! c"n,i+ur!r e$ #uert" seri!$- !ntes de en i!r " recibir d!t!- se debe c"#i!r est" !$ !rc2i " %& .este códi+" &e $" #!só un #r",es"r14

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 envío set(PS,'OutputBufferSize',1); % ”n” es el número de bytes a enviar set(PS,'InputBufferSize' ,1); % ”n” es el número de bytes a recibir set(PS,'Timeout',5); % 5 segundos de tiempo de espera fopen(PS);
E$ dis#"siti " que en *! " recibe $"s d!t"s .c"&" un Pic " un DSP1 debe tr!ns&itir " recibir ! $! &is&! e$"cid!d que e$ #r"+r!&! de M!t$!b ." ice ers!1 en este c!s"4 /5)) b!udi"s- y en i!nd" un bit ! $! e6% C"n $! instrucción 7,"#en7 se !bre e$ #uert"% P!r! $eer d!t"s bin!ri"s se us! $! instrucción4 !ri!b$e 8 ,re!d.PS-9-:uint;:1<

Est" $e dice !$ M!t$!b c"&" qué ti#" de d!t"s se inter#ret!n $"s bits que se est=n recibiend"% L"s ti#"s de d!t"s #ueden ser enter"s sin si+n"- enter"s c"n si+n"- de #unt" ,$"t!nte- de ; bits- de 95 bits- etc% .#!r! &=s in,"r&!ción c"nsu$t!r e$ !rc2i " de Ayud! de M!t$!b1% Si e$ dis#"siti "- c"&" un #ic- est= &!nd!nd" códi+"s Ascii- se debe #"ner4 !ri!b$e8 ,re!d.PS-9-:uc2!r:1< 7 !ri!b$e7 !$&!cen!r= un n>&er" que c"rres#"nde !$ códi+" Ascii de$ c!r!cter recibid"% Si es $! :A:- 7 !ri!b$e7 !$&!cen!r= e$ n>&er" 5?% P!r! c"n ertir ! c!r!cter se 2!ce4 !ri!b$e8 c2!r. !ri!b$e1< Un! e6 uti$i6!d" e$ #uert"- éste se debe cerr!r4

fclose(PS); delete(PS); clear PS;

1 de 5

21/06/2013 08:32 p.m.

clear PS.unción que y" 2ice y que &e . hexh=num2hex(q. % ”n” es el número de bytes a enviar set(PS.hh).que c"n d!t"s de c"&! . q=quantizer('fixed'.'uint16').e$ n>&er" B que se en *! inici!$&ente er! un ! is" !$ DSP que $$e+!b!n $"s d!t"s.1).#!r! !2"rr!r&e es"s #r"b$e&!s de c"n ersión #r"+r!&é est! . % 5 segundos de tiempo de espera fopen(PS).ue &uy >ti$4 function h=convertir(hh).'round'. end.'Parity'.-1.com/serial.[16 15].% “c” caracter con que finaliza el envío set(PS.'CR/LF').'none').9999998."r&!ción de est"s bits se &!ntiene.'format'.Puerto Serial con Matlab! http://toyscaos.tripod.$"t!nte " c"n bit de si+n"1% E$ #r"+r!&! que 2!ce $! tr!ns&isión es éste4 h=convertir(h).9600).este #r"+r!&! en *! d"s bytes c!d! e6% 727 es un ect"r% #!r! en i!r &=s de un d!t" es neces!ri" un buc$e% E$ M!t$!b y! se enc!r+! de $! e$"cid!d de tr!ns&isión y $!s es#er!s entre d!t" y d!t" ! &edid! que se eDecut! e$ buc$e% Se e que 2!y un buc$e !c*"% En $! #r=ctic!. fwrite(PS. h=hex2dec(hexh).'max'.$"t!nte de AB bits ! un" de ti#" enter" sin si+n" de 95 bits .'InputBufferSize' .'DataBits'.'wrap').#"r es" $e &et* un buc$e !c*" . for i=1:1000 end.unción es c"n ertir $"s bits de un d!t" c"n c"&! .'Terminator'.'uint16').'StopBits'.un! . % se configura bit de parada a uno set(PS.!s* ten*! que 2!cerse #"rque !s* recib*! $"s d!t"s e$ dis#"siti " c"nect!d" !$ #uert" seri!$1.html Si n" se 2!ce est".c"n ese DSP M"t"r"$!.'Timeout'.&uc2!s eces es &eD"r tr!b!D!r c"n d!t"s ti#" enter"s sin si+n" " c2!r sin si+n".2.0. % ”n” es el número de bytes a recibir set(PS.#er" $" que c!&bi! es có&" $" inter#ret! e$ M!t$!b y có&" $"s tr!ns&ite !$ #uert" seri!$% Cu!nd" $e #"n*! enter" c"n si+n".'Baudrate'.'min'. debe estar entre 5 y 8 set(PS.est" y! $" 2ice !c"rde ! 2 de 5 21/06/2013 08:32 p. % se configura que el dato es de 8 bits. PS=serial('COM1').ue un DSP M"t"r"$!% . delete(PS). . % se configura la velocidad a 9600 Baudios set(PS.!$ querer c"rrer nue !&ente e$ #r"+r!&!.h(j).m. L" que 2!ce est! . for j=1:length(h) fwrite(PS.n"s b"t!r= err"r% @ !2"r!.'OutputBufferSize'.unción y dec$!ré e$ ti#" de d!t"s ! tr!ns&itir c"&" enter" sin si+n"% E$ dis#"siti " que recib*! $"s bits en este c!s" .2).er! neces!ri" un #eque3" ret!rd" en $! tr!ns&isión.5). % se configura sin paridad set(PS.8).en $u+!r de un 7CCC tr!ns&it*! un CCCC.$! in. fclose(PS). C"&" se n"t!r=. set(PS.2).es #r"b!b$e que "tr"s dis#"siti "s n" $" necesiten.

9600). set(PS. % se configura que el dato es de 8 bits. INSTRFIND L! .'Baudrate'.e$ cu!$ recib*! $"s d!t"s desde un #ic. % 5 segundos de tiempo de espera fopen(PS). clear PS.'CR/LF').5). K1= [].unción strBnu& es #!r! c"n ertir $! c!den! :B: :%: :): :A: en e$ n>&er" B%)A c"n e$ cu!$ y! se #uede "#er!r% P!r! recibir t"d" un ect"r de un! se3!$ c!#tur!d! ! tr! és de un sens"r se 2!ce4 clear all. for j=1:4 K1 = [K1 fread(PS.'Baudrate'. set(PS.8).html có&" &i c"&#!3er" E$ Ei" e $" #r"+r!&ó1% P!r! $eer !ri"s d!t"s desde e$ #uert" seri!$.com/serial.d!t"s de$ ti#" c2!r. delete(PS).1).2ice e$ si+uiente #r"+r!&it!. PS=serial('COM1'). % ”n” es el número de bytes a recibir set(PS. K1=char(K1). % se configura la velocidad a 9600 Baudios set(PS.m.'DataBits'. end.'none'). % se configura sin paridad set(PS. ?94 clear all.9600). debe estar entre 5 y 8 set(PS.$!s c"ndici"nes er!n que c!d! cu!tr" bytes 2!c*!n un! &uestr! de un! se3!$ c!#tur!d! desde un sens"r% Si e$ sens"r re+istr!b! B%)A e$ #ic en i!b! $"s c!r!cteres :B: :%: :): :A: $"s que e$ M!t$!b $ee c"&" sus res#ecti "s códi+"s Ascii4 ?) (5 (.1). debe estar entre 5 y 8 3 de 5 21/06/2013 08:32 p.8). clc. % se configura que el dato es de 8 bits.1). fclose(PS).'OutputBufferSize'.'DataBits'. K1= str2num(K1).1). % ”n” es el número de bytes a enviar set(PS. % se configura bit de parada a uno set(PS.tripod. close all. close all. % se configura la velocidad a 9600 Baudios set(PS.'StopBits'.Puerto Serial con Matlab! http://toyscaos.'uchar')]. PS=serial('COM1').1.'InputBufferSize' . clc.'Timeout'.% “c” caracter con que finaliza el envío set(PS. % se configura bit de parada a uno set(PS.'Terminator'.'Parity'.'StopBits'. .

1). K=[K str2num(K1)].com/serial. % 5 segundos de tiempo de espera fopen(PS). fclose(PS). end.INSTRCIND n"s b"t!r=4 Si e$ #uert" est= !biert". clear PS. .'Parity'.n"s b"t!r=4 4 de 5 21/06/2013 08:32 p.1).'CR/LF').'none').m. % se configura sin paridad set(PS.5).html set(PS.tripod.% “c” caracter con que finaliza el envío set(PS.'OutputBufferSize'. K1=[].in!$i6!d" e$ #r"+r!&! que $" uti$i6!% Si e$ #uert" est= cerr!d". INSTRFIND L! se3!$ se ! !cu&u$!nd" en e$ ect"r F% F9 só$" rec"+e c!d! cu!tr" c!r!cteres . K1=char(K1). K1= [].Puerto Serial con Matlab! http://toyscaos.'uchar')]. delete(PS).'Terminator'.1.'InputBufferSize' . K= [].un! &uestr!1% Acerc! de INSTRCIND4 Est! instrucción n"s dice e$ est!d" de$ #uert" seri!$% Sie&#re debe est!r cerr!d" un! e6 . end.'Timeout'. for i=1:lo_que_dure_el_muestreo for j=1:4 K1 = [K1 fread(PS. % ”n” es el número de bytes a recibir set(PS. % ”n” es el número de bytes a enviar set(PS.

m.html O cu!$quier "tr! in. .tripod."r&!ción !cerc! de$ #uert" " #uert"s que se 2!y!n !biert"% 5 de 5 21/06/2013 08:32 p.Puerto Serial con Matlab! http://toyscaos.com/serial.