Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Tutorial básico control puerto paralelo con visual basic 6.0

21,616 views

Published on

Tutorial básico control puerto paralelo con visual basic 6.0

  1. 1. Tutorial Básico Control Puerto Paralelo con Visual Basic 6.0Introducción.Este pequeño tutoríal proporciona los pasos básicos para controlar el puerto paralelodesde Visual Basic 6.0. Lo que se intenta es poder enviar pulsos o señales por medio deeste y recibir pulsos o señales por medio de el.La información que se encuentra en este texto fue adquirida en Internet y conocimientosadquiridos (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. 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, pararecibir niveles de voltaje usaremos el Statusport.Es importante no conectar al revés las cosas en el puerto ya que existe la posibilidad dedañarlo.En este caso mencionare la forma en que se conecta y controla pero también mencionareque mi computadora no contaba con puerto paralelo. Una vez adquirido el puertoparalelo de tipo PC-I fue colocado en la ranura correspondiente y se le instalo elcontrolador indicado.El puerto paralelo maneja direcciones de memoria asignadas por el SO. No se si sonpilas o colas pero son direcciones de memoria, estas direcciones están numeradas encódigo hexadecimal y son utilizadas normalmente para enviar ceros o unos a unaimpresora. 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 ellenguaje visual Basic, desafortunadamente al ser un lenguaje de alto nivel visual notiene la capacidad de controlar hardware por si solo, este tipo de circunstancias secontrolan con C o C++ ya que estos lenguajes tiene esa capacidad.Afortunadamente para nosotros se puede aprovechar la característica de Windows deutilizar DLL (Dynamic Linking Library (Bibliotecas de Enlace Dinámico)) y ya quealgún experto programo una DLL en C++ para controlar este dispositivo nosotrospodemos utilizarla en Visual Basic.Esta DLL mágica es la inpout32 la cual tiene la capacidad de mandar y recibir señales opulsos por el puerto paralelo. Existen varias versiones, varias de ellas no funcionan enXP y mucho menos en Vista, pero después de buscar y buscar por Internet encontré unaque si funciona perfectamente en XP y Vista incluso te da su código y muchas cosasmas, esta DLL se supone que esta adjunta con este tutorial. 2
  3. 3. Una vez comprendido esto hablemos de las direcciones de memoria anteriormentemencione la dirección de memoria que utiliza el puerto paralelo para funcionar esta sepuede ver en:Botón de inicio/Mi PC/botón derecho del ratón/propiedades/hardware/administrador dedispositivos/puertos (COM & LPT)/doble clic en tu puerto LPT/recursos.Como se ve en la imagen los primeros intervalos corresponden a Dataport (salidas delpuerto paralelo) es decir: Pin 2 3 4 5 6 7 8 9Memoria 378 379 37A 37B 37C 37D 37E 37FComo se puede ver se omitió el 0 y también se puede observar que es la mismadirecció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 alprincipio de este escrito mi PC no contaba con puerto paralelo por lo que le agregue unPC-I y mis direcciones quedaron de la siguiente manera.Es muy recomendable siempre checar las direcciones para no presentar errores niconfusiones, este simple paso ahorra muchos dolores de cabeza. 3
  4. 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 9Valor Binario 1 10 100 1000 10000 100000 100000 10000000 0Valor decimal 1 2 4 8 16 32 64 128Por ejemplo:Si queremos mandar señales por el pin 2 y el 5 pues se hace la suma.1+8=9Y ese valor es el que se envía en binario 1001.Digamos que necesitamos el pin 5 y 9 la suma es:8 + 128 = 136Y en binario es 10001000.Si queremos prender todos los led’s conectados al puerto paralelo pues se pone:Valor.- 1111111 = 255Si queremos apagar todos los led’s conectados al puerto paralelo pues se pone:Valor.- 0 = 0NOTAS: • 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 DLLinpout32 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. 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 demenor peso, de no ser así cambia la suma y los valores adquiridos por los pines que lesiguen 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 SubAgregamos 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. 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. 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 losiguiente:Material Necesario1 Puerto paralelo libre1 Moc3010m1 Triac (A los Amperes que trabaje el dispositivo I=P/V)1 Resistencia 560 Ohms1 Resistencia 220 Ohms1 Led1 Conector Db25 MachoCable para interconexiones (Puede ser del de Red de 8 Hilos)1 Fusible (Al amperaje del dispositivo)1 Clavija CA con cablePues la verdad yo no ocupe tanto, solo use el puerto paralelo libre una extensión depuerto 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_puertos_en_visual_basic-t47786.0.htmlEspero que esto le sea de ayuda, cualquier duda comentario o sugerencia escriban adaco_tutor@hotmail.comTutorial Básico Control Puerto Paralelo con Visual Basic 6.0 realizado por:Ing. Diego Alberto Ortega Carreto 7

×