7 votos

Programación de puerto paralelo como E/S digitales

Estoy tratando de utilizar un puerto paralelo de un ordenador como una forma barata de salida digital para hacer varias cosas (control de motores, LEDs de luz, leer interruptores de límite, ect).

Quiero saber cómo controlar los 8 pines de datos en un puerto paralelo usando C++, sin embargo hay un problema. Ya estoy usando un ordenador moderno con un sistema operativo moderno, este presenta un par de problemas.

Primero de todo, el moderno sistema operativo windows no permiten el acceso directo a los pines del puerto paralelo, debo ir a través de un conductor. Me han señalado el uso de Inpout32 para ello, sin embargo el programa de ejemplo compila y se ejecuta correctamente pero mi hardware conectado no respondió. Otra persona me indicó el uso de la API de Windows. He buscado en la MSDN y se encuentran sólo menciona de la función apropiada, pero sin el código de ejemplo, estoy perdido (tal vez estoy buscando en los lugares equivocados).

El segundo problema es que mi ordenador no tiene ningún puerto paralelo. Debo usar el USB a los puertos paralelos en lugar de (barato y directo de China, $5 cada uno, gastos de envío e impuestos todo incluido). Los puertos son reconocidos por el ordenador como IEEE-1284 los controladores y los controladores se instalan automáticamente y el equipo informa el dispositivo como "funciona correctamente". Por lo que he visto en línea, parece ser que hay una amplia variedad de opiniones sobre la utilidad de estos USB a puerto paralelo conectores. Una persona dice que funciona perfectamente bien como todos los de puerto paralelo soldada a la placa base, otro dice que se va a trabajar con algunas de hardware hacks, uno que dice que puede escribir pero no leer, y por último, otro dice que no funciona en absoluto, ya que no están diseñados para funcionar de la misma manera como "real" de los puertos paralelos.

Ya he hecho una gran cantidad de investigación antes de venir aquí (en una especie de último recurso supongo, StackOverflow no producen ningún respuestas, incluso después de la aplicación de una recompensa). Prácticamente toda la información que he encontrado en la programación de los puertos paralelos es obsoleta y se supone que tiene un puerto paralelo de su madre, una pre-Windows-NT OS, o ambos.

Si alguien tiene alguna idea de cómo hacer esto, por favor compartir conmigo?

Gracias,

-Faken

Nota: estoy ejecutando Windows 7 x64 OS en un Core i7 860. Estoy programando en C++ en Visual Studio 2008 pro. El adaptador USB a puerto paralelo conectores están conectados a través de puertos USB 2.0.

8voto

Marcel Tjandraatmadja Puntos 2083

Puerto paralelo está muerto, y USB microcontroladores son realmente el futuro de la OMI. Si utiliza el HID o CDC perfil usted incluso no necesita ningún controlador en el PC. Por ejemplo, el Teensy por $18, 25 de e/S, de los cuales todos pueden ser utilizados como I/O digital, o hasta 12 de ellos como entradas analógicas y 7 canales PWM. El Teensy es más de propósito general, si quieres algo específicamente para proporcionar la comunicación entre su PC y la electrónica, hay otros dispositivos más orientada hacia la que, al igual que el Bus Pirate. O, si usted no necesita demasiados I/O, usted podría utilizar el estándar, bastante simple FT232R USB chip en "bit-bang' modo, y obtener 8 digitial I/O fuera de él.

Si usted se niega a escuchar a la razón, entonces lo que necesitas es una tarjeta PCI que añade un puerto paralelo, como este. Usted necesitará una ranura PCI (no PCI-Express), la mayoría de las placas madre todavía tiene uno de estos días, sin embargo, están empezando a desaparecer.

USB a Paralelo adaptadores tendrá todo tipo de problemas. La principal es la latencia...puerto paralelo estándar de latencia se mide en microsegundos, mientras que el USB de la latencia se mide en milisegundos. La otra es que muchas de USB a Paralelo adaptadores están diseñados sólo para las impresoras, y falta la circuitería extra necesario para controlar individualmente las líneas de dirección en la manera que usted desea.

8voto

SQLMenace Puntos 68670

Con la tecnología actual, si usted quiere operar en un número discreto de señales de e/S, su mejor apuesta es jugar con un dedicado USB del microcontrolador, o una norma microcontrolador junto con un FTDI USB-232.

La vieja escuela de los puertos paralelos de vino en una variedad de sabores, y no todos podían hacer de entrada, puesto que el puerto fue diseñado principalmente para enviar datos a una impresora. Sólo había un par de líneas de apretón de manos que se dedica a la entrada. Si usted realmente desea utilizar un USB puerto paralelo, usted debe buscar el EPP o ECP variantes, ya que estos eran los bi-direccional tipo.

7voto

monksy Puntos 143

El hecho de que usted está tratando de hacer esto en Windows, complica aún más el asunto. Interacción directa con el hardware, aunque no imposible, es en serio, complicado por el HAL. He hecho esta bajo Linux usando el parapin de la biblioteca, pero que estaba en una vieja máquina real con un puerto paralelo de la placa base.

Mirando las notas para pyParallel bajo windows, parece requerir de la giveio conductor, lo que descarta el uso de un USB -> adaptador Paralelo.

Voy a tener que estar de acuerdo con Jeff y Joby arriba. Vamos a comprar un Arduino o algún otro microcontrolador y abordar el problema de esa manera.

1voto

y0mbo Puntos 2268

Me gustaría añadir que no todos lo usb a los adaptadores de puerto paralelo con que me he encontrado emular un puerto paralelo, que emulan a una impresora por USB y por lo tanto no pueden utilizarse para sus pins individuales de IO. Tal vez hay que hacerlo de la forma que desee, pero seguramente estaría mejor con una solución USB IO con IOs muchos más como un Guerrero de IO o un Arduino.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X