Newsgroup: it.comp.programmare.win32
Titolo: [Q]: buffer seriale

salve a tutti,
avrei bisogno di leggere dei dati dalla porta seriale. Per fare questo
utilizzo normalmente ReadFile, ma l'inghippo è che io dovrei fare in modo
di leggere i dati *senza* che questi vengano rimossi dal buffer della
seriale. E' possibile fare questo, in qualche modo? 
grazie in anticipo,
Simone
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it


premesso che non saprei implementare fino in fondo la soluzione che ti
propongo:
tu vuoi essere trasparente rispetto ad altri programmi, giusto?
provare un filter driver? cioè a scrivere un driver che si colloca
sopra il driver "nominale" per la seriale e che diventa lui il primo a
ricevere le richieste di read o write? su computer programming, di cui
si possono scaricare iberamente i sorgenti direi, c'era qualche mese
fa un esempio per la tastiera. a questo punto si possono elaborare le
richieste ed eventualemnte passare al programma chiamante (caso di
lettura DA seriale) o al driver originale (scrittura SU seriale) i
dati. per elaborare intendo: duplicare su un altro canale, una specie
di mirroring, bloccare o chiedere a te utente se permettere o meno.
ricorda però che il filter driver viene chiamato solo quando sarebbe
chiamato il driver "nominale". non conosco i dettagli ma sicuramente
la seriale ha un suo buffer hardware, poi c'è sopra il s.o.e quindi
arriva il driver. se anche il s.o. non fa nulla forse non riesci ad
essere avvisato subito dell'arrivo di dati. FORSE, magari invece il
driver viene chiamato sempre..., e cmque FORSE a te non interessa 
questa pignoleria...
ciao, ryo

 tu vuoi essere trasparente rispetto ad altri programmi, giusto?
no, al mio stesso programma. Praticamente ho una funzione che si aspetta
sul buffer della seriale una serie di caratteri, io avrei bisogno di
controllare (in un'altra funzione) che il primo di questi caratteri sia
veramente quello che mi aspetto. Il punto č che con ReadFile questo
carattere viene poi tolto dalla seriale, cosě la prima funzione non vede
piů questo carattere e fallisce. 
Dovrei quindi fare leggere quel carattere senza toglierlo dal buffer,
oppure leggerlo ma essere in grado di rimetterlo in cima al buffer, in
qualche modo.


oppure leggerlo ma essere in grado di rimetterlo in cima al buffer, in
questo non lo saprei fare, ma può darsi che altri sappiano
ciao, ryo

 seriale. E' possibile fare questo, in qualche modo? 
potresti provare con le funzioni standard del "C" getc() e ungetc().
Solo che queste funzioni lavorano con FILE* e non con HANDLE...
Inoltre la fopen() (che dovresti usare per ottenere il FILE*) se ne
frega bellamente dei lock che puoi invece impostare con CreateFile().
Se nessun altro processo tenta di accedere alla seriale, il tutto
_*POTREBBE*_ funzionare.
HTH
C:\>iao Angelo
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 possono richiedere più operazioni di lettura
ottima idea: presuppone però che io abbia tempo a sufficienza per fare una
cosa del genere, e al momento purtroppo tempo non ne ho. 
Grazie in ogni caso dell'interesse!


seriale. E' possibile fare questo, in qualche modo? 
Se hai del buon codice per gestire la seriale, la lettura
avverra' tramite thread. Qui implementi un buffer circolare.
Contattami privatamente se hai problemi.
Paolo