Il giorno 04 novembre 2013 16:11, Manlio Perillo <manlio.peri...@gmail.com>ha scritto:
> > import sys > import select > > > # ... open serial port, init curses > while 1: > rfd, wfd, efd = select.select([stdin, conn], [], [], 0) > if conn in rfd: > dati = conn.read(64) > # ... aggiorna schermo e file dati > if stdin in rfd: > cmd = stdin.read() > if cmd.strip().lower() == "q": > # ... salva il file excel > break > # close serial port, close curser Ho cercato di sistemarlo un po', ne è uscito questo e pare funzionare ma devo testarlo in loco per cantare vittoria: #!/usr/bin/python # -*- coding: utf-8 -*- import curses import time import serial import xlwt import sys import select def aprischermo(): stdscr = curses.initscr() curses.noecho() titolo = 'Ricezione Dati' pos = int (40 - (len(titolo))/2) stdscr.addstr(1, pos, titolo, curses.A_REVERSE | curses.A_BOLD) stdscr.addstr(7, 5, "Lettura -- Pressione -- Flusso - Permeabilita'", curses.A_BOLD) stdscr.addstr(15, 5, 'Premi per uscire') stdscr.addstr(15, 11, 'Q', curses.A_REVERSE | curses.A_BOLD) stdscr.addstr(5, 5, 'Dati Ricevuti:', curses.A_BOLD) stdscr.refresh() return stdscr def connessione(stdscr): try: #conn = serial.Serial("/dev/ttyUSB0", 9600, 7, "N", 1, timeout=1) # <-- Senza connessione esce... conn = serial.Serial("/dev/ttyS0", 19200, timeout=1) # <-- per provare... except: stdscr.addstr(3, 20, 'Porta Seriale Non Disponibile') stdscr.refresh() time.sleep(3) chiudi() return conn def ciclo(conn): # Definizione file temporaneo fou = open("/home/Dati.txt", "w") a = 0 while 1: # rfd = input ready # wft = output reeady # efd = exception ready rfd, wft, efd = select.select([sys.stdin, conn], [], [], 0) # Controllo la disponibilità di dati sulla seriale if conn in rfd: dati = conn.read(256) # Elimino quello che non mi serve. dati = dati.replace('*', '') dati = dati.replace('SAMPLE --- PRESSURE --- FLOW --- PERMEABILITY', '') dati = dati.replace('2 SQUARE CM CLAMP', '') dati = dati.replace('PPM100 V2.1 FIAL', '') dati = dati.strip() # Stringa vuota: continuo if dati == '': continue # Visualizzo quanto ricevuto dalla seriale stdscr.addstr(9, 5, dati) stdscr.refresh() # Scrivo i dati sul file temporaneo fou.write(dati + "\n") # Controllo la pressione del tasto 'Q' sulla tastiera. if sys.stdin in rfd: cmd = sys.stdin.read(1) # Se premuto scrivo il file ed esco. if cmd.strip().lower() == "q": # Chiudo il file temporaneo fou.close() xlsout=xlwt.Workbook(encoding='latin-1') foglio1=xlsout.add_sheet('Foglio1') foglio1.write(0,0, 'Lettura') foglio1.write(0,1, 'Pressione') foglio1.write(0,2, 'Flusso') foglio1.write(0,3, "Permeabilita'") riga = 2 fin = open("/home/Dati.txt", "r") lines = fin.readlines() fin.close() for line in lines: riga += 1 sample = line[0:5].strip() pressure = line[5:18].strip() flow = line[18:27].strip() permeability = line[27:].strip() foglio1.write(riga, 1, sample) foglio1.write(riga, 2, pressure) foglio1.write(riga, 3, flow) foglio1.write(riga, 4, permeability) xlsout.save('/home/dati.xls') chiudi() def chiudi(): curses.echo() curses.nocbreak() curses.curs_set(1) curses.endwin() sys.exit(0) stdscr = aprischermo() conn = connessione(stdscr) ciclo(conn) Ma la domanda è: Se lo porto su windows cosa devo cambiare? Grazie! -- Riccardo Brazzale Linux User #299418 Linux Machine #184578
_______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python