2011-08-23 11 views
10

Ho sviluppato un dispositivo USB che comunica con Linux su un'interfaccia semplice ma proprietaria e alcuni driver Linux personalizzati. Il mio obiettivo è quello di portarlo su Windows senza scrivere driver Windows. Quello che mi piacerebbe fare è trovare un driver open source o di classe integrato per Windows che assomiglierebbe a una porta COM in Windows. Quindi modifico il software embedded in modo che corrisponda ai protocolli e ai descrittori che la porta COM virtuale si aspetta di vedere.Come è possibile visualizzare un dispositivo USB personalizzato in Windows come porta COM?

L'idea sarebbe che potrei collegare il mio dispositivo a una macchina Windows e una porta COM relativamente alta apparirebbe senza che io debba sviluppare driver Windows per questo.

Ho esaminato la documentazione USB CDC (Communications Device Class) e sembra promettente, ma non so quale interfaccia secondaria sarebbe meglio usare in modo che si visualizzasse come una porta COM.

Qualcuno ha mai fatto qualcosa di simile prima o potrebbe fornire qualche informazione? In particolare:

  1. Sono presenti driver COM virtuali "integrati" in Windows o sarebbe necessario un driver di terze parti.
  2. Quale sottoclasse CDC dovrei usare per semplice emulazione RS232 (Nessuna necessità di comandi AT modem, ecc.)
  3. Esiste un'opzione migliore per fare ciò che sto cercando di fare.

Grazie

risposta

10

C'è un driver USB a seriale integrata in Windows che fare quello che vuoi. Si chiama Usbser.sys:

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

Si dovrà scrivere un file INF e distribuire che per gli utenti, ma che non sarà troppo difficile, perché è solo pochi kilobyte di testo e si può trova esempi online.

Non sono a conoscenza di alcuna documentazione eccezionale per questo driver di Microsoft, quindi il mio consiglio sarebbe di trovare qualche altro dispositivo che lo utilizza, come ad esempio Pololu Wixel, e copiare ciò che hanno fatto.

Ecco i descrittori dei dispositivi che abbiamo usato e le tranfers speciali di controllo che abbiamo dovuto implementare: https://github.com/pololu/wixel-sdk/blob/master/libraries/src/usb_cdc_acm/usb_cdc_acm.c

Potete vedere il nostro file INF, wixel_serial.inf, scaricando il software e cercando nella cartella dei driver: http://www.pololu.com/docs/0J46/3.a (Ci sono altri file che non sono necessari per voi.)

Puoi anche guardare l'Arduino Uno perché usano lo stesso driver.

Qualunque cosa tu faccia, ti preghiamo di non utilizzare il nostro USB Vendor ID nel tuo prodotto! Devi prenderne uno tuo.

Aggiornamento: In Windows 10, non è più necessario un file INF a causa del nuovo driver usbser.inf fornito con Windows.

1

Se si utilizza un UART si può facilmente interfacciare ad un chip USB FTDI come http://www.ftdichip.com/Products/ICs/FT232R.htm o un prolifico come http://www.prolific.com.tw/eng/products.asp?id=59

Per lo sviluppo, prototipazione e collaudo Ho una mezza dozzina di questi, che in giro http://www.pololu.com/catalog/product/391

Lo collego direttamente ai pin UART su AVR e 8051 micros.

+0

In realtà sto andando dall'altra parte, ho già un'interfaccia USB nel micro e voglio collegarmi ad un UART seriale sul PC HOST – CodePoet

+0

Quindi probabilmente userò http://www.pololu.com/catalog/product/126 collegato al micro invece. L'altra opzione è un Vinculum e un cavo seriale poiché è necessaria un'interfaccia dispositivo host. – Jeff

Problemi correlati