SlideShare una empresa de Scribd logo
1 de 7
Tutorial Básico Control Puerto Paralelo con Visual Basic 6.0
Introducción.

Este pequeño tutoríal proporciona los pasos básicos para controlar el puerto paralelo
desde Visual Basic 6.0. Lo que se intenta es poder enviar pulsos o señales por medio de
este y recibir pulsos o señales por medio de el.

La información que se encuentra en este texto fue adquirida en Internet y conocimientos
adquiridos (experiencia del escritor).

Material.

Puerto paralelo.
Microsoft Visual Studio 6.0.
1 Led.

   Empecemos con el puerto paralelo. Este es un conecto DB25 obvio con 25 pines lo
   cuales están numerados y tienen una función especifica cada uno de ellos.




   Podemos ordenar cada uno de los pines o bytes en:

   Dataport

   pin 2 - D0   pin 3 - D1
   pin 4 - D2   pin 5 - D3
   pin 6 - D4   pin 7 - D5
   pin 8 - D6   pin 9 - D7

   Statusport

   pin 10 – ACK       pin 11 - BUSY
   pin 12 - PAPER END pin 13 - SELECT IN
   pin 15 - ERROR



                                                                                     1
ControlPort

   pin 1 – STROBE          pin 14 - AUTO FEED
   pin 16 – INIT           pin 17 - SELECT

   La parte de GND, son los tierra
   del 18 al 25


   1. El Dataport se usa como salida.
   2. El Statusport se usa como entrada.
   3. El controlport se usa de las dos formas anteriores.

Es decir que para encender led’s mandando voltaje al puerto usaremos el Dataport, para
recibir niveles de voltaje usaremos el Statusport.

Es importante no conectar al revés las cosas en el puerto ya que existe la posibilidad de
dañarlo.

En este caso mencionare la forma en que se conecta y controla pero también mencionare
que mi computadora no contaba con puerto paralelo. Una vez adquirido el puerto
paralelo de tipo PC-I fue colocado en la ranura correspondiente y se le instalo el
controlador indicado.

El puerto paralelo maneja direcciones de memoria asignadas por el SO. No se si son
pilas o colas pero son direcciones de memoria, estas direcciones están numeradas en
código hexadecimal y son utilizadas normalmente para enviar ceros o unos a una
impresora. Por ejemplo:

H378

* Donde la H indica que es hexadecimal.
* El 378 es el número hexadecimal.

Una vez dicho y entendido esto se debe tener alguna forma de controlar esto desde el
lenguaje visual Basic, desafortunadamente al ser un lenguaje de alto nivel visual no
tiene la capacidad de controlar hardware por si solo, este tipo de circunstancias se
controlan con C o C++ ya que estos lenguajes tiene esa capacidad.

Afortunadamente para nosotros se puede aprovechar la característica de Windows de
utilizar DLL (Dynamic Linking Library (Bibliotecas de Enlace Dinámico)) y ya que
algún experto programo una DLL en C++ para controlar este dispositivo nosotros
podemos utilizarla en Visual Basic.

Esta DLL mágica es la inpout32 la cual tiene la capacidad de mandar y recibir señales o
pulsos por el puerto paralelo. Existen varias versiones, varias de ellas no funcionan en
XP y mucho menos en Vista, pero después de buscar y buscar por Internet encontré una
que si funciona perfectamente en XP y Vista incluso te da su código y muchas cosas
mas, esta DLL se supone que esta adjunta con este tutorial.



                                                                                        2
Una vez comprendido esto hablemos de las direcciones de memoria anteriormente
mencione la dirección de memoria que utiliza el puerto paralelo para funcionar esta se
puede ver en:

Botón de inicio/Mi PC/botón derecho del ratón/propiedades/hardware/administrador de
dispositivos/puertos (COM & LPT)/doble clic en tu puerto LPT/recursos.




Como se ve en la imagen los primeros intervalos corresponden a Dataport (salidas del
puerto paralelo) es decir:

  Pin         2         3         4         5         6        7          8        9
Memoria      378       379       37A       37B       37C      37D        37E      37F

Como se puede ver se omitió el 0 y también se puede observar que es la misma
dirección que usamos en el ejemplo del código hexadecimal.

El otro intervalo es para el Statusport y funciona de la misma manera.

Esto no quiere decir que para todas las maquinas sea la misma. Como mencione al
principio de este escrito mi PC no contaba con puerto paralelo por lo que le agregue un
PC-I y mis direcciones quedaron de la siguiente manera.




Es muy recomendable siempre checar las direcciones para no presentar errores ni
confusiones, este simple paso ahorra muchos dolores de cabeza.


                                                                                        3
Para la programación se necesita comprender la forma en que serán enviados los datos,
señales o pulsos al puerto y es de la manera siguiente.

Se envían datos binarios y dependiendo del valor son los pines utilizados:

    Pin              2        3        4         5          6           7            8            9
Valor Binario        1       10       100      1000       10000      100000       100000      10000000
                                                                                     0
Valor decimal        1        2        4         8          16          32          64            128

Por ejemplo:

Si queremos mandar señales por el pin 2 y el 5 pues se hace la suma.

1+8=9

Y ese valor es el que se envía en binario 1001.

Digamos que necesitamos el pin 5 y 9 la suma es:

8 + 128 = 136

Y en binario es 10001000.

Si queremos prender todos los led’s conectados al puerto paralelo pues se pone:

Valor.- 1111111 = 255

Si queremos apagar todos los led’s conectados al puerto paralelo pues se pone:

Valor.- 0 = 0


NOTAS:
  • Se puede ver que el pin de menor peso es el numero 2 por lo que hay que
    empezar a contar por hay.
  • Normalmente el puerto paralelo esta enviando señal por todos los pines.
  • No es necesario enviar el dato binario ya que la DLL inpout32 los convierte
    basta con enviar el dato decimal.

Es hora de comenzar.

Para poder enviar datos al puerto paralelo desde visual Basic utilizando la DLL
inpout32 se usa el comando Out:

Su sintaxis es:
out (numero de pin desde donde se desea empezar a contar “pin con menor peso”, dato en decimal o binario).




                                                                                                         4
Por ejemplo:

Out &H378, 255

   Donde: Se omite el paréntesis.
          &H indica que el valor es hexadecimal.
          Se separa con “,”.
          El 255 indica que pines serán usados.

Normalmente se utiliza la primera dirección de memoria y el pin numero 2 como el de
menor peso, de no ser así cambia la suma y los valores adquiridos por los pines que le
siguen al de menor peso.

Programación:

   1) Creamos un nuevo proyecto EXE estándar en VB6 en el formulario agregamos
      2 botones.

                 Nombre                                       Texto
                Command1                                     Prendido
                Command2                                     Apagado




   2) Abrimos el código y agregamos.

       Private Sub Command1_Click()
              Out &H378, 0
       End Sub

       Private Sub Command2_Click()
              Out &H378, 1
       End Sub

Agregamos un modulo “Archivo/agregar modulo” y ponemos.

       Public Declare Function Inp Lib "inpout32.dll" _
       Alias "Inp32" (ByVal PortAddress As Integer) As Integer
       Public Declare Sub Out Lib "inpout32.dll" _
       Alias "Out32" (ByVal PortAddress As Integer, ByVal Value As Integer)

      Es importante copiar y pegar la DLL inpout32 en C:WINDOWSsystem32 si
      ponemos el código en el modulo tal cual.



                                                                                         5
Yo y mucha gente mas a escuchado la frase “los que es del cesar a l cesar” pues
      en nuestro caso seria “lo que es del SO. Al SO.” A que me refiero con esto no es
      muy recomendable mezclar cosas vitales del SO. Con otras cosas externas por lo
      que nuestra DLL seria mejor ponerla en otro lugar, digamos que se instala
      nuestro programa en una PC pues la DLL debería estar en la carpeta donde se
      instalo, en este caso supongamos que la tenemos en un pendriver o usb con la
      letra H: asignada y una carpeta con nombre serial, pues el código seria el
      siguiente:

       Public Declare Function Inp Lib "H: serialinpout32.dll" _
       Alias "Inp32" (ByVal PortAddress As Integer) As Integer
       Public Declare Sub Out Lib "inpout32.dll" _
       Alias "Out32" (ByVal PortAddress As Integer, ByVal Value As Integer)




       Como ven lo único que cambia es el path, ¡que fácil es la vida verdad!

   3) Si corremos el programa y presionamos los botones pues no pasa nada y eso es
      bueno quiere decir que esta bien, lo que pasa es que no esta conectado nada.

   Si te sale un error como este al momento de compilar o apretar un boton.




Pueden ser 2 cosas.

   1) La DLL inpout32 no esta en C:WINDOWSsystem32 o no esta en el path
      indicado.
             Solución.-Verifica que esta en el lugar indicado.




                                                                                     6
2) La DLL inpout32 no es compatible con XP o Vista es una versión anterior que
       solo funciona en sus predecesores de XP. Claro si su SO. Es Windows XP o
       Vista.
              Solución.- Usa la que se encuentra con este tutorial.

Yo e mirado que es necesario para controlar un solo pin o bit que prenda un led lo
siguiente:

Material Necesario

1 Puerto paralelo libre
1 Moc3010m
1 Triac (A los Amperes que trabaje el dispositivo I=P/V)
1 Resistencia 560 Ohms
1 Resistencia 220 Ohms
1 Led
1 Conector Db25 Macho
Cable para interconexiones (Puede ser del de Red de 8 Hilos)
1 Fusible (Al amperaje del dispositivo)
1 Clavija CA con cable


Pues la verdad yo no ocupe tanto, solo use el puerto paralelo libre una extensión de
puerto paralelo es decir un cable de puerto paralelo y un led.

Conectar el led y probar nuestro programa.

1) Conectamos la extensión al puerto paralelo.
2) En el pin 2 conectamos la pata del led (+).
3) En cualquier pin entre 18 y25 conectamos la pata (-).
4) Corremos nuestro programa.
5) Apretamos los botones y miramos.

Para leer un dato desde el puerto se usa la instrucción Inp.

Más información de esto en:

http://foro.elhacker.net/programacion_general/introduccion_a_la_programacion_por_pu
ertos_en_visual_basic-t47786.0.html


Espero que esto le sea de ayuda, cualquier duda comentario o sugerencia escriban a
daco_tutor@hotmail.com

Tutorial Básico Control Puerto Paralelo con Visual Basic 6.0 realizado por:
Ing. Diego Alberto Ortega Carreto




                                                                                     7

Más contenido relacionado

La actualidad más candente

Display 7 Segmentos
Display 7 SegmentosDisplay 7 Segmentos
Display 7 SegmentosOswST
 
Tema 6: Introducción al Diseño Secuencial: Contadores y Registros.
Tema 6: Introducción al Diseño Secuencial: Contadores y Registros.Tema 6: Introducción al Diseño Secuencial: Contadores y Registros.
Tema 6: Introducción al Diseño Secuencial: Contadores y Registros.Manuel Fernandez Barcell
 
Estructuras de control selectivas
Estructuras de control selectivasEstructuras de control selectivas
Estructuras de control selectivasReina Rodriguez
 
Electrónica digital: circuitos multiplexores y demultiplexores
Electrónica digital: circuitos multiplexores y demultiplexores Electrónica digital: circuitos multiplexores y demultiplexores
Electrónica digital: circuitos multiplexores y demultiplexores SANTIAGO PABLO ALBERTO
 
Compuertas Logicas
Compuertas LogicasCompuertas Logicas
Compuertas LogicasDavid
 
Práctica de flip flops
Práctica de flip flopsPráctica de flip flops
Práctica de flip flopskartorrealba
 
Basics of arduino uno
Basics of arduino unoBasics of arduino uno
Basics of arduino unoRahat Sood
 
Inyector y trazador de señal
Inyector y trazador de señalInyector y trazador de señal
Inyector y trazador de señalJomicast
 
Manual de Uso Detallado de Proteus
Manual de Uso Detallado de ProteusManual de Uso Detallado de Proteus
Manual de Uso Detallado de ProteusPaolaPerez263
 
Floating point presentation
Floating point presentationFloating point presentation
Floating point presentationSnehalataAgasti
 
Mini Proyecto Arduino
Mini Proyecto Arduino Mini Proyecto Arduino
Mini Proyecto Arduino Brenn Cabreera
 
Input, Output Ppt
Input, Output PptInput, Output Ppt
Input, Output PptLisa Durff
 
Mantenimiento 04 - regulador de voltaje (63170)
Mantenimiento   04 - regulador de voltaje (63170)Mantenimiento   04 - regulador de voltaje (63170)
Mantenimiento 04 - regulador de voltaje (63170)guillob90
 
Compuertas logicas
Compuertas logicasCompuertas logicas
Compuertas logicasAly Olvera
 
Electrónica digital: Sumadores y restadores
Electrónica digital: Sumadores y restadores Electrónica digital: Sumadores y restadores
Electrónica digital: Sumadores y restadores SANTIAGO PABLO ALBERTO
 

La actualidad más candente (20)

Display 7 Segmentos
Display 7 SegmentosDisplay 7 Segmentos
Display 7 Segmentos
 
Tema 6: Introducción al Diseño Secuencial: Contadores y Registros.
Tema 6: Introducción al Diseño Secuencial: Contadores y Registros.Tema 6: Introducción al Diseño Secuencial: Contadores y Registros.
Tema 6: Introducción al Diseño Secuencial: Contadores y Registros.
 
Estructuras de control selectivas
Estructuras de control selectivasEstructuras de control selectivas
Estructuras de control selectivas
 
Practica 7 Flip Flop
Practica 7 Flip FlopPractica 7 Flip Flop
Practica 7 Flip Flop
 
Electrónica digital: circuitos multiplexores y demultiplexores
Electrónica digital: circuitos multiplexores y demultiplexores Electrónica digital: circuitos multiplexores y demultiplexores
Electrónica digital: circuitos multiplexores y demultiplexores
 
Compuertas Logicas
Compuertas LogicasCompuertas Logicas
Compuertas Logicas
 
Práctica de flip flops
Práctica de flip flopsPráctica de flip flops
Práctica de flip flops
 
Arduino c++ y puerto serie
Arduino c++ y puerto serieArduino c++ y puerto serie
Arduino c++ y puerto serie
 
Basics of arduino uno
Basics of arduino unoBasics of arduino uno
Basics of arduino uno
 
Inyector y trazador de señal
Inyector y trazador de señalInyector y trazador de señal
Inyector y trazador de señal
 
Comparador de magnitud (7485)
Comparador de magnitud (7485)Comparador de magnitud (7485)
Comparador de magnitud (7485)
 
Manual de Uso Detallado de Proteus
Manual de Uso Detallado de ProteusManual de Uso Detallado de Proteus
Manual de Uso Detallado de Proteus
 
Floating point presentation
Floating point presentationFloating point presentation
Floating point presentation
 
Mini Proyecto Arduino
Mini Proyecto Arduino Mini Proyecto Arduino
Mini Proyecto Arduino
 
Input, Output Ppt
Input, Output PptInput, Output Ppt
Input, Output Ppt
 
Teclado membrana
Teclado membranaTeclado membrana
Teclado membrana
 
Mantenimiento 04 - regulador de voltaje (63170)
Mantenimiento   04 - regulador de voltaje (63170)Mantenimiento   04 - regulador de voltaje (63170)
Mantenimiento 04 - regulador de voltaje (63170)
 
Compuertas logicas
Compuertas logicasCompuertas logicas
Compuertas logicas
 
Electrónica digital: Sumadores y restadores
Electrónica digital: Sumadores y restadores Electrónica digital: Sumadores y restadores
Electrónica digital: Sumadores y restadores
 
ciruitos digitales
ciruitos digitalesciruitos digitales
ciruitos digitales
 

Destacado

Apagar y encender led con arduino y visual studio 2015
Apagar y encender led con arduino y visual studio 2015Apagar y encender led con arduino y visual studio 2015
Apagar y encender led con arduino y visual studio 2015Ángel Acaymo M. G.
 
Interfaz visual basic 6 y arduino
Interfaz visual basic 6 y arduinoInterfaz visual basic 6 y arduino
Interfaz visual basic 6 y arduinoÁngel Acaymo M. G.
 
Pic Rs232 puerto serie con PIC16F84A
Pic Rs232 puerto serie con PIC16F84APic Rs232 puerto serie con PIC16F84A
Pic Rs232 puerto serie con PIC16F84AÁngel Acaymo M. G.
 
Luz por detector de movimiento y crepuscular Senpir
Luz por detector de movimiento y crepuscular SenpirLuz por detector de movimiento y crepuscular Senpir
Luz por detector de movimiento y crepuscular SenpirÁngel Acaymo M. G.
 
Formulario windows con visual c++
Formulario windows con visual c++Formulario windows con visual c++
Formulario windows con visual c++Ángel Acaymo M. G.
 
Puerto paralelo en c
Puerto paralelo en cPuerto paralelo en c
Puerto paralelo en cmorriz1
 
ARDUINO: Plataforma de hardware libre
ARDUINO: Plataforma de hardware libreARDUINO: Plataforma de hardware libre
ARDUINO: Plataforma de hardware libreLuis Manuel Diaz
 
Formulario windows con visual c++ 2017
Formulario windows con visual c++ 2017Formulario windows con visual c++ 2017
Formulario windows con visual c++ 2017Ángel Acaymo M. G.
 
Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A
Manual Interfaz con VC++ y VB para puerto serie y PIC16F84AManual Interfaz con VC++ y VB para puerto serie y PIC16F84A
Manual Interfaz con VC++ y VB para puerto serie y PIC16F84AÁngel Acaymo M. G.
 
Pasos Para Crear un Formulario Con Base de Datos En Visual Basic
Pasos Para Crear un Formulario Con Base de Datos En Visual BasicPasos Para Crear un Formulario Con Base de Datos En Visual Basic
Pasos Para Crear un Formulario Con Base de Datos En Visual BasicMaybel_Lopez
 
Php basico y avanzado
Php basico y avanzadoPhp basico y avanzado
Php basico y avanzadodrakatiadiaz
 
Crear formulario windows form con visual c++ 2015
Crear formulario windows form con visual c++ 2015Crear formulario windows form con visual c++ 2015
Crear formulario windows form con visual c++ 2015Ángel Acaymo M. G.
 
Servidor Web Apache, PHP, MySQL.
Servidor Web Apache, PHP, MySQL.Servidor Web Apache, PHP, MySQL.
Servidor Web Apache, PHP, MySQL.Ángel Acaymo M. G.
 
Presentación arduino conferencia
Presentación arduino conferenciaPresentación arduino conferencia
Presentación arduino conferenciagruposirp
 

Destacado (20)

Interfaz puerto paralelo LPT
Interfaz puerto paralelo LPTInterfaz puerto paralelo LPT
Interfaz puerto paralelo LPT
 
Apagar y encender led con arduino y visual studio 2015
Apagar y encender led con arduino y visual studio 2015Apagar y encender led con arduino y visual studio 2015
Apagar y encender led con arduino y visual studio 2015
 
Interfaz visual basic 6 y arduino
Interfaz visual basic 6 y arduinoInterfaz visual basic 6 y arduino
Interfaz visual basic 6 y arduino
 
Manual Ic Prog
Manual Ic ProgManual Ic Prog
Manual Ic Prog
 
Pic Rs232 puerto serie con PIC16F84A
Pic Rs232 puerto serie con PIC16F84APic Rs232 puerto serie con PIC16F84A
Pic Rs232 puerto serie con PIC16F84A
 
Luz por detector de movimiento y crepuscular Senpir
Luz por detector de movimiento y crepuscular SenpirLuz por detector de movimiento y crepuscular Senpir
Luz por detector de movimiento y crepuscular Senpir
 
Formulario windows con visual c++
Formulario windows con visual c++Formulario windows con visual c++
Formulario windows con visual c++
 
Puerto paralelo en c
Puerto paralelo en cPuerto paralelo en c
Puerto paralelo en c
 
Curso de visual basic 6
Curso de visual basic 6Curso de visual basic 6
Curso de visual basic 6
 
Microsoft Visual C++
Microsoft Visual C++Microsoft Visual C++
Microsoft Visual C++
 
ARDUINO: Plataforma de hardware libre
ARDUINO: Plataforma de hardware libreARDUINO: Plataforma de hardware libre
ARDUINO: Plataforma de hardware libre
 
Formulario windows con visual c++ 2017
Formulario windows con visual c++ 2017Formulario windows con visual c++ 2017
Formulario windows con visual c++ 2017
 
Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A
Manual Interfaz con VC++ y VB para puerto serie y PIC16F84AManual Interfaz con VC++ y VB para puerto serie y PIC16F84A
Manual Interfaz con VC++ y VB para puerto serie y PIC16F84A
 
Arduino + ethernet shield (1)
Arduino + ethernet shield (1)Arduino + ethernet shield (1)
Arduino + ethernet shield (1)
 
Pasos Para Crear un Formulario Con Base de Datos En Visual Basic
Pasos Para Crear un Formulario Con Base de Datos En Visual BasicPasos Para Crear un Formulario Con Base de Datos En Visual Basic
Pasos Para Crear un Formulario Con Base de Datos En Visual Basic
 
Php basico y avanzado
Php basico y avanzadoPhp basico y avanzado
Php basico y avanzado
 
Crear formulario windows form con visual c++ 2015
Crear formulario windows form con visual c++ 2015Crear formulario windows form con visual c++ 2015
Crear formulario windows form con visual c++ 2015
 
Interfaz java y arduino
Interfaz java y arduinoInterfaz java y arduino
Interfaz java y arduino
 
Servidor Web Apache, PHP, MySQL.
Servidor Web Apache, PHP, MySQL.Servidor Web Apache, PHP, MySQL.
Servidor Web Apache, PHP, MySQL.
 
Presentación arduino conferencia
Presentación arduino conferenciaPresentación arduino conferencia
Presentación arduino conferencia
 

Similar a Tutorial básico control puerto paralelo con visual basic 6.0

El AT mega8 es un microcontrolador excelente
El AT mega8 es un microcontrolador excelenteEl AT mega8 es un microcontrolador excelente
El AT mega8 es un microcontrolador excelenteJose Alva
 
Manual basico arduino
Manual basico arduinoManual basico arduino
Manual basico arduinoKetoc2k3
 
Contador de leds con puerto paralelo macho db 25 cu zumpango.
Contador de leds con puerto paralelo macho db 25 cu zumpango.Contador de leds con puerto paralelo macho db 25 cu zumpango.
Contador de leds con puerto paralelo macho db 25 cu zumpango.Leida Zuñiga
 
Taller practico iot fundación telefónica
Taller practico iot fundación telefónicaTaller practico iot fundación telefónica
Taller practico iot fundación telefónicaSara Alvarellos Navarro
 
Tutorial proton ide plus part 1
Tutorial proton ide plus part 1Tutorial proton ide plus part 1
Tutorial proton ide plus part 1dar851112
 
Programacion portafolio
Programacion portafolioProgramacion portafolio
Programacion portafolioalvarisnky
 
Práctica 10 Sistemas de Comunicación IDe
Práctica 10 Sistemas de Comunicación IDePráctica 10 Sistemas de Comunicación IDe
Práctica 10 Sistemas de Comunicación IDeUsuiTakumi17
 
Cuaderno_Arduino.pdf
Cuaderno_Arduino.pdfCuaderno_Arduino.pdf
Cuaderno_Arduino.pdfEdwin4321
 
Arduino: programación básica de Arduino
Arduino: programación básica de ArduinoArduino: programación básica de Arduino
Arduino: programación básica de ArduinoSANTIAGO PABLO ALBERTO
 
Tutorial proton ide plus part 1
Tutorial proton ide plus part 1Tutorial proton ide plus part 1
Tutorial proton ide plus part 1Alicia De Sousa
 

Similar a Tutorial básico control puerto paralelo con visual basic 6.0 (20)

Proyecto Arduino y Proteus
Proyecto Arduino y ProteusProyecto Arduino y Proteus
Proyecto Arduino y Proteus
 
El AT mega8 es un microcontrolador excelente
El AT mega8 es un microcontrolador excelenteEl AT mega8 es un microcontrolador excelente
El AT mega8 es un microcontrolador excelente
 
Manual basico arduino
Manual basico arduinoManual basico arduino
Manual basico arduino
 
Contador de leds con puerto paralelo macho db 25 cu zumpango.
Contador de leds con puerto paralelo macho db 25 cu zumpango.Contador de leds con puerto paralelo macho db 25 cu zumpango.
Contador de leds con puerto paralelo macho db 25 cu zumpango.
 
Netduino
NetduinoNetduino
Netduino
 
Taller practico iot fundación telefónica
Taller practico iot fundación telefónicaTaller practico iot fundación telefónica
Taller practico iot fundación telefónica
 
Tutorial proton ide plus part 1
Tutorial proton ide plus part 1Tutorial proton ide plus part 1
Tutorial proton ide plus part 1
 
Programacion portafolio
Programacion portafolioProgramacion portafolio
Programacion portafolio
 
Práctica 10 Sistemas de Comunicación IDe
Práctica 10 Sistemas de Comunicación IDePráctica 10 Sistemas de Comunicación IDe
Práctica 10 Sistemas de Comunicación IDe
 
Hack x crack_cuaderno_arduino
Hack x crack_cuaderno_arduinoHack x crack_cuaderno_arduino
Hack x crack_cuaderno_arduino
 
Cuaderno_Arduino.pdf
Cuaderno_Arduino.pdfCuaderno_Arduino.pdf
Cuaderno_Arduino.pdf
 
Cuaderno_Arduino.pdf
Cuaderno_Arduino.pdfCuaderno_Arduino.pdf
Cuaderno_Arduino.pdf
 
Cuaderno_Arduino.pdf
Cuaderno_Arduino.pdfCuaderno_Arduino.pdf
Cuaderno_Arduino.pdf
 
Arduino
ArduinoArduino
Arduino
 
Programación básica de Arduino
Programación básica de Arduino Programación básica de Arduino
Programación básica de Arduino
 
Arduino: programación básica de Arduino
Arduino: programación básica de ArduinoArduino: programación básica de Arduino
Arduino: programación básica de Arduino
 
Tutorial proton ide plus part 1
Tutorial proton ide plus part 1Tutorial proton ide plus part 1
Tutorial proton ide plus part 1
 
Puerto Paralelo
Puerto ParaleloPuerto Paralelo
Puerto Paralelo
 
Puertoparalelooooo
PuertoparaleloooooPuertoparalelooooo
Puertoparalelooooo
 
Curso de-mcu-proteus
Curso de-mcu-proteusCurso de-mcu-proteus
Curso de-mcu-proteus
 

Tutorial básico control puerto paralelo con visual basic 6.0

  • 1. Tutorial Básico Control Puerto Paralelo con Visual Basic 6.0 Introducción. Este pequeño tutoríal proporciona los pasos básicos para controlar el puerto paralelo desde Visual Basic 6.0. Lo que se intenta es poder enviar pulsos o señales por medio de este y recibir pulsos o señales por medio de el. La información que se encuentra en este texto fue adquirida en Internet y conocimientos adquiridos (experiencia del escritor). Material. Puerto paralelo. Microsoft Visual Studio 6.0. 1 Led. Empecemos con el puerto paralelo. Este es un conecto DB25 obvio con 25 pines lo cuales están numerados y tienen una función especifica cada uno de ellos. Podemos ordenar cada uno de los pines o bytes en: Dataport pin 2 - D0 pin 3 - D1 pin 4 - D2 pin 5 - D3 pin 6 - D4 pin 7 - D5 pin 8 - D6 pin 9 - D7 Statusport pin 10 – ACK pin 11 - BUSY pin 12 - PAPER END pin 13 - SELECT IN pin 15 - ERROR 1
  • 2. ControlPort pin 1 – STROBE pin 14 - AUTO FEED pin 16 – INIT pin 17 - SELECT La parte de GND, son los tierra del 18 al 25 1. El Dataport se usa como salida. 2. El Statusport se usa como entrada. 3. El controlport se usa de las dos formas anteriores. Es decir que para encender led’s mandando voltaje al puerto usaremos el Dataport, para recibir niveles de voltaje usaremos el Statusport. Es importante no conectar al revés las cosas en el puerto ya que existe la posibilidad de dañarlo. En este caso mencionare la forma en que se conecta y controla pero también mencionare que mi computadora no contaba con puerto paralelo. Una vez adquirido el puerto paralelo de tipo PC-I fue colocado en la ranura correspondiente y se le instalo el controlador indicado. El puerto paralelo maneja direcciones de memoria asignadas por el SO. No se si son pilas o colas pero son direcciones de memoria, estas direcciones están numeradas en código hexadecimal y son utilizadas normalmente para enviar ceros o unos a una impresora. Por ejemplo: H378 * Donde la H indica que es hexadecimal. * El 378 es el número hexadecimal. Una vez dicho y entendido esto se debe tener alguna forma de controlar esto desde el lenguaje visual Basic, desafortunadamente al ser un lenguaje de alto nivel visual no tiene la capacidad de controlar hardware por si solo, este tipo de circunstancias se controlan con C o C++ ya que estos lenguajes tiene esa capacidad. Afortunadamente para nosotros se puede aprovechar la característica de Windows de utilizar DLL (Dynamic Linking Library (Bibliotecas de Enlace Dinámico)) y ya que algún experto programo una DLL en C++ para controlar este dispositivo nosotros podemos utilizarla en Visual Basic. Esta DLL mágica es la inpout32 la cual tiene la capacidad de mandar y recibir señales o pulsos por el puerto paralelo. Existen varias versiones, varias de ellas no funcionan en XP y mucho menos en Vista, pero después de buscar y buscar por Internet encontré una que si funciona perfectamente en XP y Vista incluso te da su código y muchas cosas mas, esta DLL se supone que esta adjunta con este tutorial. 2
  • 3. Una vez comprendido esto hablemos de las direcciones de memoria anteriormente mencione la dirección de memoria que utiliza el puerto paralelo para funcionar esta se puede ver en: Botón de inicio/Mi PC/botón derecho del ratón/propiedades/hardware/administrador de dispositivos/puertos (COM & LPT)/doble clic en tu puerto LPT/recursos. Como se ve en la imagen los primeros intervalos corresponden a Dataport (salidas del puerto paralelo) es decir: Pin 2 3 4 5 6 7 8 9 Memoria 378 379 37A 37B 37C 37D 37E 37F Como se puede ver se omitió el 0 y también se puede observar que es la misma dirección que usamos en el ejemplo del código hexadecimal. El otro intervalo es para el Statusport y funciona de la misma manera. Esto no quiere decir que para todas las maquinas sea la misma. Como mencione al principio de este escrito mi PC no contaba con puerto paralelo por lo que le agregue un PC-I y mis direcciones quedaron de la siguiente manera. Es muy recomendable siempre checar las direcciones para no presentar errores ni confusiones, este simple paso ahorra muchos dolores de cabeza. 3
  • 4. Para la programación se necesita comprender la forma en que serán enviados los datos, señales o pulsos al puerto y es de la manera siguiente. Se envían datos binarios y dependiendo del valor son los pines utilizados: Pin 2 3 4 5 6 7 8 9 Valor Binario 1 10 100 1000 10000 100000 100000 10000000 0 Valor decimal 1 2 4 8 16 32 64 128 Por ejemplo: Si queremos mandar señales por el pin 2 y el 5 pues se hace la suma. 1+8=9 Y ese valor es el que se envía en binario 1001. Digamos que necesitamos el pin 5 y 9 la suma es: 8 + 128 = 136 Y en binario es 10001000. Si queremos prender todos los led’s conectados al puerto paralelo pues se pone: Valor.- 1111111 = 255 Si queremos apagar todos los led’s conectados al puerto paralelo pues se pone: Valor.- 0 = 0 NOTAS: • Se puede ver que el pin de menor peso es el numero 2 por lo que hay que empezar a contar por hay. • Normalmente el puerto paralelo esta enviando señal por todos los pines. • No es necesario enviar el dato binario ya que la DLL inpout32 los convierte basta con enviar el dato decimal. Es hora de comenzar. Para poder enviar datos al puerto paralelo desde visual Basic utilizando la DLL inpout32 se usa el comando Out: Su sintaxis es: out (numero de pin desde donde se desea empezar a contar “pin con menor peso”, dato en decimal o binario). 4
  • 5. Por ejemplo: Out &H378, 255 Donde: Se omite el paréntesis. &H indica que el valor es hexadecimal. Se separa con “,”. El 255 indica que pines serán usados. Normalmente se utiliza la primera dirección de memoria y el pin numero 2 como el de menor peso, de no ser así cambia la suma y los valores adquiridos por los pines que le siguen al de menor peso. Programación: 1) Creamos un nuevo proyecto EXE estándar en VB6 en el formulario agregamos 2 botones. Nombre Texto Command1 Prendido Command2 Apagado 2) Abrimos el código y agregamos. Private Sub Command1_Click() Out &H378, 0 End Sub Private Sub Command2_Click() Out &H378, 1 End Sub Agregamos un modulo “Archivo/agregar modulo” y ponemos. Public Declare Function Inp Lib "inpout32.dll" _ Alias "Inp32" (ByVal PortAddress As Integer) As Integer Public Declare Sub Out Lib "inpout32.dll" _ Alias "Out32" (ByVal PortAddress As Integer, ByVal Value As Integer) Es importante copiar y pegar la DLL inpout32 en C:WINDOWSsystem32 si ponemos el código en el modulo tal cual. 5
  • 6. Yo y mucha gente mas a escuchado la frase “los que es del cesar a l cesar” pues en nuestro caso seria “lo que es del SO. Al SO.” A que me refiero con esto no es muy recomendable mezclar cosas vitales del SO. Con otras cosas externas por lo que nuestra DLL seria mejor ponerla en otro lugar, digamos que se instala nuestro programa en una PC pues la DLL debería estar en la carpeta donde se instalo, en este caso supongamos que la tenemos en un pendriver o usb con la letra H: asignada y una carpeta con nombre serial, pues el código seria el siguiente: Public Declare Function Inp Lib "H: serialinpout32.dll" _ Alias "Inp32" (ByVal PortAddress As Integer) As Integer Public Declare Sub Out Lib "inpout32.dll" _ Alias "Out32" (ByVal PortAddress As Integer, ByVal Value As Integer) Como ven lo único que cambia es el path, ¡que fácil es la vida verdad! 3) Si corremos el programa y presionamos los botones pues no pasa nada y eso es bueno quiere decir que esta bien, lo que pasa es que no esta conectado nada. Si te sale un error como este al momento de compilar o apretar un boton. Pueden ser 2 cosas. 1) La DLL inpout32 no esta en C:WINDOWSsystem32 o no esta en el path indicado. Solución.-Verifica que esta en el lugar indicado. 6
  • 7. 2) La DLL inpout32 no es compatible con XP o Vista es una versión anterior que solo funciona en sus predecesores de XP. Claro si su SO. Es Windows XP o Vista. Solución.- Usa la que se encuentra con este tutorial. Yo e mirado que es necesario para controlar un solo pin o bit que prenda un led lo siguiente: Material Necesario 1 Puerto paralelo libre 1 Moc3010m 1 Triac (A los Amperes que trabaje el dispositivo I=P/V) 1 Resistencia 560 Ohms 1 Resistencia 220 Ohms 1 Led 1 Conector Db25 Macho Cable para interconexiones (Puede ser del de Red de 8 Hilos) 1 Fusible (Al amperaje del dispositivo) 1 Clavija CA con cable Pues la verdad yo no ocupe tanto, solo use el puerto paralelo libre una extensión de puerto paralelo es decir un cable de puerto paralelo y un led. Conectar el led y probar nuestro programa. 1) Conectamos la extensión al puerto paralelo. 2) En el pin 2 conectamos la pata del led (+). 3) En cualquier pin entre 18 y25 conectamos la pata (-). 4) Corremos nuestro programa. 5) Apretamos los botones y miramos. Para leer un dato desde el puerto se usa la instrucción Inp. Más información de esto en: http://foro.elhacker.net/programacion_general/introduccion_a_la_programacion_por_pu ertos_en_visual_basic-t47786.0.html Espero que esto le sea de ayuda, cualquier duda comentario o sugerencia escriban a daco_tutor@hotmail.com Tutorial Básico Control Puerto Paralelo con Visual Basic 6.0 realizado por: Ing. Diego Alberto Ortega Carreto 7