2011-08-23 18 views
10

He desarrollado un dispositivo USB que se comunica con Linux a través de una interfaz simple pero patentada y algunos controladores Linux personalizados. Mi objetivo es llevar esto a Windows sin escribir controladores de Windows. Lo que me gustaría hacer es encontrar un controlador de fuente abierta o de clase incorporada para Windows que se vería como un puerto COM en Windows. Luego, adaptaría el software integrado para que coincida con el protocolo y los descriptores que el puerto COM virtual espera ver.¿Cómo puedo hacer que un dispositivo USB personalizado aparezca en Windows como un puerto COM?

La idea es que podría conectar mi dispositivo a una máquina con Windows y aparecería un puerto COM de relativamente alta velocidad sin tener que desarrollar controladores de Windows para ello.

He estado buscando en la documentación del USB CDC (Clase de dispositivo de comunicaciones) y parece prometedor, pero no sé qué subinterfaz sería mejor usar para que se muestre como un puerto COM.

¿Alguien ha hecho aquí algún trabajo como este o podría proporcionar alguna información? Específicamente :

  1. ¿Hay conductores virtuales COM "construido en" para ventanas o habría que necesito un controlador tercera parte.
  2. Qué subclase de CDC debería usar para la emulación RS232 simple (No es necesario para los comandos de AT del módem, etc.)
  3. Existe una mejor opción para hacer lo que estoy tratando de hacer.

Gracias

Respuesta

10

hay un controlador USB-a-serie integrado en Windows que hacer lo que quiera. Se llama usbser.sys:

http://support.microsoft.com/kb/837637

Usted tiene que escribir un archivo INF y distribuir que a los usuarios, pero eso no será demasiado difícil, ya que está a sólo unos pocos kilobytes de texto y se puede encuentra ejemplos en línea.

No conozco ninguna documentación excelente para este controlador de Microsoft, por lo que mi consejo sería buscar otro dispositivo que lo use, como Pololu Wixel, y copiar lo que hicieron.

Estos son los descriptores de dispositivo que utilizamos y los traslados de control especiales que tuvimos que poner en práctica: https://github.com/pololu/wixel-sdk/blob/master/libraries/src/usb_cdc_acm/usb_cdc_acm.c

Se puede ver nuestro archivo INF, wixel_serial.inf, descargando el software y buscar en la carpeta de los conductores: http://www.pololu.com/docs/0J46/3.a (Hay otros archivos allí que no son necesarios para usted)

También puede mirar el Arduino Uno porque utilizan el mismo controlador.

¡Hagas lo que hagas, no uses nuestra ID de proveedor USB en tu producto! Debes obtener el tuyo.

Actualización: En Windows 10, ya no necesita un archivo INF debido al nuevo controlador usbser.inf que viene con Windows.

1

Si está utilizando un UART puede interactuar fácilmente con un chip USB FTDI como http://www.ftdichip.com/Products/ICs/FT232R.htm o un prolífico como http://www.prolific.com.tw/eng/products.asp?id=59

para el desarrollo, prototipos y pruebas que tengo media docena de estos por ahí http://www.pololu.com/catalog/product/391

Lo conecto directamente a los pines UART en AVR y 8051 micros.

+0

En realidad estoy yendo para otro lado, ya tengo una interfaz USB en el micro y quiero conectarme a un UART de serie en la PC HOST – CodePoet

+0

Entonces probablemente usaría http://www.pololu.com/catalog/product/126 conectado a la micro en su lugar. La otra opción es un Vinculum y un cable serie ya que necesitaría una interfaz de dispositivo host. – Jeff

Cuestiones relacionadas