Ok, finalmente ho capito cosa intendi.
Il problema e' che sei troppo lento a leggere, e non ci puoi fare
niente a parte ottimizzare il programma o riscriverlo in C.
Infatti lo strumento non sembra avere supporto per il controllo del
flusso [1] e quindi ti continua a mandare dati, anche se tu non sei in
grado di "tenere il passo".
[1] http://en.wikipedia.org/wiki/Flow_control_(data)
no, mi devi scusare, ma evidentemente mi sono spiegato male.
Mi collego a un laser con interfaccia ethernet. Io faccio i seguenti passi
1. apro il socket
2. leggo un B alla volta con recv(1) finchè non trovo la magic word
3. trovata la magic word leggo un po di bytes con dentro le
informazioni fra cui, numero di scansione e numero di punti scansionati
4. con un ciclo leggo tanti pacchetti successivi all'header quanti sono
i numeri scansionati
5. mostro i punti con pygame.
c'è un ritardo di circa 5 secondi cosa che nel suo viewer non c'è.
Leggendo i numeri di scansione mi accorgo che sono consequenziali senza
salti, il laser cioè mi aspetta e accumulo un ritardo per la velocità
del mio programma di visualizzazione.
se invece apro ogni volta che leggo il socket, va un po' a scatti perchè
l'apertura del socket è cosa pesante, ma funziona, scattando un poco.
C'è che tu sappia un modo per dire al socket che il device server non
deve aspettare? una maniera Non blocking?
il protocollo non c'entra nulla.
ciao
_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python