Differenze tra le versioni di "Alsa e Gambas: Ricezione con un programma esterno di supporto"
Riga 1: | Riga 1: | ||
Procederemo, ora, a mostrare un secondo metodo, che fa uso di una ''pipe'' da un programma esterno, scritto in linguaggio C, con il quale evitare ogni possibile evidente latenza. Questa soluzione è allo stato attuale l'unico modo corretto di inserire nel ''message loop'' i messaggi Midi che ci interessano. | Procederemo, ora, a mostrare un secondo metodo, che fa uso di una ''pipe'' da un programma esterno, scritto in linguaggio C, con il quale evitare ogni possibile evidente latenza. Questa soluzione è allo stato attuale l'unico modo corretto di inserire nel ''message loop'' i messaggi Midi che ci interessano. | ||
+ | <BR>Tale soluzione si rende necessaria, poiché con ALSA il meccanismo usato solitamente è di controllare gli eventi dal ''device'' Midi nel ''Main Message Loop'', basato sulle funzioni ''poll()'' e ''select()''. ALSA, però, non viene letto come se fosse un ''file'', e quindi uno ''stream'' di Gambas non è in grado di sollevare un evento, tipo ''stream_Read()'', usando la funzione ''poll()'' che in breve ci dice se c'è qualche dato da leggere. I descrittori dei file, dunque, sono ottenuti da ALSA, e successivamente viene utilizzata la chiamata alla funzione ''poll()'' per vedere se c'è quealcosa da leggere: più precisamente si chiede al sistema di controllare tutti i ''file descriptors''. | ||
+ | <P>Ad ogni modo, purtroppo, tale procedura non è possibile integrarla nell'''event loop'' di Gambas.</p> | ||
< '''Pagina in costruzione''' > | < '''Pagina in costruzione''' > |
Versione delle 14:56, 15 set 2011
Procederemo, ora, a mostrare un secondo metodo, che fa uso di una pipe da un programma esterno, scritto in linguaggio C, con il quale evitare ogni possibile evidente latenza. Questa soluzione è allo stato attuale l'unico modo corretto di inserire nel message loop i messaggi Midi che ci interessano.
Tale soluzione si rende necessaria, poiché con ALSA il meccanismo usato solitamente è di controllare gli eventi dal device Midi nel Main Message Loop, basato sulle funzioni poll() e select(). ALSA, però, non viene letto come se fosse un file, e quindi uno stream di Gambas non è in grado di sollevare un evento, tipo stream_Read(), usando la funzione poll() che in breve ci dice se c'è qualche dato da leggere. I descrittori dei file, dunque, sono ottenuti da ALSA, e successivamente viene utilizzata la chiamata alla funzione poll() per vedere se c'è quealcosa da leggere: più precisamente si chiede al sistema di controllare tutti i file descriptors.
Ad ogni modo, purtroppo, tale procedura non è possibile integrarla nell'event loop di Gambas.
< Pagina in costruzione >