You are on page 1of 8

INTERFAS DE PUERTO SERIE EN MATLAB

La comunicación en serie es el protocolo de bajo nivel más común para comunicarse


entre dos o más dispositivos. Normalmente, un dispositivo es una computadora,
mientras que el otro puede ser un módem, una impresora, otra computadora o un
dispositivo embebido PIC o Arduino.

La comunicación se establece, a través de un objeto de puerto serie, que usted crea


en el espacio de trabajo de MATLAB®.

Crear un objeto de puerto serie

Para crear un objeto de puerto serial, se utiliza la función:

serial('');

Esta función requiere como argumento de entrada, el nombre del puerto serie
“COM”, por medio del cual nos vamos a comunicar.

La sintaxis es: s = serial('port');

Esto crea un objeto s, que tiene todas las características del puerto COM#
seleccionado.

Buscar puertos series conectados a nuestra PC

Para escanear el hardware conectado a nuestra PC por medio del puerto serial,
podemos utilizar la función.

La sintaxis es: instrhwinfo('serial')

Esta función retorna una la lista, en la cual se incluyen puertos serie virtuales
proporcionados por dispositivos USB a serie, y los propios del hardware del PC.

También podemos almacenar los resultados en una variable, y después acceder a


la propiedad puertos seriales disponibles.

La sintaxis es: info = instrhwinfo('Serial');


info.AvailableSerialPorts
Configuración de los parámetros de la comunicación

Una vez escaneado el hardware y seleccionado el puerto serial “COM” que vamos
a utilizar, es necesario configurar los parámetros propios de la comunicación serial
como lo son:

La sintaxis es: s = serial('COM1');

BaudRate:

La sintaxis es: s.BaudRate = 9600;

DataBits:

La sintaxis es: s.DataBits = 8;

Parity:

La sintaxis es: s.Parity = 'none';

StopBits:

La sintaxis es: s.StopBits = 1;

Terminator:

La sintaxis es: s.Terminator = 'CR';


BaudRate:

La velocidad en baudios es la velocidad a la que se transfiere la información


en un canal de comunicación. En el contexto del puerto serie, "9600 baudios"
significa que el puerto serie es capaz de transferir un máximo de 9600 bits
por segundo.

Las velocidades de baudios estándar incluyen 110, 300, 600, 1200, 2400,
4800, 9600, 14400, 19200, 38400, 57600, 115200, 128000 y 256000 bits por
segundo.

Data Bits:

Se pueden configurar los bits de Datos para ser 5, 6, 7, o 8. Los datos se


transmiten como una serie de cinco, seis, siete u ocho bits con el bit menos
significativo enviado primero. Se requieren al menos siete bits de datos para
transmitir caracteres ASCII. Se requieren ocho bits para transmitir datos
binarios.

Parity:

La paridad se puede configurar como: ninguna, impar, par, marca o espacio

Si la paridad se configura como ninguna, la verificación de paridad no se


realiza y el bit de paridad no se transmite

Si la paridad se configura como impar, se cuenta el número de bits de


marca (1s) en los datos, y el bit de paridad se afirma o no para obtener un
número impar de bits de marca.

Si la paridad se configura como par, se cuenta el número de bits de marca


(1s) en los datos, y el bit de paridad se afirma o no para obtener un número
par de bits de marca.

Si la paridad se configura como marca, el bit de paridad es 1.

Si la paridad se configura como espacio, el bit de paridad es 0.


Stop Bits:

Se puede configurar como 1, 1.5 o 2

1 Se transmite un bit de parada para indicar el final de un byte.

1.5 El bit de parada se transfiere durante el 150% del tiempo normal


utilizado para transferir un bit.

2 Se transmiten dos bits de parada para indicar el final de un byte

Terminator:

Se puede configurar, como un entero que va 0 a 127, equivalente al


carácter ASCII, o vacío ('')

Dentro de los códigos de control pueden ser:

Un retorno de carro, especifique el valor para ser 'CR' o 13.

Salto de línea, especifique el valor para ser 'LF' o 10.

Utilizar combinaciones como:

Retorno de carro seguido de un avance de línea 'CR/LF'.

Avance de línea seguido de un Retorno de carro 'LF/CR'.

También podemos modificar las propiedades del objeto serial, como se


muestra a continuación:

La sintaxis es: set(obj,'PropertyName',PropertyValue)

set(s,'BaudRate',9600,'DataBits',8,'Parity','none')

set(s,'StopBits',1,'FlowControl','none','Terminator','CR')
Abrir el Puerto Serie

Una vez escaneado los puertos seriales conectados a nuestra pc, y seleccionado el
puerto COM por el que nos vamos a comunicar, después de haber configurados los
parámetros propios de una comunicación serial en ambos dispositivos, procedemos
a abrir el puerto para en envió y recesión de datos.

La sintaxis es: fopen(obj)

En el caso del ejemplo: fopen(obj)

Escritura de datos fprintf(serial) escribe texto en el dispositivo.

La siguiente instrucción envía la cadena cmd al dispositivo conectado al


puerto serie del obj, el formato predefinido es %s \n. La operación de escritura
es síncrona y bloquea la línea de comandos, hasta que se realiza la transmisión.

fprintf(obj,'cmd')

La siguiente instrucción envía la cadena cmd utilizando el formato format al


dispositivo conectado al puerto serie obj, utilizando el modo de transmisión
mode.

fprintf(obj,'format','cmd','mode')

format Especificación de conversión del lenguaje C.


mode Especifica si cmd será escrito de forma síncrona o asíncrona.

Especificador Descripción
%c Un carácter
%d o %i Notación decima con signo
%e Notación exponencial, con e minúscula 3.1415e+00
%E Notación exponencial con E mayúscula 3.1415E+00
%f Decimal de punto flotante
Formato %g Usado para cortos %e o %f
%G Igual que %g pero usando E mayúscula
%o Notación Octal
%s Cadena de caracteres String
%u Notación decimal si signo
%x Notación Hexadecimal, letras en minúsculas
%X Notación Hexadecimal, letras en mayúsculas
mode:

'sync' La cadena 'cmd' será escrita síncronamente y la


línea de comando estará bloqueada.

'asyn' La cadena 'cmd' será escrita asíncronamente y la


línea de comando no estará bloqueada.

Si se especifica el modo asíncrono para la transmisión:

El valor de la propiedad BytesToOutput se actualiza continuamente


para reflejar la cantidad de bytes en el búfer de salida.

Escritura de datos fwrite(serial) escribe datos binarios en el dispositivo.

La siguiente instrucción envía los datos binarios, contenidos en la variable A,


al dispositivo conectado al objeto del puerto serie obj.

fwrite(obj,A)

La siguiente instrucción envía los datos binarios, contenidos en la variable


A, con la precisión especificada, al dispositivo conectado al objeto del
puerto serie obj. Utilizando el modo de transmisión especificado.

fwrite(obj,A,'precision','mode')
Precisiones compatibles:

Tipo de Dato Precision interpretación


uchar Carácter de 8 bits sin signo
Carácter schar Carácter de 8 bits con signo
char Carácter de 8 bits sin signo o sin signo
int8 Entero de 8 bit
int16 Entero de 16 bit
int32 Entero de 32 bit
uint8 Entero si signo de 8 bit
uint16 Entero si signo de 16 bit
uint32 Entero si signo de 32 bit
Entero
short Entero de 16 bit
int Entero de 32 bit
long Entero de 32 o 64 bit
ushort Entero si signo de 16 bit
uint Entero si signo de 32 bit
ulong Entero si signo de 32 o 64 bit
single Punto flotante de 32 bit
float32 Punto flotante de 32 bit
Punto Flotante float Punto flotante de 32 bit
doublé Punto flotante de 64 bit
float64 Punto flotante de 64 bit

Si no se especifica la precisión, por defecto MATLAB utiliza un uchar “un carácter


de 8 bit sin signo”

Antes de poder escribir datos en el dispositivo, debe estar conectado al objeto


del puerto serial por medio de la función fopen. Un objeto de puerto serial
conectado tiene la propiedad de estado en open

s.State = open

Se devuelve un error si intenta realizar una operación de escritura cuando el


dispositivo no está conectado.

Se produce un error si el búfer de salida no puede contener todos los datos


que se escriben, se puede especificar el tamaño del búfer de salida con la
propiedad de OutputBufferSize

La propiedad Terminator no se usa con operaciones de escritura binaria.


Desconectar un objeto de puerto serial

fclose(obj)

Eliminar un objeto de puerto serial

delete(obj)

Es recomendable después de eliminar un objeto de comunicación serial,


borrarlo del espacio de trabajo con

clear obj

You might also like