[Electronica y programación] manejo del puerto paralelo...

Iniciado por BADBYTE-K, 27 Noviembre 2004, 11:11 AM

0 Miembros y 3 Visitantes están viendo este tema.

Cuasar

perdon por lo de los 3 post es que cuando le ponia en publicar lugo queria entrar para confirmar que se aya publicado y no logre verlos fu ese el motivo, pido disculpas.
salu2

xadap

Cita de: elpelao en 19 Septiembre 2005, 00:51 AM
Saludos a todos y gracias por adelantado por toda la información que tan altruistamente están ofreciendo:
Me van a llamar tarugo, pero es que acabo de empezar, y acabo de encontrarme con el primer problema, a saber:
Tengo un circuitillo que consiste en 8 led´s conectados a los pines del 2 al 9 del puerto paralelo.
Al arrancar la máquina, los 8 se quedan encendidos (uso xp).
Debido a las restricciones a nivel de kernel de estos SO (NT/2000/xp), como ya saben, me bajé inpout32.dll, y lo copié en:
windows\system
Bueno, pues no hay manera de encender/apagar los leds a través de soft.
La copié entonces también en:
windows/system32
c:\qbasic\
Probé con todas las opciones de cofiguración del paralelo en la bios.
Pues que no. Que no hay manera.
Las lineas que uso para enviar ordenes al paralelo en qbasic son las siguientes:
out 888, 0 (para apagarlos)
out 888, 255 (por si funcionase al revés)
¿Podría ser que, directamente, no se puede usar qbasic en xp?
Si fuese así, ¿que lenguaje debería aprender para controlar estas salidas?(uno sencillo de aprender, si pudiera ser ;))
Gracias por adelantado.
Saludos.


Cita de: elpelao en 21 Septiembre 2005, 11:54 AM
Muchas gracias por las respuestas:
¡Vaya!, me parece que hasta que logre el manejar led´s de esa manera aún me queda un largo camino :-[
Lo que yo pretendo es poder manejar servos y motores paso a paso obteniendo datos de terceros programas. Ahora estoy en la fase 0.0001 beta :)
Ya comprobé vuestras sugerencias, y sigo igual :-\
La dirección del puerto es la correcta, y tambíen probé cambiando la configuración del puerto desde la bios (epp, etc).
Lo que he leído en lagún sitio es que para tener control sobre los pines del paralelo, hay que hacerlo a través de un programa que tenga (atención, no se programar por lo que ponga ahora no se si se me entenderá) instancias, o módulos que hagan referencia a inpout32.dll. ¿Es así?.
Si así fuese, sería entonces lógico el no poder encender/apagar led´s a través de Qbasic, ¿no?.
¿Existe alguna alternativa es esta dll, para poder usar el puerto con Qbasic?... Al menos hasta que aprenda visual basic :)
PD: He empezado con "Aprenda Visual Basic como si estuviera en primero". ¿Es éste ideal para empezar, o me recomendais otro?


cuando yo estuve mirando hace unos meses para empezar mi proyecto de robótica inpout32.dll no funcionaba bien con ventanucosXP.

uso io.dll , que además es muuuuy sencilla :D www.geekhideout.com , creo q era la url oficial. si no, google para encontrar el site oficial de io.dll , que tiene las instrucciones.

os recomiendo las funciones setportbit, clrportbit, i portout. las demás son prescindibles.
cuando os bajéis la libreria y miréis las instrucciones y el codigo base sabréis a qué me refiero :)

Cuasar

hola xadap  mira no conozco el qbacic qie mencionas pero te comento que yo se poco y nada de vb y logre hacer una aplicacion sensilla que controla perfectamente el puerto. calculo que si saves programar es ese programa que mencionas sabras lo que es un if, un select case, una constante y una varible. bueno con solo esos conosimientos y la gran ayuda del post de  BADBYTE-K  logre hace esto.
fijate es este post http://foro.elhacker.net/index.php/topic,48748.0.html

y sige todos los pasos.

y seguramente aqui hay gente que save mucho mas pero aqui mi umilde colaboracion.


una ves que tengas el modulo puedes mandar ordenes al puerto coniendo por ejemplo Out &H378, 255


en el modulo pegas este codigo

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)

yo por ejemplo puse un text al cual en el evento change le agrege este codigo


Out &H378, text1.text

y todo lo que escriba en el text se envia el puerto paralelo podrias tambien definir que en ese text se escriban solo numeros y algo que yo hice para evitar un error de desvordamiento es esto mira


if text1.text > 255 then
Out &H378, text1.text
else
msgbox "la representacion maxima de o bits en decimal es de 255"
Out &H378, 255
end if

y con eso logre que si escribo 256 no le evie ese numero al puerto y me salga esa advertencia y le agrege que me dejara en 255 el estado del puerto suponiendo que si uno quiere poner por ejemplo 290 es porque quiere encender todos los leds

yo tambien soy novato en esto de Vb y por eso no estoy seguro ya que ahora estoy en el trabajo no tengo vb pero fijate si no te funca la instruccion de envio


Out &H378, text1.text
pon el dato a enviar entre comillas 

Out &H378, "text1.text"

no recuerdo como lo hice y tampo si hacia falta el signo = en el medio jeje

Out &H378, text1.text

Out &H378, "text1.text"

Out &H378, = text1.text

Out &H378, = "text1.text"

prueva con estos estoy seguro que uno de esos 4 es el que hace lo que pretendemos. aclaro que en mi caso la salida del puerto no era 378 si no que es 379 pero en el post que te mencione antes el de BADBYTE-K te explica como saber cual es la direccion de tu puerto es muy facil de verlo.

bueno espero aver ayudado un poco ya que me siento en deuda con ustedes porque de no ser por estos post no podria averlo echo yo.

y a los que mas saven.. espero no les moleste que trate de explicar algo que ya explicaron ustes antes.

chau
salu2
y suerte.



Cuasar

casi me olvido ahora pregunto yo como saven logre hacer que que yo queria, ahora, es muy incomodo tener la aplicacion simpre en pantalla si es que uno controla por ejemplo las luces de la casa por lo que me intersa saber como hacer para que esta aplicacion quede en la barra tray pero actiba y que haciendole un click se abra seria como el nsn que siempre esta abierto pero solo lo muestro en pantalla cuando yo lo quiero. se puede esto con Vb? y como seria?
gracias.
salu2

BADBYTE-K

si, claro que se puede, te doy un articulo excelente cuando se lee en ingles pero algo confuso cuando se lee en español a causa del traductor barato que usan, pero de igual forma te servira para lo que buscas

How To Manipulate Icons in the System Tray with Visual Basic
Cómo manipular iconos en la Bandeja del sistema con Visual Basic
http://support.microsoft.com/kb/q162613/


saludos

LARIOS

Hola doy las gracias a todos los q participan en el foro , es muy util.
estoy haciendo un proyecto con puerto paralelo y tengo el software hecho xo mi problema es la electronica , quiero conectar un rele al D0 (x ejemplo) para abrir un circuito por el q circula mayor corriente , el problema es q he probado con 3 tipos de reles de diferentes intensidades , el ultimo q he probado ha sido de 3A y 4,5 o 6v (me han dicho q se usa el mismo rele para 4, 5 , o 6 voltio ).
me gustaria saber que tipo de reles utilizais vosotros o alguna solucion . gracias

vlad67

que pasará que cuando ejecuto el programa y le doy enviar se me cierra..:(... lo tengo solo que envie 255 por el puerto y ya... al otro lado que me reciba
[[[VLAD]]]

Syphroot

LARIOS:

El problema es que el puerto no entrega mucha corriente, incluso para activar un relevador, lo que tienes que hacer es interfazar el pin 2 (D0) con un transistor que soporte la corriente que consume dicho relevador.

Si tienes dudas sobre como hacerlo hazlo   saber...

saludos

LINKTD

HOLA CHILDS, YA ME LEI CASI TODOS LOS POST Y ME PARECEN MUY INTERESANTES, PERO NECESITO AYUDA.

NECESITO ENVIAR UNOS PULSOS SEA POR EL LPT1 A DOS MOTORES QUE SE ENCARGAN DE ABRIR UNA PUERTA CADA UNO. NO SE EXACTAMENTE QUE NECESITO PARA HACER ESTO Y COMO DEBO HACER EL CODIGO, LO PIENSO HACER EN VB.

GRACIAS Y SIGAN ASI!!  ;D

servidor32

Bueno, hola a todos, estoy haciendo un proyecto para la escuela, y es controlar un auto a radio control desde la pc, no se si me doy a entender pero, las flechas de direccion de mi teclado deben ser las k muevan el vehiculo.

Como puedo hacer en visual basic para que cuando presione las teclas de direccion de mi teclado, ese pulso salga por el Puerto Paralelo?
Es urgente por favor ese sera mi proyecto final. :) :)