Controlar el Puerto Paralelo con Visual Basic.NET

julio 23 201020 comentarios

Guardado en : Hardware, Microsoft, Programación

¿Qué es el Puerto Paralelo?

Un puerto paralelo es una interfaz entre un ordenador y un periférico cuya principal característica es que los bits de datos viajan juntos enviando un byte completo o más a la vez. Es decir, se implementa un cable o una vía física para cada bit de datos formando un bus. El cable paralelo es el conector físico entre el puerto paralelo y el periférico. En un puerto paralelo habrá una serie de bits de control en vías aparte que irá en ambos sentidos por caminos distintos. En contraposición al puerto paralelo está el Puerto serie, que envía los datos bit a bit por el mismo hilo.

¿Cómo funciona el Puerto Paralelo?

La mayoría de los puertos paralelos de la parte posterior de las computadoras compatibles poseen un conector DB-25. Esto es extraño, puesto que este conector es el de serie que se utiliza para los interfaces serie. El conector es normalmente hembra (tiene orificios en lugar de patitas) para distinguirlo de los conectores serie que son habitualmente machos y que puede tener también la computadora. Sin embargo, utiliza un conector DB-25 macho para su interfaz paralelo (por ser algo diferente).
La función de cada terminal del conector DB-25 se muestra en la siguiente imagen. Las señales que ocupan esas terminales se pueden dividir en cuatro grupos básicos: tierras, salidas de datos, entradas de dialogo y salidas de dialogo. En la imagen las tierras se indican con círculos, las entradas de dialogo se indican con flechas que apuntan al conector y las salidas (tanto de datos como de dialogo) tienen flechas que apuntan hacia afuera del conector. (Note que algunas de las líneas tienen una abreviatura convencional que se indica entre paréntesis.)

Librería Inpout32.dll (Visual Basic.NET)

Para trabajar con puertos bajo VB.NET es necesario el uso de una librería que contenga funciones de Acceso a las direcciones de los puertos. Esta librería es diferente dependiendo del tipo de puerto a trabajar. La librería INPOUT32.DLL contiene las instrucciones necesarias para el manejo de los Puertos Paralelos.

Para accesar al puerto paralelo en Windows se requiere hacer uso de unas funciones que vienen en la librería inpout32.dll.
Poner la librería correspondiente en la carpeta c:\windows\system32
Agregar el módulo inpout 32.bas al programa realizado en Visual Basic y listo ya puedes hacer uso de las funciones para accesar al puerto paralelo:

Inp – Para leer el puerto (Entrada)
Out – para escribir al puerto (Salida)

Desarrollo de la práctica

Material:

  • Cautín
  • Estaño
  • Pasta para soldar
  • Protoboard
  • 2 Mts cable UTP
  • 2 Mts cable (1 hilo)
  • 5 Leds
  • 1 Conector Paralelo Macho

Procedimiento:

Primero pelamos 10 cm del cable UTP por ambos extremos y separamos los hilos, de la misma forma pelamos 1 cm de cada uno de los hilos de cada extremo, una vez realizado esto procedemos a soldar los hilos del cable en el conector macho, para esto se deben localizar los pines en el conector que están enumerados, localizamos pines del 2 al 9 que son los utilizados para la transferencia de datos, una vez localizados los pines procedemos a soldar ,esto se hace en el orden que ustedes prefieran siempre y cuando recuerden la secuencia, una vez hecho esto tomamos el cable de un hilo y pelamos en cada extremo 1 cm. Una vez hecho esto localizamos en el conector el pin 25 que es el de tierra (del pin 18 al 25 son tierra).

Una vez realizado todo este procedimiento pasaremos a la protoboard, en la protoboard tenemos que localizar la serie negativa que esta de azul una vez encontrada hay que introducir el cable de tierra en el primer orificio de la seria del polo negativo, una vez hecho esto tomamos los leds y ubicamos el polo negativo que es la patita más corta y la insertamos en la columna negativa y el positivo la insertamos en la columna “A” y que ambas filas coincidan y así con los leds restantes sucesivamente luego pasamos a conectar el cable UTP ala protoboard para esto tenemos que llevar el mismo orden que en el conector paralelo respectivamente ,localizamos el primer hilo a introducir y lo insertamos en la columna “B” de la forma que la fila del led coincida con este y así sucesivamente con los demás con su respectivo orden .

Programa

Para poder manejar puertos en Visual Basic.Net es necesario contar con la librería Inpout32.dll de la cual hablamos anteriormente reiterando que es necesario Poner la librería correspondiente en la carpeta c:\windows\system32 una vez hecho eso tenemos que crear una clase en nuestro proyecto donde se importa la librería .

Imports System
Imports System.Runtime.InteropServices
 
Public Class Puerto
 _
 Public Shared Function output(ByVal adress As Integer, ByVal value As Integer) As Boolean
 
    End Function
 
End Class

Una vez hecho esto pasamos a nuestro formulario e insertamos un botón, en este botón probaremos si todo sale correctamente en el botón ira el siguiente código:

Private Sub Probar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Probar.Click
        Puerto.output(888, 255)
    End Sub

Para poder encender el led numero 1 ,2 y 3 de nuestra Protoboard necesitamos el siguiente codigo que ira dentro de un boton como se muestra respectivamente :

Private Sub Led1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Led1.Click
        Puerto.output(888, 1)
End Sub
Private Sub Led2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Led22.Click
        Puerto.output(888, 2)
    End Sub
 
    Private Sub Led3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Led3.Click
        Puerto.output(888, 4)
    End Sub

888 porque es la dirección hexadecimal que utiliza VB.NET para mandar señal al puerto y 1,2 y 4 por que es la dirección donde esta ubicada el primer led para poder saber la dirección del led se debe hacer lo siguiente:
Los pines se enumeraran del 0 en adelante en este caso del 0 al 7 tomando referencia los pines del conector del 2 al 9 se realiza la siguiente operación:

Led Pin
1 3
2 4
3 5
4 6
5 7
6 8
7 9

Tomando en cuenta la tablita anterior se realiza lo siguiente:
2^0 (led)=1 (direccion en VB.NET)
2^1=2
2^2=4
2^3=8
2^4=16
2^5=32
2^6=64
2^7=128

Esa es toda la operación y así se realiza sucesivamente.
Este es el ejemplo, para esto se necesita inserta 8 botones y 1 timer el formulario y la clase anteriormente mencionada.

Public Class Form1
    Dim i As Integer = 0
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Puerto.output(888, 0)
    End Sub
 
    Private Sub Form1_FormClosed(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles MyBase.FormClosed
        Puerto.output(888, 0)
    End Sub
 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Puerto.output(888, 1)
    End Sub
 
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Puerto.output(888, 2)
    End Sub
 
    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        Puerto.output(888, 4)
    End Sub
 
    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        Puerto.output(888, 8)
    End Sub
 
    Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
        Puerto.output(888, 16)
    End Sub
 
    Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
        Puerto.output(888, 0)
        Timer1.Stop()
    End Sub
 
    Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click
        Puerto.output(888, 255)
        Timer1.Stop()
    End Sub
 
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
 
        TextBox1.Text = CStr(i)
        i = i + 1
 
        If i = 1 Then
            Puerto.output(888, 1)
        End If
        If i = 2 Then
            Puerto.output(888, 2)
        End If
        If i = 3 Then
            Puerto.output(888, 4)
        End If
        If i = 4 Then
            Puerto.output(888, 8)
        End If
        If i = 5 Then
            Puerto.output(888, 16)
        End If
 
        If i = 6 Then
            Puerto.output(888, 255)
        End If
 
        If i = 7 Then
            Puerto.output(888, 16)
        End If
 
        If i = 8 Then
            Puerto.output(888, 8)
        End If
 
        If i = 9 Then
            Puerto.output(888, 4)
        End If
        If i = 10 Then
            Puerto.output(888, 2)
        End If
        If i = 11 Then
            Puerto.output(888, 1)
        End If
        If i = 12 Then
            Puerto.output(888, 255)
        End If
 
        If i = 13 Then
            i = 0
        End If
 
    End Sub
 
    Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.Click
 
        Timer1.Enabled = True
 
    End Sub
End Class

Este programa lo que realiza es encender led por led según el botón que se presione correspondientemente a cada led de 1 al 5, con otro botón enciende todos los leds, otro desactiva el led cuando alguno esta encendido y por último se hiso una pequeña muestra de cómo se podría implementar con un timer para que cada led encienda cada decima de segundo uno tras otro.

Con esto damos por concluido este tutorial que espero le sirva y sea de su agrado cualquier duda o sugerencia hacerla con toda confianza.

Quizá te interese :

Acerca del autor:

Soy un chavo de 22 años ,estoy en la última etapa de mi carrera (Ingeniería en sistemas computacionales) mi objetivo profesional es desarrollar mi creatividad y poner en acción todos los conocimientos que he adquirido dentro y fuera de mi carrera, así mismo pretendo desarrollar mis habilidades técnicas y adquirir experiencia, integrando mis conocimientos, valores y habilidades para desarrollar mi trabajo con la mayor eficiencia y eficacia posible, y darle un valor agregado a mi trabajo, dando lo mejor de mí en mis labores.

20 Respuestas a “Controlar el Puerto Paralelo con Visual Basic.NET”

  1. kevin dice:

    y para recibir dato?? osea para recibir 1 ó 0 cunado presionamos un pulsador??

  2. Meta dice:

    Hola:

    Puedes encontar el manual completo sobre VB .net y C# en PDF con código fuente completo incluido en este enlace.

    http://electronica-pic.blogspot.com/2010/07/interfaz-puerto-paralelo-lpt.html

    Saludo.

  3. XLSchwarz dice:

    it was very interesting to read http://www.ubicuos.com
    I want to quote your post in my blog. It can?
    And you et an account on Twitter?

  4. jorge dice:

    hola:
    adonde puedo encontrar el modulo , necesario para utilizar la librería <inpout32.dll es q sin el no me funciona el proyecto si me puede ayudar muchas gracias

  5. hola , lo puedes descargar entrando a este link http://www.dll-download-system.com/dlls/inpout32.zip espero haberte ayudado .

  6. Miguel dice:

    Hola estamos llevando acabo un proyecto y necesito saber como detectar voltaje por el puerto paralelo mediante c sharp.
    espero y me ayuden.
    gracias.

  7. Daniel dice:

    Miguel,
    Por lo que sé, para detectar voltajes más bien es un asunto de un circuito especializado y la salida de eso pasarla a un decodificador analógico-digital (Ya con la salida digital puedes pasarlo al puerto sin problemas).
    Espero te sirva esto como referencia.
    Esquema voltimetro digital

    Saludos!

  8. nico dice:

    tengo un problema, los leds andan con solo conectarlos a mi puerto paralelo y al usar el programa no se apagan ni se prenden, alguno me da una solucion?

  9. Hector David dice:

    TRATE DE HACERLO PERO EL ESTADO INICIAL DE MI PUERTO PARALELOES DE 5 VOLTIOS INDEPENDIETEMTE DE QUE ENECUTE O NO EL PROGRAMA NO SE POR QUE NO ME FUNCIONA

  10. leo dice:

    para nico o hector david…..

    me pasa lo mismo q a uds… el esta

  11. leo dice:

    para nico o hector david…..

    me pasa lo mismo q a uds… el estado inicial de mi puerto
    paralelo ya es de 5 v … como lo solucionaron ?

    saludos

    barmanagers@hotmail.com

  12. Victor V dice:

    Hola,
    ¿Alguien sabe cómo mandar datos (bits) al puerto paralelo con Visual Studio 2010?

  13. Jose Andres dice:

    ESTOY TRABAJANDO CON PUERTO PARALELO,
    NECESITO QUE MI PROGRAMA RECONOSCA ENTRADAS DE DATOS,
    COMO SERIA EL CODIGO, O EL MODULO PARA HACER QUE ESTE RECONOSCA ESOS DATOS !!! SALUDOS!

  14. Jose Andres dice:

    COMO HACER PARA QUE MI APLICACION RECONOSCA DATOS, CUANDO ELLOS VIENE DEL PUERTO PARALELO ?

  15. patyto dice:

    yo tengo presentar un proyecto que consiste en manejar un semaforo a traves de visual basic 6, el usuario es el que introduce los tiempos de cada led,, para ello tengo k utilizar la libreria io.dll , ya la descargue y se k tengo k ponerla en C:\WINDOWS\System32 pero no tengo ni la menor idea komo hacer eso
    pueden ayudarmee plissss

  16. Jumaker dice:

    En visual Estudio 2010?

  17. Jumaker dice:

    Lo estoy haciendo en VB 2010 y no me funciona no realiza ninguna acción …. espero pronta respuesta

    salu2

  18. Jumaker dice:

    Un saludo a todos

    Bueno gracias a Dios, ya puede hacerlo en vb 2010, el único problema es la librería inpout32.dll que solo funciona para xp.

    Salu2

  19. MarcoGT dice:

    Que tal amigos… Estoy tratando de encender 19 leds y que cada uno se encienda y se apage en un tiempo determinado… en C sharp Aplicacion de windows form 2010. Si alguien me puede dar una pauta desde ya les doy mis mas sinceros agradecimientos…marconetzone@hotmail.com

Deja un comentario


Licencia y uso

Las técnicas demostradas en los tutoriales pueden ser utilizadas sin ninguna limitación y tampoco es obligatorio dar una atribución.


Los textos, imágenes y tutoriales son propiedad de sus respectivos autores, nuestro contenido se encuentra bajo licencia Creative Commons Share-Alike.

Escribe algo para el sitio

El escribir un tutorial o un artículo, mandarnos un enlace para Ubicuos, no solamente es una forma de obtener publicidad, si no también de dar algo a la comunidad y nosotros te lo recompensamos con los premios del mes! Leer más de nuestras promociones

¿Sugerencias?

Este es TU sitio, si tienes sugerencias o ideas de cómo podemos mejorarlo para ti, ¡Por favor háznoslos saber!

Hacemos nuestro mayor esfuerzo en proporcionar un sitio útil y amigable y esperamos que disfrutes tu tiempo aquí.

Ayuda a Difundir

Te gusta Ubicuos?

Ve las formas en que nos puedes apoyar.

Apoyando a Ubicuos.com

Submit your linkClose

-->