Escribir en un convertidor paralelo a USB [cerrado]

1

Espero que este sea el foro correcto, solo he usado StackOverflow y soy nuevo en Electricals.

He escrito un programa de control de acceso en Delphi que envía un valor de 8 bits a uno de los tres puertos paralelos (278, 378 o 3BC) durante un cierto período de tiempo. Esto es para evitar las costosas tarjetas PCI y amp; cuadros de control, y un cliente ha solicitado específicamente paralelo.

Como los puertos paralelos / seriales no siempre están disponibles, sería útil poder escribir también en convertidores paralelos usb. Con serial-USB, la PC simplemente lista el dispositivo serial adjunto como un puerto COM y el software lo escribe como de costumbre.

Sin embargo, cuando conecto el convertidor paralelo a USB a mi máquina XP (sin puertos paralelos), aparece como un HID en lugar de un LPT, lo que requeriría que escribiera un procedimiento diferente. Cuando lo conecto a mi PC con Windows 2000 (que tiene paralelo), se muestra como un Dispositivo Desconocido - Controlador IEEE-1284 y requiere controladores.

Mi pregunta: ¿hay alguna manera de hacer que la PC reconozca el dispositivo USB como un puerto LPT?

Pero en el futuro, ¿qué método debería analizar cuál es la forma estándar de transmitir un mensaje de 1 bit al hardware de control de acceso? ¿Debería intentar escribir en el puerto HID para que un controlador PIC pueda captar el mensaje?

Gracias

    
pregunta notidaho

3 respuestas

4
La mayoría de los adaptadores de impresora en paralelo de USB, incluso cuando los controladores están bien configurados, no son tan adecuados para enviar señales a otras cosas que no sean impresoras.

Para otras tareas de entrada o salida paralelas, es probable que te sirvan mejor con algo como el FT245 o un chip de IO USB similar. O bien, use un microcontrolador compatible con USB y escriba un programa que se ejecute en él y que establezca los pines en respuesta a los mensajes USB. O incluso un microcontrolador con una interfaz serie USB (como la placa arduino que sugirió Majenko) donde puede enviar un mensaje a través del puerto serie del sistema operativo API para establecer los pines IO en cualquier valor (paralelo) que desee.

Un factor adicional a tener en cuenta es que si bien el USB puede tener un rendimiento muy alto, también tiene una latencia (retardo) bastante alta en comparación con los puertos paralelos pasados de moda. Esto puede ser muy problemático en situaciones en las que la computadora realmente debe interactuar con hardware externo o comunicarse en una conversación de mensajes cortos. Si surge ese problema, puede ser necesario mover el nivel más bajo de la tarea de software a un microcontrolador en el otro extremo del USB que tendrá un control rápido de sus propios pines IO, y usar el USB para una comunicación de mayor nivel entre esos y la PC.

    
respondido por el Chris Stratton
2

No estoy seguro de si hay una definición de clase estándar en la especificación USB para puertos paralelos, como existe para los puertos serie. Si no existe tal definición de clase estándar, se necesitará un controlador de sistema operativo personalizado. Este controlador presenta una interfaz de puerto paralelo en el lado del sistema operativo y habla con su dispositivo USB en el otro lado.

Microchip tuvo un problema similar con su emulador ICE2000. Tiene una interfaz de puerto paralelo nativo. Cuando esto ya no estaba disponible en las máquinas más nuevas, proporcionaron un convertidor de USB a puerto paralelo para utilizar el ICE2000 a través de un puerto USB. No sé si fue un convertidor USB a paralelo genérico y se mostró como un puerto paralelo en el sistema operativo, o si Microchip agregó ganchos especiales en su código de host ICE2000 para este convertidor. Puede que valga la pena hablar con su Microchip FAE local para obtener más información.

    
respondido por el Olin Lathrop
0

Su pregunta, como se expresa, es probablemente un tema ajeno ya que es un foro para el diseño de hardware, pero déjeme ver si puedo ayudarlo.

Lo que está describiendo es una situación en la que, para que una pieza de hardware se use con una computadora, necesita tanto el hardware de trabajo como el software apropiado. (Definitivamente en destino para este foro) En el caso de Microsoft Windows, ese software usualmente toma la forma de un controlador de dispositivo. Además, ese controlador es a menudo específico para la versión de Windows que se está utilizando, por ejemplo, Windows de 64 bits quiere un controlador de 64 bits, mientras que Windows de 32 bits quiere un controlador de 32 bits.

Su mejor apuesta es simplemente comprar un adaptador USB a paralelo que viene con los controladores adecuados para que aparezca como un puerto paralelo para Windows. Mucho más barato y más fácil que intentar escribir software para un dispositivo que carece de los controladores adecuados.

    
respondido por el JonnyBoats

Lea otras preguntas en las etiquetas