<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">Il giorno 04 novembre 2013 16:11, Manlio Perillo <span dir="ltr"><<a href="mailto:manlio.perillo@gmail.com" target="_blank">manlio.perillo@gmail.com</a>></span> ha scritto:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">On 04/11/2013 15:43, Riccardo Brazzale wrote:<br>
</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">
[...]<br>
Hai ragione,<br>
vediamo di ricapitolare:<br>
c'e' una macchina dotata di un pulsante, un display e una porta<br>
seriale.<br>
L'operatore deve fare delle misurazioni (in questo caso deve<br>
determinare, attraverso lo strumento di cui č dotata questa macchina<br>
le caratteristiche di un foglio di carta: porositŕ e<br>
spessore).Quando ha<br>
posizionato il foglio, schiaccia questo pulsante e la macchina<br>
mostra sul display i risultati.<br>
Contemporaneamente mette gli stessi risultati a disposizione<br>
sulla seriale.<br>
Ora, non essendoci niente collegato alla seriale, l'operatore<br>
trascrive<br>
i dati su un foglio e poi provvede a caricarli su un foglio xls.<br></div>
[...]<br>
Allego il sorgente:<br>
<br>
</blockquote>
<br>
Ti consiglio di organizzare il codice usando delle funzioni; altrimenti cosě non č molto leggibile.<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">
#!/usr/bin/python<br>
# -*- coding: utf-8 -*-<br></div>
[...]<div class="im"><br>
while 1:<br>
<br>
dati = conn.read(64)<br>
stdscr.addstr(3, 20, dati)<br>
stdscr.refresh()<br>
fou.write(dati + "\n")<br>
<br>
</div></blockquote>
<br>
Come č il formato dei dati?<div class="im"><br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
stdscr.addstr(8, 5, 'PREMI Q PER USCIRE', curses.A_REVERSE)<br>
</blockquote>
<br></div>
Ok, allora premendo Q deve uscire e non semplicemente generare il file xls.<br>
<br>
Curiositŕ: che succede se spegni l'apparecchio mentre questo programma č in esecuzione? Si blocca indefinitamente su conn.read(64) ?<div class="im"><br>
<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
stdscr.refresh()<br>
tasto_premuto = stdscr.getch() <== qui si blocca e attende e non va<br>
all'else<br>
<br>
if tasto_premuto == ord('q') or tasto_premuto == ord('Q'):<br>
<br>
# Chiudo il file temporaneo<br>
<br>
fou.close()<br>
<br>
</blockquote>
<br></div>
Il codice seguente č un ottimo candidato ad essere spostato in una funzione, a cui passi il nome del file con i dati.<br>
<br>
> [...]<div class="im"><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
#chiudo<br>
curses.echo()<br>
curses.nocbreak()<br>
curses.curs_set(1)<br>
curses.endwin()<br>
sys.exit(0)<br>
</blockquote>
<br></div>
basta anche un semplice break.<br>
Anzi č meglio, cosě puoi spostare il codice di inizializzazione e terminazione delle curses fuori dal ciclo while (meglio se in funzioni separate).<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
else:<br>
a = 0<br>
</blockquote>
<br>
La variabile `a` a cosa serve?<div class="im"><br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
stdscr.addstr(8, 5, ' ')<br>
stdscr.refresh()<br>
continue<br>
<br>
</blockquote>
<br></div>
Comunque il codice lo puoi riscrivere in questo modo, tralasciando la gestione degli errori:<br>
<br>
import sys<br>
import select<br>
<br>
<br>
# ... open serial port, init curses<br>
while 1:<br>
rfd, wfd, efd = select.select([stdin, conn], [], [], 0)<br>
if conn in rfd:<br>
dati = conn.read(64)<br>
# ... aggiorna schermo e file dati<br>
if stdin in rfd:<br>
cmd = stdin.read()<br>
if cmd.strip().lower() == "q":<br>
# ... salva il file excel<br>
break<br>
# close serial port, close curser<div class="HOEnZb"><div class="h5"><br>
<br>
<br>
Ciao Manlio<br>
______________________________<u></u>_________________<br>
Python mailing list<br>
<a href="mailto:Python@lists.python.it" target="_blank">Python@lists.python.it</a><br>
<a href="http://lists.python.it/mailman/listinfo/python" target="_blank">http://lists.python.it/<u></u>mailman/listinfo/python</a><br>
</div></div></blockquote></div><br>Gentilissimo.</div><div class="gmail_extra">Faccio delle prove.</div><div class="gmail_extra"><br></div><div class="gmail_extra">Grazie!</div><div class="gmail_extra"><br clear="all"><div>
<br></div>-- <br>Riccardo Brazzale<br>Linux User #299418 Linux Machine #184578<br>
</div></div>