<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto"><div><br></div><div>Il giorno 05/ott/2013, alle ore 08:08, Marco Buttu <<a href="mailto:mbuttu@oa-cagliari.inaf.it">mbuttu@oa-cagliari.inaf.it</a>> ha scritto:<br><br></div><blockquote type="cite"><div>
<meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type">
<div class="moz-cite-prefix">On 10/04/2013 06:09 PM, Vittorio Spina
wrote:<br>
</div>
<blockquote cite="mid:524EE834.1020308@gmail.com" type="cite">Mi
collego a un laser con interfaccia ethernet. Io faccio i seguenti
passi<br>
<ol>
<li>apro il socket</li>
<li>leggo un B alla volta con recv(1) finchè non trovo la magic
word</li>
<li>trovata la magic word leggo un po di bytes con dentro le
informazioni fra cui, numero di scansione e numero di punti
scansionati</li>
<li>con un ciclo leggo tanti pacchetti successivi all'header
quanti sono i numeri scansionati</li>
<li>mostro i punti con pygame.</li>
</ol>
c'è un ritardo di circa 5 secondi cosa che nel suo viewer non c'è.<br>
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.<br>
</blockquote>
<br>
Perche' non esegui il punto 5 in modo concorrente? Per me e' la' che
accumuli la maggior parte del ritardo.<br></div></blockquote>No, raggiungo i 70 fps e la lettura dei punti é in un thread separato<div>Sapete come si usa la select?<br><blockquote type="cite"><div>
<br>
<blockquote cite="mid:524EE834.1020308@gmail.com" type="cite"> 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.</blockquote>
<br>
Questo non mi torna, perche' mi aspetto ugualmente un ritardo. Forse
in questo caso il laser produce il punto, non puo' inviarlo perche'
non hai completato le tue operazioni (non sei ancora tornato<br>
al punto 1) e quindi il socket e' ancora chiuso, cosi' scarta il
punto ma conserva il suo l'ID per assegnarlo al prossimo punto che
produrra', che inviera' quando trovera' la connessione aperta
(altrimenti lo scartera', e il ciclo continua).<br>
Se il viewer vede solo i punti che il laser ha inviato correttamente
al client, allora e' per questo che vi sembra che funzioni, perche'
non vi accorgete dei ritardi ma in realta' state perdendo dei punti.<br>
<br>
In definitiva, il mio consiglio e' `paralellizzare` il punto 5, e se
non bastasse anche intervenire sul protocollo<br>
<pre class="moz-signature" cols="72">--
Marco Buttu
INAF - Osservatorio Astronomico di Cagliari
Via della Scienza, Loc. Cuccuru Angius
09047 Selargius (CA)
Email: <a class="moz-txt-link-abbreviated" href="mailto:mbuttu@oa-cagliari.inaf.it">mbuttu@oa-cagliari.inaf.it</a></pre>
</div></blockquote><blockquote type="cite"><div><span>_______________________________________________</span><br><span>Python mailing list</span><br><span><a href="mailto:Python@lists.python.it">Python@lists.python.it</a></span><br><span><a href="http://lists.python.it/mailman/listinfo/python">http://lists.python.it/mailman/listinfo/python</a></span><br></div></blockquote></div></body></html>