[Python] [python] Help Lettura da Seriale

Riccardo Brazzale riccardo.brazzale a gmail.com
Lun 4 Nov 2013 11:42:50 CET


> Ho questo problema:
> Devo realizzare un programma che legge dati da una vecchissima seriale.
>

>Per seriale intendi il vecchio RS-232 ?

Si 232 che scrive direttamente sulla seriale di una stampante ad aghi che
vogliono eliminare.

Poi devo formattare quello che arriva e metterlo su un foglio xls.
>
> Mi sfugge però una cosa: siccome non posso sapere quando finiscono i
> dati in arrivo sulla seriale ( un operatore spinge un tasto che provoca
> la trasmissione di una stringa, ma non c'e' un pulsante 'ho finito')
>

>Che programma usa, ed in quale sistema operativo?

E' un macchinario che mette i dati su una seriale, è del 1987, non credo
sia dotato di sistema operativo, visualizza i dati su un display
(l'operatore se li copia a mano su un foglio di carta) e li mette a
disposizione su due seriali che in teoria possono pilotare direttamente
un terminale ( forse vt100) o una stampante con porta seriale.

>Come funziona questo programma?

Non c'e' un programma.

>Mi sembra strano che non si sia modo di dire che l'I/O è terminato.

L'utente schiaccia un pulsate per fare una lettura che viene visualizzata
sul display (centinaia durante la giornata) poi alla sera spegne la
macchina con l'interruttore, non c'e' una
procedura di spegnimento.


come posso interrompere in ciclo di lettura in maniera 'elegante'?
> Posso intercettare la pressione di un dato tasto dalla tastiera senza
> utilizzare raw_input che bloccherebbe l'esecuzione?
>
>
>Dovresti usare qualcosa di specifico per dialogare con la seriale, come
pyserial, oppure se il programma deve girare solo su sistemi UNIX,
direttamente termios.

Sto gia facendo con pyserial ma il problema è proprio come interrompere il
flusso, ho provato anche curses ma senza risultati:
L'attesa della pressione di un tasto sulla tastiera del pc 'blocca'
l'esecuzione del programma in ascolto sulla seriale.


In sostanza dovrei:
>
> Apro la seriale e mi metto in ascolto con un ciclo infinito.
> Se arrivano dati li scrivo su un file temporaneo.
> Se l'utente preme il tasto 'Q' (quit):
>

>L'utente non può premere Ctrl-D, per dire che la scrittura è terminata?

Non esiste.

>In questo modo, non devi preoccuparti di tutti questi dettagli, perchè il
programma manderà il carattere speciale EOF al terminale.

>In questo caso ti basta un semplice read, che bloccherà fino a quando non
viene ricevuto EOF


Grazie.



Il giorno 04 novembre 2013 11:22, computer service <cservice a simail.it> ha
scritto:

>
> usare i timeout che so dopo 5 secondi di silenzio sulla seriale
> considerare chiusa la
> trasmissione, fare le elaborazioni del caso. quindi riaprire la
> comunicazione.
> e via così.
> Saluti
> Gilberto
> On 4 Nov 2013 at 10:20, Riccardo Brazzale wrote:
>
> > Ciao,
> >
> > Ho questo problema:
> > Devo realizzare un programma che legge dati da una vecchissima seriale.
> > Poi devo formattare quello che arriva e metterlo su un foglio xls.
> >
> > Mi sfugge però una cosa: siccome non posso sapere quando finiscono i dati
> > in arrivo sulla seriale ( un operatore spinge un tasto che provoca la
> > trasmissione di una stringa, ma non c'e' un pulsante 'ho finito') come
> > posso interrompere in ciclo di lettura in maniera 'elegante'?
> > Posso intercettare la pressione di un dato tasto dalla tastiera senza
> > utilizzare raw_input che bloccherebbe l'esecuzione?
> >
> > In sostanza dovrei:
> >
> > Apro la seriale e mi metto in ascolto con un ciclo infinito.
> > Se arrivano dati li scrivo su un file temporaneo.
> > Se l'utente preme il tasto 'Q' (quit):
> >   Chiudo la seriale
> >   Leggo il file temporaneo, lo formatto e lo metto su xls.
> >   Cancello il file temporaneo.
> >
> > Chiudo il programma.
> >
> > Qualche idea?
> >
> > Grazie!
> >
> > --
> > Riccardo Brazzale
> > Linux User #299418 Linux Machine #184578
> >
>
>
>
>
>
> _______________________________________________
> Python mailing list
> Python a lists.python.it
> http://lists.python.it/mailman/listinfo/python
>



-- 
Riccardo Brazzale
Linux User #299418 Linux Machine #184578
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20131104/a713cdeb/attachment.html>


Maggiori informazioni sulla lista Python