PDA

Visualizza la versione completa : [C] Gestire una porta I/O


mimmo9.7
12-06-2014, 16:27
Salve a tutti,
da un po di tempo che cerco di muovermi nel mondo della programmazione in c. Ma come bisogna gestire una porta I/O per dare input al programma o per generare output?

oregon
12-06-2014, 16:48
In che senso? Spiegati meglio, indicando chiaramente il contesto in cui operi.

linoma
12-06-2014, 20:25
nella maggior parte dei casi devi usare cio che il SO offre per una corretta condivisione della porta all'interno del sistema. Contrariamente a ci che accade a livello di macchina dove un istruzione o un indirizzo ti permette di poter gestire la tua porta in un sistema + complesso 6 costretto a condividere la porta e cio accade nn solo a livello utente.

mimmo9.7
17-06-2014, 13:40
nn mi sono spiegato bene.
Io vorrei generare output e input con una porta I/O solo per capire come bisogna fare non mi interessa qualcosa di specifico. Basta anche un esempio per farmi capire... grazie

MItaly
17-06-2014, 13:55
Come ti stato detto, dipende dal sistema operativo, lo standard C in s non fornisce nulla di specifico.

Su microcontrollori pu bastare scrivere in indirizzi di memoria particolari (in caso di porte mappate in memoria), su codice compilato per x86 in kernel mode in genere ci sono degli intrinsic del compilatore che generano istruzioni inp e outp, ma sui sistemi pi moderni (dove le applicazioni "normali" girano in ring 3) in genere necessario "parlare" con driver appositi (ad esempio inpout32 (http://logix4u.net/parallel-port/16-inpout32dll-for-windows-982000ntxp)) che caricano un driver in kernel mode e gli girano le tue richieste.

P.S.: il linguaggio di riferimento va indicato nel titolo della discussione; questa volta l'ho aggiunto io, in futuro ricordatene.

mimmo9.7
18-06-2014, 19:20
Potete scrivermi il sorgente in linguaggio c di un programma che accende un led tramite una porta usb premendo un qualsiasi tasto della tastiera? Grazie.

Scara95
18-06-2014, 19:45
Ci che chiedi praticamente impossibile: ci sono un sacco di dettagli tecnici che dipendono dai dispositivi in uso.

vbextreme
19-06-2014, 12:06
Inanzitutto devi dire quale sistema operativo usi.
Secondo la scelta della usb pessima, non si pu accendere un led da una porta usb "cosi a secco", io ti consiglio di comprare un convertitore usb->lpt e farti una bella ricerca su internet su come comandare l'lpt.
In alternativa ci vorranno due chip, uno che codifichi l'usb e l'altro che trasformi il dato seriale in parallelo,una breadboard e un briciolo di conoscenza elettronica.
Se ti affascina il mondo dell'elettronica e ci vuoi giocherellare io ti consiglio l'acquisto di una scheda arduino uno,30€,pronta all'uso, la programmi in c e la colleghi semplicemente al computer con l'usb.
Puoi dialogare tra arduino e il computer in maniera semplice ed esistono migliardi di tutorial on line che spiegano ogni sorta di progetto,esistono poi shield(schede) predisposte anche a fare il caff.Se poi aggiungi che l'ide completamente gratuito ed esistono migliardi di sketch(programmi) opensource capisci in automatico che la miglior scelta per "giocare" con l'elettronica.

oregon
19-06-2014, 12:12
Potete scrivermi il sorgente in linguaggio c di un programma che accende un led tramite una porta usb premendo un qualsiasi tasto della tastiera? Grazie.

A parte il fatto che qui non si dovrebbe scrivere codice completo, la cosa non fattibile se alla tua USB non c' collegato un dispositivo hardware adeguato.

mimmo9.7
19-06-2014, 17:45
Scusate non che credevo che fosse cos difficile, opter per un'altra strada. Grazie.

Loading