Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Interrupt su seriale

12 views
Skip to first unread message

vinny...@gmail.com

unread,
Sep 27, 2017, 10:46:56 AM9/27/17
to
Ciao a tutti prima di tutto premetto che non sono un programmatore esperto ma sto studiando da un po python per un progetto con arduino, già riesco a leggere i dati e ad inviarli ad arduino tramite pyserial, ma tutto in modo lineare, nel senso che devo eseguire le operazioni in maniera lineare, adesso vorrei fare questo, python elabora le varie operazioni dai dati ricevuti dalla seriale, ma se dalla seriale arriva qualche altro dato dovrebbe mettere in pausa quello che sta facendo e andare a leggere i dati dalla seriale, appena finito di leggere dalla seriale continuare con il lavoro precedente, adesso invece ho dovuto impostare un timeout sulla seriale, se ricevo dati li elaboro, poi mi rimetto in ascolto, ma se le elaborazioni durano di più magari mi perdo qualche dato.

E possibile fare quello che voglio, ho letto del modulo asyncio, potrebbe andare bene, qualcuno può indirizzarmi sulla starda giusta?

Grazie

GIulia

unread,
Sep 27, 2017, 11:34:48 AM9/27/17
to
vinny...@gmail.com wrote:
> Ciao a tutti prima di tutto premetto che non sono un programmatore esperto ma sto studiando da un po python per un progetto con arduino, già riesco a leggere i dati e ad inviarli ad arduino tramite pyserial, ma tutto in modo lineare, nel senso che devo eseguire le operazioni in maniera lineare, adesso vorrei fare questo, python elabora le varie operazioni dai dati ricevuti dalla seriale, ma se dalla seriale arriva qualche altro dato dovrebbe mettere in pausa quello che sta facendo e andare a leggere i dati dalla seriale, appena finito di leggere dalla seriale continuare con il lavoro precedente, adesso invece ho dovuto impostare un timeout sulla seriale, se ricevo dati li elaboro, poi mi rimetto in ascolto, ma se le elaborazioni durano di più magari mi perdo qualche dato.
>
> E possibile fare quello che voglio, ho letto del modulo asyncio, potrebbe andare bene, qualcuno può indirizzarmi sulla starda giusta?

Probabilmente phyton implementera i thread,
metti su un thread e un buffer circolare o una pipe o quello che piu' ti aggrada, dimensiona tutto per la grandezza che ti serve,
e non dovresti piu' perdere un byte fino all owerflow della tua struttura.


Giulia

vinny...@gmail.com

unread,
Sep 27, 2017, 11:47:04 PM9/27/17
to
Si ho letto dei thread ma sempre in modo negativo.

Enrico Bianchi

unread,
Sep 28, 2017, 6:35:00 AM9/28/17
to
On 2017-09-27, GIulia <far...@iperbole.bologna.it> wrote:

> Probabilmente phyton implementera i thread,

Python implementa i thread, ma a causa di GIL è meglio non usarli. Meglio
multiprocessing o asyncio, dipende molto da quello che deve fare (non ho
letto il post originale, lo ammetto)

Enrico

GIulia

unread,
Sep 28, 2017, 10:18:32 AM9/28/17
to
sul mio sistema
cat /proc/sys/fs/pipe-max-size
da 1M , se gli basta un M potrebbe pure provare e infilarci in mezzo una pipe.

Giulia

vinny...@gmail.com

unread,
Sep 28, 2017, 10:22:38 AM9/28/17
to
Si infatti stavo leggendo proprio di asyncio e nello specifico avevo visto pyserial-asyncio, in quanto deve prendere dei dati dalla seriale provenienti da arduino ed elaborarli, adesso il programma che ho fatto funziona in maniera lineare, cioè ricevo un dato dalla seriale lo elaboro ed eventualmente invio il risultato, solo che in questo modo ho imposto un timeout sulla seriale o tengo bloccato tutto finchè non arriva qualcosa dalla seriale, il mio scopo era di creare un qualche tipo di interrupt, nel senso se arrivano dati dalla seriale li accumulo da qualche parte ed inizio ad elaborare, nel frattempo che elaboro se arrivano altri dati fermo l'elaborazione leggo dalla seriale e poi continuo ad elaborare.

Grazie
0 new messages