Está en la página 1de 14

Conexin del Puerto paralelo

Por: Leonardo Hidrovo y Gissela Vera


Estudiantes de Ingeniera en Sistemas de la UTEQ

Las comunicaciones en paralelo se realizan mediante la transferencia simultnea de todos


los bits que constituyen el dato (byte o palabra). Presentan la ventaja de que la
transmisin puede ser ms rpida. Sin embargo, las comunicaciones en paralelo no
pueden ser implementadas para grandes distancias debido a que no es viable la conexin
fsica de todas las lneas necesarias.
Las comunicaciones en paralelo propiamente dichas no han sido normalizadas, lo que s se
reconoce es la norma Centronic, para la conexin del PC a la impresora, mediante el envo
simultneo de 8 bits de datos (un byte), adems de un conjunto de lneas de protocolo
(handshake o intercambio). La operacin ms frecuente en la que interviene el puerto
paralelo del PC es en el envo de datos a la impresora.
Los antiguos circuitos integrados que se incluan en las tarjetas de interface del puerto
paralelo no permitan la recepcin de datos, slo estaban diseados para el envo de
informacin al exterior. Las versiones recientes de estas tarjetas de interface de puertos
paralelo s permiten la recepcin de datos y dan la posibilidad, por ejemplo, de
intercambiar informacin entre PC a travs del puerto paralelo, siempre que se utilice el
software adecuado.
La norma Centronics hace referencia a las caractersticas de la conexin entre un interface
de puerto paralelo y una impresora. Las lneas son latcheadas, esto es, mantienen siempre
el ltimo valor establecido en ellas mientras no se cambien expresamente y los niveles de
tensin y de corriente coinciden con los niveles de la lgica TTL, cuyos valores tpicos son:
-Tensin de nivel alto: 5 V.
-Tensin de nivel bajo: 0 v.
-Intensidad de salida mxima: 2.6 mA.
-Intensidad de entrada mxima: 24 mA.
La norma Centronics establece el nombre y las caractersticas de 36 lneas elctricas para
la conexin entre el PC y la impresora.
En realidad, para la transferencia de las seales de datos y de control a travs de la tarjeta
de interface paralelo slo se requieren 18 lneas, las restantes son lneas de masa que se
enrollan alrededor de los cables de seal para proporcionarles apantallamiento y
proteccin contra interferencias. Por esto, las citadas tarjetas suelen incorporar un
conector hembra DB-25, mientras que prcticamente todas las impresoras incorporan un
conector hembra tipo Centronics macho de 36 pines,
Los cables comerciales para la conexin paralelo entre el PC y la impresora tienen una
longitud de 2 metros, aunque no es recomendable que tengan una longitud superior a 5
metros si se desea una conexin fiable y sin interferencias.

Conectores del Puerto Paralelo (DB25).


Aqu tienes una imagen de los conectores

Cada pin de los conectores tiene un nmero asignado por lo cual es muy importante que al
armar tus propios cables los identifiques correctamente
Este puerto dispone de tres registros de 8 bit cada uno (un byte).cada uno de estos registros se
denominan puertos o PORT., y cada uno de sus bits, representa un pin determinado del
puerto. Los pin que van del 18 al 25 (ambos inclusive): Son para masa, y sirven para conectar
las descargas de los circuitos.

Veamos ahora los tres registros


Puerto de datos (Pin 2 al 9): Es el PORT 378 en hexadecimal y es de solo escritura, por este
registro enviaremos los datos al exterior de la PC. No enves seales elctricas al ordenador
por estos pines. Puerto de estado (Pin 15, 13, 12, 10 y 11): Es el PORT 379 en hexadecimal y es
de solo lectura, por aqu enviaremos seales elctricas al ordenador, de este registro solo se
utilizan los cinco bits de ms peso, que son el bit 7, 6, 5, 4 y 3 teniendo en cuenta que el bit 7
funciona en modo invertido. Puerto de control (Pin 1, 14, 16 y 17): Es el correspondiente al
PORT 37A en hexadecimal y es de lectura/escritura, es decir, podremos enviar o recibir seales
elctricas, segn nuestras necesidades. De los 8 bits de este registro solo se utilizan los cuatro
de menor peso o sea el 0, 1, 2 y 3, con un pequeo detalle, los bits 0, 1, y 3 estn invertidos
En esta imagen puedes ver los tres registros, sus bits y los pines asignados a cada uno de ellos.
La imagen corresponde a un conector DB-25 (Hembra).

Para controlar el estado de los pines del puerto paralelo basta con escribir un nmero
entero positivo de 8 bits en la direccin del mismo. El pin de datos 0, que fsicamente est
conectado al terminal 2 del conector, asume el peso 1. Este es el bit de menos peso en la
palabra de datos de dicho puerto. Siguiendo la tabla de abajo observar que es muy simple
manejar puntualmente cada uno de los pines.

Terminal
Bit
Peso

2
0
1

3
1
2

4
2
4

5
3
8

6
4
16

7
5
32

8
6
64

9
7
128

Por ejemplo, los datos 1, 2, 4, 8, 16, 32, 64 y 128, encenderan cada uno de los terminales
D0 a D7. Si queremos activar el terminal D3 escribiramos la siguiente instruccin en visual
out ( &H0x378, 8)
Instruccin (puerto, dato)

Si queremos hacer que los terminales 4, 6, 8 y 9 del puerto paralelo se enciendan


quedando los otros apagados debemos sumar los valores correspondientes a esos pines y
enviar dicho resultado a la direccin del puerto. En este ejemplo el dato a enviar sera: 4 +
16 + 64 + 128 lo que equivale a 212
Para que todos los pines se enciendan tendremos que enviar el valor 255, mientras que
para que todos se apaguen deberemos enviar el valor 0.
La direccin del puerto LPT1 usualmente es 378, la del puerto LPT2 suele ser 278 y la del
puerto LPT3 casi siempre es 3BC. Aunque esto depende de cmo est configurado su
hardware. Una forma de determinar la direccin del puerto es presionando la tecla Pause
al comienzo de la carga del sistema operativo. Ver una tabla donde el BIOS reporta los
parmetros bsicos del equipo, incluyendo datos sobre los puertos.

CONTROL DEL PUERTO PARALELO


CONTROL EN APLICACIONES DE ELECTRNICA
1. Circuito de Control de LED
Este circuito permite controlar encender un LED el cual recibe corriente desde uno de los
pines de datos del puerto paralelo y tambin nos permite conocer si el LED est encendido
o apagado por medio de un pin de estado del LPT conectado al circuito.

Materiales
1 diodo LED
1 resistencia de 220ohm
1 transistor de tipo NPN
Una plaqueta para armar el circuito
1 Conector Db25 Macho
Cable para interconexiones (Puede ser del de Red de 8 Hilos)
Un pequeo interruptor
Los materiales a incluirse son para un solo LED para mayor comprensin. Entendido esto
se puede utilizar los dems bits del puerto para controlar otros LEDS.

Diagrama del circuito


Fig. 1

E0

D0
R1
18-25

Importante: si se desea controlar ms LEDS como en el caso de nuestro proyecto, solo tiene que aadirse un circuito para
cada salida del LPT.

Funcionamiento
El transistor que se encuentra en el diagrama es de tipo PNP el cual permite la conduccin de
corriente del emisor E hacia el colector C siempre y cuando se establezca circuito entre el
emisor E que puede recibir corriente de los pines 2-9 y la base B la cual siempre estar
conectada a tierra del puerto paralelo que va desde el pin18 hasta el 25.
Mientras el circuito est abierto (SWITCH sin presionar), E0 que puede ser cualquiera de los
pines de Estado del LPT se encuentra puesto a tierra. Cuando se cierra circuito (SWITCH
presionado) fluye corriente de D0 (cualquiera de los pines de datos) hacia el emisor del
transistor cerrando circuito mediante la base B y a su vez permite el paso de corriente del
emisor E al colector C que encender el LED y el E0 recibir la seal elctrica la cual leeremos
desde nuestro programa que determinar si el LED est encendido.
La R1 se encarga de limitar la corriente del puerto paralelo evitando que este se dae.

2. Circuito de Control de Luz de C.A. 110V


Este circuito permite encender un bombillo de 110v C.A. y de bajo consumo para el cual
utilizaremos un dispositivo capaz de accionar potencia a partir de seales dbiles de
corriente (optoacoplador) como en este caso es el puerto paralelo.

Materiales
1 bombillo de 110V
1 boquilla (para el bombillo)
Cable N 22 con su respectivo enchufe
1 resistencia de 220ohm
1 Moc 3010
1 Bornera
1 transistor de tipo NPN
Una plaqueta para armar el circuito
1 Conector Db25 Macho
Cable para interconexiones (Puede ser del de Red de 8 Hilos)
Un pequeo interruptor

Diagrama del circuito

Fig. 2
E0

D0
R1

110v C.A.

MOC 3010

Importante: si se desea controlar ms dispositivos como lmparas, cafeteras, etc., solo tiene que aadirse un circuito para
cada salida del LPT.

Funcionamiento
En este circuito explicaremos el funcionamiento del optoacoplador (MOC 3010) y del sistema
de potencia ya que el resto del circuito tiene el mismo funcionamiento que el de la figura 1
Este es un dispositivo de 6 patas que est sirviendo como aislante entre la etapa de control
(PC) y la de potencia (Dispositivo de C.A., foco, televisin, cafeteras.).

El MOC, contiene en su interior un acoplamiento ptico entre un LED y un fotodiac, cuando


cerramos circuito, el bit1 del puerto paralelo, llega corriente al LED interno del MOC y fluye
corriente a travs de este hasta La tierra del puerto Paralelo que va desde el pin18 hasta el 25.
Mientras el circuito est cerrado el LED del MOC esta encendido (pero no se ve pues est
adentro), frente al LED del MOC, existe un fotodiac, que es un dispositivo tpico de disparo,
acta cuando entre sus 2 terminales hay cierto potencial llamado voltaje de disparo. Pero
este disparo no ocurre si el LED no le proporciona luz.
Por tanto mientras no haya pulso por parte del puerto LPT, el LED no enciende y el fotodiac
no se dispara, es decir no hay paso de corriente desde el pin 6 al pin 4 del MOC. Al haber
pulso, el LED enciende y el fotodiac est habilitado para hacer los disparos, que permitir la
conduccin del pin 6 al pin 4 del MOC que est conectado a 110v y a su vez encender el
bombillo.
El fotodiac del MOC se comporta como un aislante o interruptor abierto cuando el LED no
est encendido y no hace llegar corriente a la carga por lo cual no enciende el bombillo.

Software en visual basic.net


El programa es muy sencillo. Para poder controlar el puerto es necesario tener en la PC una
dll que gestiona toda la programacin del puerto. Esta dll puede ser la io.dll y otra puede ser
la inpout32.dll en este caso usaremos la inpout32.dll que la copiamos a la carpeta del
sistema, es decir en Windows\system32.
Para usar esta librera aadimos un mdulo a nuestro proyecto en el cual declaramos lo
siguiente:
Public Declare Function Inp Lib "inpout32.dll" Alias "Inp32" (ByVal PortAddress As Short) As Short
Public Declare Sub Out Lib "inpout32.dll" Alias "Out32" (ByVal PortAddress As Short, ByVal Value
As Short)
Public Declare Function ShellAbout Lib "shell32.dll" Alias "ShellAboutA" (ByVal hwnd As Integer,
ByVal szApp As String, ByVal szOtherStuff As String, ByVal hIcon As Integer) As Integer

PAGINA PRINCIPAL DEL PROGRAMA

Fig. 3
En esta parte del programa contiene 3 opciones de men. En Aplicaciones fig.4. tenemos
dos submens en el cual podemos escoger lo siguiente:
Control de LEDS
Control de luces

Fig. 4

Control de LEDS

Cdigo:
Dim aux() As Integer = {0, 0, 0, 0}

La variable global para este formulario es un vector auxiliar (AUX) de tipo entero que consta
de 4 elementos (ya que en este caso usamos 4 LEDS) los cuales son inicializados a cero que
significa que estn todos apagados.

Private Sub tmrsensor_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs)


Handles
tmrsensor.Tick
luces(Inp(&H379))
End Sub

Usamos un TIMER el cual en la propiedad INTERVAL le asignamos el mnimo valor 1 el cual


nos servir como sensor, porque ser quien en cada instante (1 milsima de segundo)
obtendr la lectura del puerto con la istruccion Inp (&H379) y est lectura se la enva al
procedimiento luces quien determinar si estn encendidos o apagados cada uno de los
LEDS.

Sub luces(ByVal valor As Short)


If valor = 199 Then
pct1.Image = Image.FromFile(Application.StartupPath
pct2.Image = Image.FromFile(Application.StartupPath
pct3.Image = Image.FromFile(Application.StartupPath
pct4.Image = Image.FromFile(Application.StartupPath
ElseIf valor = 207 Then
pct1.Image = Image.FromFile(Application.StartupPath
pct2.Image = Image.FromFile(Application.StartupPath
pct3.Image = Image.FromFile(Application.StartupPath
pct4.Image = Image.FromFile(Application.StartupPath
ElseIf valor = 71 Then
pct1.Image = Image.FromFile(Application.StartupPath
pct2.Image = Image.FromFile(Application.StartupPath
pct3.Image = Image.FromFile(Application.StartupPath
pct4.Image = Image.FromFile(Application.StartupPath
ElseIf valor = 79 Then
pct1.Image = Image.FromFile(Application.StartupPath
pct2.Image = Image.FromFile(Application.StartupPath
pct3.Image = Image.FromFile(Application.StartupPath
pct4.Image = Image.FromFile(Application.StartupPath
ElseIf valor = 231 Then
pct1.Image = Image.FromFile(Application.StartupPath
pct2.Image = Image.FromFile(Application.StartupPath
pct3.Image = Image.FromFile(Application.StartupPath
pct4.Image = Image.FromFile(Application.StartupPath
ElseIf valor = 239 Then
pct1.Image = Image.FromFile(Application.StartupPath
pct2.Image = Image.FromFile(Application.StartupPath
pct3.Image = Image.FromFile(Application.StartupPath
pct4.Image = Image.FromFile(Application.StartupPath
ElseIf valor = 103 Then
pct1.Image = Image.FromFile(Application.StartupPath
pct2.Image = Image.FromFile(Application.StartupPath
pct3.Image = Image.FromFile(Application.StartupPath
pct4.Image = Image.FromFile(Application.StartupPath
ElseIf valor = 111 Then
pct1.Image = Image.FromFile(Application.StartupPath
pct2.Image = Image.FromFile(Application.StartupPath
pct3.Image = Image.FromFile(Application.StartupPath
pct4.Image = Image.FromFile(Application.StartupPath
ElseIf valor = 215 Then
pct1.Image = Image.FromFile(Application.StartupPath
pct2.Image = Image.FromFile(Application.StartupPath
pct3.Image = Image.FromFile(Application.StartupPath
pct4.Image = Image.FromFile(Application.StartupPath
ElseIf valor = 223 Then
pct1.Image = Image.FromFile(Application.StartupPath
pct2.Image = Image.FromFile(Application.StartupPath
pct3.Image = Image.FromFile(Application.StartupPath
pct4.Image = Image.FromFile(Application.StartupPath
ElseIf valor = 87 Then
pct1.Image = Image.FromFile(Application.StartupPath
pct2.Image = Image.FromFile(Application.StartupPath
pct3.Image = Image.FromFile(Application.StartupPath
pct4.Image = Image.FromFile(Application.StartupPath
ElseIf valor = 95 Then
pct1.Image = Image.FromFile(Application.StartupPath
pct2.Image = Image.FromFile(Application.StartupPath
pct3.Image = Image.FromFile(Application.StartupPath
pct4.Image = Image.FromFile(Application.StartupPath
ElseIf valor = 247 Then
pct1.Image = Image.FromFile(Application.StartupPath
pct2.Image = Image.FromFile(Application.StartupPath
pct3.Image = Image.FromFile(Application.StartupPath
pct4.Image = Image.FromFile(Application.StartupPath
ElseIf valor = 255 Then
pct1.Image = Image.FromFile(Application.StartupPath
pct2.Image = Image.FromFile(Application.StartupPath
pct3.Image = Image.FromFile(Application.StartupPath
pct4.Image = Image.FromFile(Application.StartupPath
ElseIf valor = 119 Then
pct1.Image = Image.FromFile(Application.StartupPath
pct2.Image = Image.FromFile(Application.StartupPath
pct3.Image = Image.FromFile(Application.StartupPath
pct4.Image = Image.FromFile(Application.StartupPath
ElseIf valor = 127 Then
pct1.Image = Image.FromFile(Application.StartupPath
pct2.Image = Image.FromFile(Application.StartupPath
pct3.Image = Image.FromFile(Application.StartupPath
pct4.Image = Image.FromFile(Application.StartupPath
End If
End Sub

&
&
&
&

"\0.png")
"\0.png")
"\0.png")
"\0.png")

:
:
:
:

lbl1.Text
lbl2.Text
lbl3.Text
lbl4.Text

=
=
=
=

"OFF"
"OFF"
"OFF"
"OFF"

&
&
&
&

"\0.png")
"\0.png")
"\0.png")
"\1.png")

:
:
:
:

lbl1.Text
lbl2.Text
lbl3.Text
lbl4.Text

=
=
=
=

"OFF"
"OFF"
"OFF"
"ON"

&
&
&
&

"\0.png")
"\0.png")
"\1.png")
"\0.png")

:
:
:
:

lbl1.Text
lbl2.Text
lbl3.Text
lbl4.Text

=
=
=
=

"OFF"
"OFF"
"ON"
"OFF"

&
&
&
&

"\0.png")
"\0.png")
"\1.png")
"\1.png")

:
:
:
:

lbl1.Text
lbl2.Text
lbl3.Text
lbl4.Text

=
=
=
=

"OFF"
"OFF"
"ON"
"ON"

&
&
&
&

"\0.png")
"\1.png")
"\0.png")
"\0.png")

:
:
:
:

lbl1.Text
lbl2.Text
lbl3.Text
lbl4.Text

=
=
=
=

"OFF"
"ON"
"OFF"
"OFF"

&
&
&
&

"\0.png")
"\1.png")
"\0.png")
"\1.png")

:
:
:
:

lbl1.Text
lbl2.Text
lbl3.Text
lbl4.Text

=
=
=
=

"OFF"
"ON"
"OFF"
"ON"

&
&
&
&

"\0.png")
"\1.png")
"\1.png")
"\0.png")

:
:
:
:

lbl1.Text
lbl2.Text
lbl3.Text
lbl4.Text

=
=
=
=

"OFF"
"ON"
"ON"
"OFF"

&
&
&
&

"\0.png")
"\1.png")
"\1.png")
"\1.png")

:
:
:
:

lbl1.Text
lbl2.Text
lbl3.Text
lbl4.Text

=
=
=
=

"OFF"
"ON"
"ON"
"ON"

&
&
&
&

"\1.png")
"\0.png")
"\0.png")
"\0.png")

:
:
:
:

lbl1.Text
lbl2.Text
lbl3.Text
lbl4.Text

=
=
=
=

"ON"
"OFF"
"OFF"
"OFF"

&
&
&
&

"\1.png")
"\0.png")
"\0.png")
"\1.png")

:
:
:
:

lbl1.Text
lbl2.Text
lbl3.Text
lbl4.Text

=
=
=
=

"ON"
"OFF"
"OFF"
"ON"

&
&
&
&

"\1.png")
"\0.png")
"\1.png")
"\0.png")

:
:
:
:

lbl1.Text
lbl2.Text
lbl3.Text
lbl4.Text

=
=
=
=

"ON"
"OFF"
"ON"
"OFF"

&
&
&
&

"\1.png")
"\0.png")
"\1.png")
"\1.png")

:
:
:
:

lbl1.Text
lbl2.Text
lbl3.Text
lbl4.Text

=
=
=
=

"ON"
"OFF"
"ON"
"ON"

&
&
&
&

"\1.png")
"\1.png")
"\0.png")
"\0.png")

:
:
:
:

lbl1.Text
lbl2.Text
lbl3.Text
lbl4.Text

=
=
=
=

"ON"
"ON"
"OFF"
"OFF"

&
&
&
&

"\1.png")
"\1.png")
"\0.png")
"\1.png")

:
:
:
:

lbl1.Text
lbl2.Text
lbl3.Text
lbl4.Text

=
=
=
=

"ON"
"ON"
"OFF"
"ON"

&
&
&
&

"\1.png")
"\1.png")
"\1.png")
"\0.png")

:
:
:
:

lbl1.Text
lbl2.Text
lbl3.Text
lbl4.Text

=
=
=
=

"ON"
"ON"
"ON"
"OFF"

&
&
&
&

"\1.png")
"\1.png")
"\1.png")
"\1.png")

:
:
:
:

lbl1.Text
lbl2.Text
lbl3.Text
lbl4.Text

=
=
=
=

"ON"
"ON"
"ON"
"ON"

Este procedimiento nos permite mostrar en la interfaz del programa cuales de los LEDS estn
encendidos o apagados segn la lectura del puerto que llega como parmetro y sirve para
cambiar las imgenes de las luces y el texto que se encuentra debajo de los botones.
ON=encendido,OFF=apagado.
Las condiciones con sus valores se las han elaborado mediante pruebas de lectura.

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles


MyBase.Load
Out(&H378, 0)
tmrsensor.Enabled = True
End Sub

Cuando carga el formulario apagamos todos los LEDS con la instruccin


habilitamos el TIMER sensor.

Out(&H378, 0) y

Private Sub Btn1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles


btn1.Click
If lbl1.Text <> "ON" Then
aux(0) = 1
Else
aux(0) = 0
End If
enciende()
End Sub

Cuando hacemos click en el botn, en este caso el del primer LED verificamos si esta
encendido o apagado mediante el texto en el LABEL. Si no est encendido el AUX en la
posicin 0 ser igual a 1 que es el peso correspondiente al primer PIN de datos del LPT, caso
contrario el aux en la respectiva posicin tomar el valor de 0.
Despus llamamos al procedimiento enciende el cual se encargar de encender el LED
correspondiente.
Este cdigo se repite para cada uno de los botones de correspondiente a cada LED. Lo nico
que cambia es el ndice del aux y el peso que se asigna, as por ejemplo: s es el segundo
botn el ndice del aux ser 1 y el peso correspondiente al segundo PIN de dato que es 2.
Si es el botn 3 el ndice del aux ser 2 con su respectivo peso y as sucesivamente con el
resto.

Private Sub btne_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles


btne.Click
Dim i As Integer
For i = 0 To UBound(aux)
aux(i) = 2 ^ i
Next
enciende()
End Sub

Este procedimiento es para encender todos los LEDS del circuito. Para esto utilizamos un
ciclo repetitivo como es el FOR el cual recorre el aux y le asigna el peso correspondiente.
Usamos la expresin 2 ^ i para el peso de cada uno de los elementos del vector y luego
llamamos al procedimiento enciende.
Esto se realiza cuando damos click en el botn encender todos del formulario.

Private Sub btna_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles


btna.Click
Dim i As Integer
For i = 0 To UBound(aux)
aux(i) = 0
Next
enciende()
End Sub

Este cdigo corresponde al evento click del botn apagar todos el cual asiga a todos los
elementos del vector aux el valor de 0.

Private Sub enciende()


Dim dato As Integer = 0
Dim i As Integer
For i = 0 To UBound(aux)
dato = dato + aux(i)
Next
Out(&H378, dato)
End Sub

Este procedimiento es el que se encarga de encender los LEDS, para esto recorre el vector
aux y sumamos el peso de cada uno de los elementos cuya suma se asigna a la variable
dato. Despus del ciclo dato contiene la suma de todos los pesos de los elementos del vector
el cual se enviar como parmetro a la instruccin Out(&H378, dato) para encender los
LEDS.

Cdigo completo del control de LEDS


Public Class leds
Dim aux() As Integer = {0, 0, 0, 0}
Private Sub tmrsensor_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
tmrsensor.Tick
luces(Inp(&H379))
End Sub
Sub luces(ByVal valor As Short)
If valor = 199 Then
pct1.Image = Image.FromFile(Application.StartupPath
pct2.Image = Image.FromFile(Application.StartupPath
pct3.Image = Image.FromFile(Application.StartupPath
pct4.Image = Image.FromFile(Application.StartupPath
ElseIf valor = 207 Then
pct1.Image = Image.FromFile(Application.StartupPath
pct2.Image = Image.FromFile(Application.StartupPath
pct3.Image = Image.FromFile(Application.StartupPath
pct4.Image = Image.FromFile(Application.StartupPath
ElseIf valor = 71 Then
pct1.Image = Image.FromFile(Application.StartupPath
pct2.Image = Image.FromFile(Application.StartupPath
pct3.Image = Image.FromFile(Application.StartupPath
pct4.Image = Image.FromFile(Application.StartupPath
ElseIf valor = 79 Then
pct1.Image = Image.FromFile(Application.StartupPath
pct2.Image = Image.FromFile(Application.StartupPath
pct3.Image = Image.FromFile(Application.StartupPath
pct4.Image = Image.FromFile(Application.StartupPath
ElseIf valor = 231 Then
pct1.Image = Image.FromFile(Application.StartupPath
pct2.Image = Image.FromFile(Application.StartupPath
pct3.Image = Image.FromFile(Application.StartupPath
pct4.Image = Image.FromFile(Application.StartupPath
ElseIf valor = 239 Then
pct1.Image = Image.FromFile(Application.StartupPath
pct2.Image = Image.FromFile(Application.StartupPath
pct3.Image = Image.FromFile(Application.StartupPath
pct4.Image = Image.FromFile(Application.StartupPath
ElseIf valor = 103 Then
pct1.Image = Image.FromFile(Application.StartupPath
pct2.Image = Image.FromFile(Application.StartupPath
pct3.Image = Image.FromFile(Application.StartupPath
pct4.Image = Image.FromFile(Application.StartupPath
ElseIf valor = 111 Then
pct1.Image = Image.FromFile(Application.StartupPath
pct2.Image = Image.FromFile(Application.StartupPath
pct3.Image = Image.FromFile(Application.StartupPath
pct4.Image = Image.FromFile(Application.StartupPath
ElseIf valor = 215 Then
pct1.Image = Image.FromFile(Application.StartupPath
pct2.Image = Image.FromFile(Application.StartupPath
pct3.Image = Image.FromFile(Application.StartupPath
pct4.Image = Image.FromFile(Application.StartupPath

&
&
&
&

"\0.png")
"\0.png")
"\0.png")
"\0.png")

:
:
:
:

lbl1.Text
lbl2.Text
lbl3.Text
lbl4.Text

=
=
=
=

"OFF"
"OFF"
"OFF"
"OFF"

&
&
&
&

"\0.png")
"\0.png")
"\0.png")
"\1.png")

:
:
:
:

lbl1.Text
lbl2.Text
lbl3.Text
lbl4.Text

=
=
=
=

"OFF"
"OFF"
"OFF"
"ON"

&
&
&
&

"\0.png")
"\0.png")
"\1.png")
"\0.png")

:
:
:
:

lbl1.Text
lbl2.Text
lbl3.Text
lbl4.Text

=
=
=
=

"OFF"
"OFF"
"ON"
"OFF"

&
&
&
&

"\0.png")
"\0.png")
"\1.png")
"\1.png")

:
:
:
:

lbl1.Text
lbl2.Text
lbl3.Text
lbl4.Text

=
=
=
=

"OFF"
"OFF"
"ON"
"ON"

&
&
&
&

"\0.png")
"\1.png")
"\0.png")
"\0.png")

:
:
:
:

lbl1.Text
lbl2.Text
lbl3.Text
lbl4.Text

=
=
=
=

"OFF"
"ON"
"OFF"
"OFF"

&
&
&
&

"\0.png")
"\1.png")
"\0.png")
"\1.png")

:
:
:
:

lbl1.Text
lbl2.Text
lbl3.Text
lbl4.Text

=
=
=
=

"OFF"
"ON"
"OFF"
"ON"

&
&
&
&

"\0.png")
"\1.png")
"\1.png")
"\0.png")

:
:
:
:

lbl1.Text
lbl2.Text
lbl3.Text
lbl4.Text

=
=
=
=

"OFF"
"ON"
"ON"
"OFF"

&
&
&
&

"\0.png")
"\1.png")
"\1.png")
"\1.png")

:
:
:
:

lbl1.Text
lbl2.Text
lbl3.Text
lbl4.Text

=
=
=
=

"OFF"
"ON"
"ON"
"ON"

&
&
&
&

"\1.png")
"\0.png")
"\0.png")
"\0.png")

:
:
:
:

lbl1.Text
lbl2.Text
lbl3.Text
lbl4.Text

=
=
=
=

"ON"
"OFF"
"OFF"
"OFF"

ElseIf valor =
pct1.Image
pct2.Image
pct3.Image
pct4.Image
ElseIf valor =
pct1.Image
pct2.Image
pct3.Image
pct4.Image
ElseIf valor =
pct1.Image
pct2.Image
pct3.Image
pct4.Image
ElseIf valor =
pct1.Image
pct2.Image
pct3.Image
pct4.Image
ElseIf valor =
pct1.Image
pct2.Image
pct3.Image
pct4.Image
ElseIf valor =
pct1.Image
pct2.Image
pct3.Image
pct4.Image
ElseIf valor =
pct1.Image
pct2.Image
pct3.Image
pct4.Image
End If
End Sub

223 Then
= Image.FromFile(Application.StartupPath
= Image.FromFile(Application.StartupPath
= Image.FromFile(Application.StartupPath
= Image.FromFile(Application.StartupPath
87 Then
= Image.FromFile(Application.StartupPath
= Image.FromFile(Application.StartupPath
= Image.FromFile(Application.StartupPath
= Image.FromFile(Application.StartupPath
95 Then
= Image.FromFile(Application.StartupPath
= Image.FromFile(Application.StartupPath
= Image.FromFile(Application.StartupPath
= Image.FromFile(Application.StartupPath
247 Then
= Image.FromFile(Application.StartupPath
= Image.FromFile(Application.StartupPath
= Image.FromFile(Application.StartupPath
= Image.FromFile(Application.StartupPath
255 Then
= Image.FromFile(Application.StartupPath
= Image.FromFile(Application.StartupPath
= Image.FromFile(Application.StartupPath
= Image.FromFile(Application.StartupPath
119 Then
= Image.FromFile(Application.StartupPath
= Image.FromFile(Application.StartupPath
= Image.FromFile(Application.StartupPath
= Image.FromFile(Application.StartupPath
127 Then
= Image.FromFile(Application.StartupPath
= Image.FromFile(Application.StartupPath
= Image.FromFile(Application.StartupPath
= Image.FromFile(Application.StartupPath

&
&
&
&

"\1.png")
"\0.png")
"\0.png")
"\1.png")

:
:
:
:

lbl1.Text
lbl2.Text
lbl3.Text
lbl4.Text

=
=
=
=

"ON"
"OFF"
"OFF"
"ON"

&
&
&
&

"\1.png")
"\0.png")
"\1.png")
"\0.png")

:
:
:
:

lbl1.Text
lbl2.Text
lbl3.Text
lbl4.Text

=
=
=
=

"ON"
"OFF"
"ON"
"OFF"

&
&
&
&

"\1.png")
"\0.png")
"\1.png")
"\1.png")

:
:
:
:

lbl1.Text
lbl2.Text
lbl3.Text
lbl4.Text

=
=
=
=

"ON"
"OFF"
"ON"
"ON"

&
&
&
&

"\1.png")
"\1.png")
"\0.png")
"\0.png")

:
:
:
:

lbl1.Text
lbl2.Text
lbl3.Text
lbl4.Text

=
=
=
=

"ON"
"ON"
"OFF"
"OFF"

&
&
&
&

"\1.png")
"\1.png")
"\0.png")
"\1.png")

:
:
:
:

lbl1.Text
lbl2.Text
lbl3.Text
lbl4.Text

=
=
=
=

"ON"
"ON"
"OFF"
"ON"

&
&
&
&

"\1.png")
"\1.png")
"\1.png")
"\0.png")

:
:
:
:

lbl1.Text
lbl2.Text
lbl3.Text
lbl4.Text

=
=
=
=

"ON"
"ON"
"ON"
"OFF"

&
&
&
&

"\1.png")
"\1.png")
"\1.png")
"\1.png")

:
:
:
:

lbl1.Text
lbl2.Text
lbl3.Text
lbl4.Text

=
=
=
=

"ON"
"ON"
"ON"
"ON"

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles


MyBase.Load
Out(&H378, 0)
tmrsensor.Enabled = True
End Sub
Private Sub Btn1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btn1.Click
If lbl1.Text <> "ON" Then
aux(0) = 1
Else
aux(0) = 0
End If
enciende()
End Sub
Private Sub Btn2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btn2.Click
If lbl2.Text <> "ON" Then
aux(1) = 2
Else
aux(1) = 0
End If
enciende()
End Sub
Private Sub Btn3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btn3.Click
If lbl3.Text <> "ON" Then
aux(2) = 4
Else
aux(2) = 0
End If
enciende()
End Sub
Private Sub Btn4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btn4.Click
If lbl4.Text <> "ON" Then
aux(3) = 8
Else
aux(3) = 0
End If
enciende()
End Sub
Private Sub btne_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btne.Click
Dim i As Integer
For i = 0 To UBound(aux)
aux(i) = 2 ^ i
Next

enciende()
End Sub
Private Sub btna_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btna.Click
Dim i As Integer
For i = 0 To UBound(aux)
aux(i) = 0
Next
enciende()
End Sub
Private Sub enciende()
Dim dato As Integer = 0
Dim i As Integer
For i = 0 To UBound(aux)
dato = dato + aux(i)
Next
Out(&H378, dato)
End Sub
End Class

Control de Luces de 110V C.A.

En este caso a no explicaremos el cdigo de este formulario debido a que es casi idntico al
anterior y el lector sabr interpretarlo.

Cdigo completo del control de Luces


Public Class control_de_luces
Dim AUX As Integer = 0
Private Sub btn1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btn1.Click
If lbl1.Text <> "ON" Then
AUX = 1
Else
AUX = 0
End If
enciende()
End Sub
Private Sub enciende()
Out(&H378, AUX)
End Sub
Private Sub control_de_luces_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles MyBase.Load
Out(&H378, 0)
sensor.Enabled = True
End Sub
Sub luces(ByVal valor As Short)
If valor = 127 Then
LBL.Visible = True
ElseIf valor = 223 Then
PCT.Image = Image.FromFile(Application.StartupPath & "\0.png") : lbl1.Text = "OFF"
LBL.Visible = False
ElseIf valor = 95 Then
PCT.Image = Image.FromFile(Application.StartupPath & "\1.png") : lbl1.Text = "ON"
LBL.Visible = False
End If
End Sub
Private Sub SENSOR_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
SENSOR.Tick
luces(Inp(&H379))
End Sub
End Class

También podría gustarte