.::MATLAB - CONTROL DE PUERTOS LPT Y COM::.

MATPIC.COM

MATLAB - CONTROL DE PUERTOS LPT Y COM

CONTROL DE PUERTOS LPT Y COM

Resumen.- El presente artículo contiene una breve introducción sobre los puertos del PC: paralelo (LPT) y serial (COM) , así como los programas necesarios para su escritura y lectura desde MATLAB 7.1. Recomendamos para su ensayo tomar las medidas necesarias de seguridad para evitar daños innecesarios en el HW del PC.

CONTROL DEL PUERTO PARALELO LPT

En el command window ejecutamos:

>> out = daqhwinfo;

>> out.InstalledAdaptors

Lo que dará como resultado en el caso de mi PC:

ans =

'parallel'

'winsound'

Una vez que Matlab ha reconocido el PP, ejecutamos:

>> daqhwinfo('parallel')

ans =

AdaptorDllName: [1x50 char]

AdaptorDllVersion: '2.7 (R14SP3)'

AdaptorName: 'parallel'

BoardNames: {'PC Parallel Port Hardware'}

InstalledBoardIds: {'LPT1'}

ObjectConstructorName: {'' '' 'digitalio('parallel','LPT1')'}

La última línea indica el nombre de la entrada digital: digitalio('parallel','LPT1').

Como sabemos, el PP puede ser de entrada y salida. La siguiente figura muestra la distribución de pines del PP:

db25
Numeración de pines del PP.

En este conector:

  • 8 pines son para salida de datos (bits de DATOS), y van desde el pin 2 (bit menos significativo) hasta el pin 9 (bit más significativo).
  • 5 pines son de entrada de datos (bits de ESTADO). Estos pines son: 15, 13, 12, 10 y 11, del menos al más significativo.
  • 4 pines son de control (bits de CONTROL). Tienen la característica de ser bidireccionales es decir que los puedes utilizar tanto de entrada como de salida. Estos pines son: 1, 14, 16 y 17, del menos al más significativo.

Sin embargo, configurando en la BIOS del PC (accesible en unos PCs con la tecla F12, en otros con la tecla Del o Supr, y a veces con F10) el puerto paralelo (LPT1) como de entrada y salida, es posible usar los pines del 2 al 9 como de entrada.

Para determinar cuantos pines podemos usar en el PP, ejecutamos:

>> parport = digitalio('parallel','LPT1');

>> hwinfo = daqhwinfo(parport)

hwinfo =

AdaptorName: 'parallel'

DeviceName: 'PC Parallel Port Hardware'

ID: 'LPT1'

Port: [1x3 struct]

SubsystemType: 'DigitalIO'

TotalLines: 17

VendorDriverDescription: 'Win I/O'

VendorDriverVersion: '1.3'

Como se puede ver en la información, 17 de los 25 pines del PP se los puede utilizar como I/O. Los restantes pines son tierra.

Una vez creada la entrada digital del PP, lo que sigue es asignar que pines serán para entrada y cuales para salida. Usamos la función addline, cuya sintaxis es:

>> dato2= addline(parport,0:7,'in'); %Para valores de entrada

>> dato = addline(parport,0:7,'out'); %Para valores de salida

Y se obtiene el dato de entrada con dato3=getvalue(dato2). Se asigna el dato al puerto con: putvalue(dato,255).

Por ejemplo, con el siguiente script encendemos un led:

%Puerto paralelo

parport = digitalio('parallel','LPT1');

dato = addline(parport,0:7,'out');

putvalue(dato,2)

Descarga este código con un clic en el siguiente botón:

 

CONTROL DEL PUERTO SERIAL COM

A diferencia del puerto paralelo que lo pueden usar simultáneamente dos o más programas a la vez, el puerto serial será de uso exclusivo de un solo programa, de tal modo que si por ejemplo Visual Basic lo está usando, será imposible usarlo desde Matlab.

Para usar este puerto es necesario establecer los parámetros de su funcionamiento, como por ejemplo baudrate, bits de datos, bit de parada, etc.

%ABRIR el puerto COM1

clc; disp('BEGIN')

SerPIC = serial('COM1');

set(SerPIC,'BaudRate',2400);

set(SerPIC,'DataBits',8);

set(SerPIC,'Parity','none');

set(SerPIC,'StopBits',1);

set(SerPIC,'FlowControl','none');

fopen(SerPIC);

%*-*-*-*-*-*-

Para escribir datos usamos la función fprintf:

fprintf(SerPIC,'%c',char(100));%Envía en código ASCII

fprintf(SerPIC,'%s',100);%Envía un string

Para leer los datos del puerto se usa la función fscanf.

s1 = serial('COM1');

s1.BaudRate=9600;

fopen(s1);

fscanf(s1)

Luego de realizar la comunicación, los pasos para cerrar el puerto son:

%CERRAR el puerto COM1 al finalizar

fclose(SerPIC);

delete(SerPIC)

clear SerPIC

disp('STOP')

©2015 MATPIC

Prohibida cualquier copia parcial o total del contenido de esta web