Newsgroup: it.comp.lang.c
Titolo: Gestione USB

Ciao,
per la mia tesina di laurea dovrei gestirmi dei dati che arrivano da una 
scheda elettronica (che acquisisce dati da sensori di tocco): mi serve far 
comunicare questa scheda col pc.
Siccome la mia idea era di fare una specie di pulsantiera con vari punti da 
toccare, la cosa più naturale pensavo fosse una gestione usb (visto che 
esistono tastiere usb).. ho iniziato a cercare sul web ma la cosa mi pare 
tutt'altro che semplice.
E' una cosa fattibile, o mi oriento sul java?
Grazie
Graziano 

E' una cosa fattibile, o mi oriento sul java?
Non vedo quale vantaggio avresti nel cambiare linguaggio.

 Non vedo quale vantaggio avresti nel cambiare linguaggio.
Ho visto che per java esistono apposite librerie (jusb), come anche per il 
visual basic.
Per il c non ho trovato nulla, qualcosa, invece, per il c++.
Ma a questo punto è da sviluppare tutto da 0, ho tempo fino a Marzo.
E a quanto ho capito, una volta che Windows rileva la periferica nuova e gli 
dai il driver per parlarci assieme, ti puoi gestire l'usb come una seriale!
Se fosse davvero così, è fantastico.. 

   
Non è cosi': la perifera USB viene gestita COME una seriale se usi un 
chip controler
device  che implementa un profilo di tipo 'porta seriale'.
I benefici di usare uno di questi dispositivi sono evidenti: non ti devi 
preoccupare di
fare il driver dal laro HOST perchè il sistema (Windows o Linux) gia' li 
prevedono!
Se utilizzi chip di altro tipo invece questo driver, (o meglio, filtro) 
potrebbe mancare
e dovresti scriverne uno tu.
Visto che devi (o vorresti) farti l' hardware, puoi scegliere un 
microcontroller con porta
device USB a bordo che implementa un profile seriale oppure un chip di 
conversinoe
da seriale a USB che puoi interfacciare al tuo hardware: tu esci in 
seriale, il chip converte
in USB e il sistema 'vede' nuovamente una porta 'seriale' USB ....
Tra parentesi, se usi un chip hardware seriale/usb ti risparmi un sacco 
di lavoro
software in quanto tutto il profilo usb/seriale è gestito in hardware e 
tu semplicemente
gestisci una seriale con un microcontroller qualsiasi (ovvio che le 
prestazioni sono
quelle di una seriale, ma nel tuo caso è ininfluente).
Se usi un micro con USB invece, ce ne sono di 'general purpose' ovvero puoi
decidere in quale modo il tuo device si presenta (maggiore flessibilita').
Ovvio che questo comporta uno sforzo di sviluppo di software maggiore, 
anche se
di solito i costruttori forniscono sorgenti di esempio...
per esperienza personale pero' questa è ua via che richiede alcune 
competenze
non proprio banali, sia di software che hardware...
micro e chip usb li fanno in molti, guarda sul sito atmel, microchip 
cypress etc....
Questi invece sono molto facili da usare:
http://www.ftdichip.com/
E ovviamente, esistono dei converitori USB /Seriale già fatti....
Bye brix

 
http://www.ftdichip.com/
Potresti spiegarmi in breve come funzionano?
Grazie.. anche in mail visto che stiamo andanto ot!

 Potresti spiegarmi in breve come funzionano?
Semplicemente la porta seriale del tuo micro va collegata al chip e basta:
lui provvede a convertirla in pacchetti USB e dispone anche di driver 
specifici per
Windows o Linux che si possono scaricare gratuitamente : una volta 
installati
il tuo sistema (Windows o Linux che sia), riconosce questo device come
porta seriale (virtuale) standard....
Guarda le application notes ed il data sheet dell' FT2232D, ad esempio, sono
molto chiare...questo e' un doppio UART, ma ci sono anche i modelli 
singoli...
In questo modo, tu usi il bus USB, ma lavori come se usassi due semplici 
porte
seriali: sul lato HOST ti trovi i driver gia' fatti e ti devi concentrare 
solo sulla
tua applicazione, sul lato device, devi solo sceglierti una CPU adatta che
abbia almeno una UART a disposizione...
Alla prox,
brix
 

 it.hobby.elettronica o it.hobby.elettronica.digitale....
[cut]
Ho capito quasi tutto, ma siccome ho delle ultime questioni da chiederti, e 
non riguardano il C, mi sposto su i.h.elettronica quotando questo messaggio.
Grazie mille davvero..e a risentirci di là :-)