Sie sind auf Seite 1von 9

Private Sub Command1_Click() If Picture1.Visible = True Then Picture1.Visible = False Picture4.Visible = True If Picture5.Visible = True And Picture6.

Visible = False Then Out &H378, 40 End If If Picture5.Visible = False And Picture6.Visible = True Then Out &H378, 72 End If If Picture5.Visible = True And Picture6.Visible = True Then Out &H378, 124 End If If Picture5.Visible = False And Picture6.Visible = False Then Out &H378, 8 End If Else Picture4.Visible = False Picture1.Visible = True If Picture5.Visible = True And Picture6.Visible = False Then Out &H378, 32 End If If Picture5.Visible = False And Picture6.Visible = True Then Out &H378, 64 End If If Picture5.Visible = True And Picture6.Visible = True Then Out &H378, 96 End If If Picture5.Visible = False And Picture6.Visible = False Then Out &H378, 0 End If End If End Sub Private Sub Command2_Click() If Picture2.Visible = True Then Picture2.Visible = False Picture5.Visible = True If Picture4.Visible = True And Picture6.Visible = False Then Out &H378, 40 End If If Picture4.Visible = False And Picture6.Visible = True Then Out &H378, 96 End If If Picture4.Visible = True And Picture6.Visible = True Then Out &H378, 124 End If If Picture4.Visible = False And Picture6.Visible = False Then Out &H378, 32 End If Else Picture5.Visible = False Picture2.Visible = True If Picture4.Visible = True And Picture6.Visible = False Then Out &H378, 8 End If If Picture4.Visible = False And Picture6.Visible = True Then Out &H378, 64 End If If Picture4.Visible = True And Picture6.Visible = True Then Out &H378, 72 End If If Picture4.Visible = False And Picture6.Visible = False Then Out &H378, 0 End If End If End Sub Private Sub Command3_Click() If Picture3.Visible = True Then Picture3.Visible = False Picture6.Visible = True If Picture4.Visible = True And Picture5.Visible = False Then Out &H378, 72 End If If Picture4.Visible = False And Picture5.Visible = True Then Out &H378, 96 End If If Picture4.Visible = True And Picture5.Visible = True Then Out &H378, 124 End If If Picture4.Visible = False And Picture5.Visible = False Then Out &H378, 64 End If Else Picture6.Visible = False Picture3.Visible = True If Picture4.Visible = True And Picture5.Visible = False Then Out &H378, 8 End If If Picture4.Visible = False And Picture5.Visible = True Then Out &H378, 32 End If If Picture4.Visible = True And Picture5.Visible = True Then

Out &H378, 40 End If If Picture4.Visible = False And Picture5.Visible = False Then Out &H378, 0 End If End If End Sub Private Sub Command4_Click() Picture1.Visible = True Picture2.Visible = True Picture3.Visible = True Picture4.Visible = False Picture5.Visible = False Picture6.Visible = False Out &H378, 0 End Sub Private Sub Command5_Click() Picture1.Visible = False Picture2.Visible = False Picture3.Visible = False Picture4.Visible = True Picture5.Visible = True Picture6.Visible = True Out &H378, 124 End Sub

Tutorial Bsico Control Puerto Paralelo con Visual Basic 6.0


Introduccin. Este pequeo tutoral proporciona los pasos bsicos para controlar el puerto paralelo desde Visual Basic 6.0. Lo que se intenta es poder enviar pulsos o seales por medio de este y recibir pulsos o seales por medio de el. La informacin 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 estn numerados y tienen una funcin especifica cada uno de ellos.

Podemos ordenar cada uno de los pines o bytes en: Dataport pin 2 - D0 pin 4 - D2 pin 6 - D4 pin 8 - D6 Statusport pin 10 ACK pin 11 - BUSY pin 12 - PAPER END pin 13 - SELECT IN pin 15 - ERROR ControlPort pin 1 STROBE pin 16 INIT pin 14 - AUTO FEED pin 17 - SELECT pin 3 - D1 pin 5 - D3 pin 7 - D5 pin 9 - D7

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 leds mandando voltaje al puerto usaremos el Dataport, para recibir niveles de voltaje usaremos el Statusport. Es importante no conectar al revs las cosas en el puerto ya que existe la posibilidad de daarlo. En este caso mencionare la forma en que se conecta y controla pero tambin 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 estn numeradas en cdigo 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 nmero 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 caracterstica de Windows de utilizar DLL (Dynamic Linking Library (Bibliotecas de Enlace Dinmico)) y ya que algn experto programo una DLL en C++ para controlar este dispositivo nosotros podemos utilizarla en Visual Basic. Esta DLL mgica es la inpout32 la cual tiene la capacidad de mandar y recibir seales o pulsos por el puerto paralelo. Existen varias versiones, varias de ellas no funcionan en XP y mucho menos en Vista, pero despus de buscar y buscar por Internet encontr una que si funciona perfectamente en XP y Vista incluso te da su cdigo y muchas cosas mas, esta DLL se supone que esta adjunta con este tutorial. Una vez comprendido esto hablemos de las direcciones de memoria anteriormente mencione la direccin de memoria que utiliza el puerto paralelo para funcionar esta se puede ver en: Botn de inicio/Mi PC/botn derecho del ratn/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 Memoria 2 378 3 379 4 37A 5 37B 6 37C 7 37D 8 37E 9 37F

Como se puede ver se omiti el 0 y tambin se puede observar que es la misma direccin que usamos en el ejemplo del cdigo 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. Para la programacin se necesita comprender la forma en que sern enviados los datos, seales o pulsos al puerto y es de la manera siguiente. Se envan datos binarios y dependiendo del valor son los pines utilizados: Pin Valor Binario Valor decimal Por ejemplo: Si queremos mandar seales por el pin 2 y el 5 pues se hace la suma. 1+8=9 Y ese valor es el que se enva 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 leds conectados al puerto paralelo pues se pone: Valor.- 1111111 = 255 Si queremos apagar todos los leds conectados al puerto paralelo pues se pone: Valor.- 0 = 0 2 1 1 3 10 2 4 100 4 5 1000 8 6 10000 16 7 100000 32 8 100000 0 64 9 10000000 128

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 seal 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).

Por ejemplo: Out &H378, 255 Donde: Se omite el parntesis. &H indica que el valor es hexadecimal. Se separa con ,. El 255 indica que pines sern usados. Normalmente se utiliza la primera direccin 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. Programacin: 1) Creamos un nuevo proyecto EXE estndar en VB6 en el formulario agregamos 2 botones. Nombre Command1 Command2 Texto Prendido Apagado

2) Abrimos el cdigo y agregamos. Private Sub Command1_Click() 6

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:\WINDOWS\system32 si ponemos el cdigo en el modulo tal cual. 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 debera 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 cdigo seria el siguiente: Public Declare Function Inp Lib "H:\ serial\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)

Como ven lo nico que cambia es el path, que fcil 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:\WINDOWS\system32 o no esta en el path indicado. Solucin.-Verifica que esta en el lugar indicado. 2) La DLL inpout32 no es compatible con XP o Vista es una versin anterior que solo funciona en sus predecesores de XP. Claro si su SO. Es Windows XP o Vista. Solucin.- 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 extensin de puerto paralelo es decir un cable de puerto paralelo y un led. Conectar el led y probar nuestro programa. 1) Conectamos la extensin 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 instruccin Inp.

Ms informacin 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 Bsico Control Puerto Paralelo con Visual Basic 6.0 realizado por: Ing. Diego Alberto Ortega Carreto

Das könnte Ihnen auch gefallen