Autor Tema: ¿Cómo funciona el Cable convertidor USB-Paralelo?  (Leído 22117 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
¿Cómo funciona el Cable convertidor USB-Paralelo?
« en: 01 de Febrero de 2010, 03:47:54 »
Hola amigos:

Tengo una gran duda, por ejemplo, desde un computador de escritorio controlo 8 leds con el puerto paralelo, para ello desde (VB en mi caso) solo tengo que usar una librería (INPOUT32.dll) y la función, por ejemplo, si quiero activar los 4 primeros bits sería:

Escribir &H378,15

El primer argumento sería la dirección del registro de Datos y el segundo el valor que quiero escribir, eso lo he utilizado por mucho tiempo, de hecho aqui en el foro hay algunos ejemplos.

Quiero hacer esto con una portatil, obviamente no tiene LPT, y la verdad no se como es que funcionan estos cables convertidores de USB a Paralelo, no se si haya como hacer eso.

Imagino que deben crear algun registro o algo así para poder acceder al puerto, pero la verdad no lo sé, y antes de comprar uno quería estar seguro de que haya como hacer algún ejemplo como el que comenté anteriormente.

Si alguien sabe como es que funcionan o de pronto alguien probó algo como lo que intento hacer, pues estaría agradecido cualquier comentario.

Gracias compañeros.

Desconectado stk500

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4862
Re: ¿Cómo funciona el Cable convertidor USB-Paralelo?
« Respuesta #1 en: 01 de Febrero de 2010, 04:03:41 »

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 17764
    • MicroPIC
Re: ¿Cómo funciona el Cable convertidor USB-Paralelo?
« Respuesta #2 en: 01 de Febrero de 2010, 04:38:20 »
Seguro que estoy espeso pero yo no veo la respuesta a la pregunta de Gio en ese link. A mí me interesa saber si un puerto paralelo como ese podría utilizarse con Mach3, que para el caso es lo mismo que pregunta Gío porque hay que poner la dirección del puerto en el programa.
Un saludo desde Sevilla, España.
Visita MicroPIC                                                                                        ɔ!doɹɔ!ɯ ɐʇ!s!ʌ

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: ¿Cómo funciona el Cable convertidor USB-Paralelo?
« Respuesta #3 en: 01 de Febrero de 2010, 04:54:38 »
Hola Lord.

Yo tuve la misma duda que vos. Tengo solo notebooks y la idea era poder pasar mediante el USB al puerto paralelo. Obviamente primero apunte a un cable conversor de USB a paralelo.

Averigue un poco, y parecia no ser algo de otro mundo. Asi que me compre el cable. Uno de marca Manhattan(caro, pero de lo mejo: unos 30 USD).

Para mi sorpresa, al conectar el cable, solo me instalaba el siguiente driver para el USB( y es lo que te va a instalar si compras uno...):

IEEE-1284 Controller   Compatibilidad con impresoras USB               

Genial? Eso parecía. Pero no.

Olvidate de usar la INPOUT32.dll o algo que se le parezca. A nivel driver, el cable solo acepta comunicación con impresoras. Es lo único que entiende el driver con el que viene preparado.

¿Lindo,eh? Entonces acá venía el desafío: Si Windows podía enviarle datos al LPT, yo también debería poder. Imposible? Eso parecía. Averiguando un poco, descubro que las impresoras de Windows están asociadas a un archivo: USBPRINT.SYS. Si tan solo pudiese utilizar las llamadas al OS e indicarle a Windows que escupa datos por el puerto ese, debería poder lograrlo.

¿Complicado? Algo. Después de un día entero, di con una página que fue de ayuda(y es casi la unica que trata el tema en detalle): http://blog.peter.skarpetis.com/archives/2005/04/07/getting-a-handle-on-usbprintsys/

Como tuve muchisimos problemas para lograr compilar dicho código, volví a mi añorado/detestado VB6, y me planteé la idea de rehacer todo en este lenguaje.

Luego de dos días de sufrir, renegar y rezongar mucho por problemas de compatibilidad entre VB6 y las llamadas a las funciones del OS, lo logré.
O al menos eso pensé. Todo parecía estar bien, pero nada se mostraba en el puerto. Después me avive que el adaptador espera una impresora conectada por lo que hay que respetar sus normas, y con poner el pin 10 del LPT a tierra, el dato finalmente aparecía en el puerto.

Ahora: la velocidad con la que podía enviar 1 byte al puerto era...espantosa. Sólo podía enviar algo así como 80 bytes por vez. Qué pasaba? Otra vez el querido handshake del LPT. Había que seguir respetandolo. Conecte el LPT a un uC, que generaria el handshake necesario para que el protocolo respetase al de la impresora. ¿El resultado? 150kBps(1,2Mbps) fluían por el puerto.

Alegría! Después de 4 días de estudiar y reestudiar a nivel bajo la WINAPI, el USB, el IC que trae el adaptador y un montón de yerbas más que no vale la pena mancionar, allí estaba.

Esto fue solo el principio. La idea es ahora pulir el codigo(que ha quedado horrible, porque no lo he tocado mas) y tambien cambiarlo a algun lenguaje mas veloz. Con el que las velocidades ascenderían seguramente a más del triple según mis pruebas preliminares.

Resumiendo entonces, esto es lo que sé y/o lo que he logrado:

 :) Pude enviar 8 bits de datos a gran velocidad.No comprobé la integridad de los datos;

 :? El handshake es inevitable. Porque el adaptador nació para comunicarse con impresoras, y por lo que he leido en el datasheet del mismisimo IC que hace la conversion, fue diseñado para ello, por lo que ni siquiera rehaciendo un nuevo driver para windows te liberarias del handshake. Para mostrar datos en el puerto sin ningun tipo de hardware complejo adicional, es necesario poner, minimamente, una pulldown en el pin 10, y generar un clock rápido en el pin 11. Con un 555 podrías hacerlo...

 :( No he podido leer del puerto. Lei el datasheet del IC controlador, y permite leer no solo del bus de datos, sino que además de ciertos pines de control, pero requiere de mayor investigacion y no he tenido el tiempo;

 :( No funcionará tampoco con la INPOUT.DLL. Para que lo hiciese, habria que lograr interceptar todos los mensajes que envies a las posiciones donde estaria el LPT1(ej. 0x378...0x37A) y recien alli puentear con este codigo para que sea "transparente";

 :) Estoy dispuesto a seguir investigando, a compartir lo logrado, y luchar hasta poder leer y escribir en todos los pines del LPT;

Saludos.



"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado fuente

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 547
Re: ¿Cómo funciona el Cable convertidor USB-Paralelo?
« Respuesta #4 en: 01 de Febrero de 2010, 05:27:42 »
Hace tiempo intenté abordar el tema, pero nació la peque y se paró la cosa.
En principio, la mayoría de los conversosres USB/Paralelo únicamente soportan o simulan protocolos de impresión y no te permiten actuar de forma independiente sobre los pines del puerto.
Ninguno de ellos accede o utiliza los registros reservados para los puertos paralelos normales, por lo que por más que se escriba o lea por estos puertos no funcionará nada.

La idea que tuve en su día fué esta:

http://www.todopic.com.ar/foros/index.php?topic=2670.0

pero no encontré la forma de hacer la "pasarela" entre los puertos.

Se que hay algunos dispositivos que lo hacen, pero hasta ahora lo único que he encontrado ha sido la página que menciona stk500.

A ver si encontramos algo.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 17764
    • MicroPIC
Re: ¿Cómo funciona el Cable convertidor USB-Paralelo?
« Respuesta #5 en: 01 de Febrero de 2010, 05:32:41 »
¿No se podría capturar todo el tráfico que Windows genere hacia el 0x378, a modo de sniffer, y enviarlo a un USB utilizando un protocolo que un PIC pueda reconocer?
Un saludo desde Sevilla, España.
Visita MicroPIC                                                                                        ɔ!doɹɔ!ɯ ɐʇ!s!ʌ

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: ¿Cómo funciona el Cable convertidor USB-Paralelo?
« Respuesta #6 en: 01 de Febrero de 2010, 05:38:24 »
No tengo idea de que tan dificil seria hacer eso, y si es factible. Supongo que lo es. El problema es que si lo haces con PIC, probablemente termines con tasas bastante pobres de transferencia. Habria que ver.
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: ¿Cómo funciona el Cable convertidor USB-Paralelo?
« Respuesta #7 en: 01 de Febrero de 2010, 06:37:06 »
99% posible por lo que acabo de probar. No con las direcciones 378 ni 278, pero con alguna otra rarita y bien elegida se podría puentear...

Va tomando forma la cosa.

"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: ¿Cómo funciona el Cable convertidor USB-Paralelo?
« Respuesta #8 en: 01 de Febrero de 2010, 15:41:56 »
Qué pines necesita el MATCH3 para funcionar? Permite configurar todos los pines disponibles del LPT?(17 útiles)
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado cabflip

  • PIC10
  • *
  • Mensajes: 12
Re: ¿Cómo funciona el Cable convertidor USB-Paralelo?
« Respuesta #9 en: 30 de Mayo de 2013, 12:56:48 »
Hola Lord.

Yo tuve la misma duda que vos. Tengo solo notebooks y la idea era poder pasar mediante el USB al puerto paralelo. Obviamente primero apunte a un cable conversor de USB a paralelo.

Averigue un poco, y parecia no ser algo de otro mundo. Asi que me compre el cable. Uno de marca Manhattan(caro, pero de lo mejo: unos 30 USD).

Para mi sorpresa, al conectar el cable, solo me instalaba el siguiente driver para el USB( y es lo que te va a instalar si compras uno...):

IEEE-1284 Controller   Compatibilidad con impresoras USB               

Genial? Eso parecía. Pero no.

Olvidate de usar la INPOUT32.dll o algo que se le parezca. A nivel driver, el cable solo acepta comunicación con impresoras. Es lo único que entiende el driver con el que viene preparado.

¿Lindo,eh? Entonces acá venía el desafío: Si Windows podía enviarle datos al LPT, yo también debería poder. Imposible? Eso parecía. Averiguando un poco, descubro que las impresoras de Windows están asociadas a un archivo: USBPRINT.SYS. Si tan solo pudiese utilizar las llamadas al OS e indicarle a Windows que escupa datos por el puerto ese, debería poder lograrlo.

¿Complicado? Algo. Después de un día entero, di con una página que fue de ayuda(y es casi la unica que trata el tema en detalle): http://blog.peter.skarpetis.com/archives/2005/04/07/getting-a-handle-on-usbprintsys/

Como tuve muchisimos problemas para lograr compilar dicho código, volví a mi añorado/detestado VB6, y me planteé la idea de rehacer todo en este lenguaje.

Luego de dos días de sufrir, renegar y rezongar mucho por problemas de compatibilidad entre VB6 y las llamadas a las funciones del OS, lo logré.
O al menos eso pensé. Todo parecía estar bien, pero nada se mostraba en el puerto. Después me avive que el adaptador espera una impresora conectada por lo que hay que respetar sus normas, y con poner el pin 10 del LPT a tierra, el dato finalmente aparecía en el puerto.

Ahora: la velocidad con la que podía enviar 1 byte al puerto era...espantosa. Sólo podía enviar algo así como 80 bytes por vez. Qué pasaba? Otra vez el querido handshake del LPT. Había que seguir respetandolo. Conecte el LPT a un uC, que generaria el handshake necesario para que el protocolo respetase al de la impresora. ¿El resultado? 150kBps(1,2Mbps) fluían por el puerto.

Alegría! Después de 4 días de estudiar y reestudiar a nivel bajo la WINAPI, el USB, el IC que trae el adaptador y un montón de yerbas más que no vale la pena mancionar, allí estaba.

Esto fue solo el principio. La idea es ahora pulir el codigo(que ha quedado horrible, porque no lo he tocado mas) y tambien cambiarlo a algun lenguaje mas veloz. Con el que las velocidades ascenderían seguramente a más del triple según mis pruebas preliminares.

Resumiendo entonces, esto es lo que sé y/o lo que he logrado:

 :) Pude enviar 8 bits de datos a gran velocidad.No comprobé la integridad de los datos;

 :? El handshake es inevitable. Porque el adaptador nació para comunicarse con impresoras, y por lo que he leido en el datasheet del mismisimo IC que hace la conversion, fue diseñado para ello, por lo que ni siquiera rehaciendo un nuevo driver para windows te liberarias del handshake. Para mostrar datos en el puerto sin ningun tipo de hardware complejo adicional, es necesario poner, minimamente, una pulldown en el pin 10, y generar un clock rápido en el pin 11. Con un 555 podrías hacerlo...

 :( No he podido leer del puerto. Lei el datasheet del IC controlador, y permite leer no solo del bus de datos, sino que además de ciertos pines de control, pero requiere de mayor investigacion y no he tenido el tiempo;

 :( No funcionará tampoco con la INPOUT.DLL. Para que lo hiciese, habria que lograr interceptar todos los mensajes que envies a las posiciones donde estaria el LPT1(ej. 0x378...0x37A) y recien alli puentear con este codigo para que sea "transparente";

 :) Estoy dispuesto a seguir investigando, a compartir lo logrado, y luchar hasta poder leer y escribir en todos los pines del LPT;

Saludos.


Hola BrunoF, retomo de las entrañas del foro este tema porque me gustaria saber si me podrias ayudar un poco con la comunicacion USB Paralelo que conseguiste a 1,2Mbps! Hace mas de dos meses que vengo peleando con una comunicacion asi, haciendo yo mismo la transmision mediante Bulk (con problemas en el driver), CDC (con problemas en la velocidad) y con Hid (con problema de perdida de datos).
Si pudieras retomar un poco el tema para ayudarme un poco al menos estaría muy agradecido!

Saludos


 

anything