Lettura dati python da arduino

Buongiorno a tutti avrei bisogno di un chiarimento. Recentemente ho creato un programma server python che legge i dati via seriale usb collegato arduino con il raspberry dove a sua volta python ha un contatore contenuto in una variabile ed arrivato ad un certo numero stabilito si comporta inviando messaggi push di notifica sul mio iphone.
Il mio problema e' che dopo qualche giorno mi ritrovo a doverlo riavviare perché si blocca probabilmente termina la memoria. Che voi sappiate , c'è qualche regola a voi nota da adottare in funzione della seriale di modo che sia sempre efficiente evitando questo inconveniente?
Grazie mille
Fabry

Devi spiegarti meglio, io ho solo capito che hai un problema ma non ho capito se dipende dal Rasp o dall'Arduino.

Si immaginavo...Dunque chiedevo se Python eseguendo la lettura da seriale ha bisogno di specifici comandi (tipo svuotamento buffer) se gli lasciamo acquisire le letture da seriale per un tempo infinito oppure presenta qualche svantaggio a livello di stabilità e di conseguenza va riavviato dopo un certo numero di operazioni.
Mi riferisco a chi ha già esperienza nel lato Arduino python perchè fare una lettura è semplice, ma scrivere un ottimo codice che sia stabile e allo stesso tempo efficace và oltre il classico comando.
Nel frattempo posto anche il codice di modo che si possa dare uno sguardo e il concetto diventi più pratico che chiaro dove c'è un contatore di nome "u" che resta massimo al valore 9 e poi quando si abbassa al passaggio del 2 fino valore 0 e rende eseguibile alcuni comandi di messaggi di notifica push quindi assumendo vari comportamenti ed il mio problema è che il tutto funziona ma dopo un paio di giorni il programma è assente quindi resta in esecuzione ma non invia più nulla come se fosse morto e mi resta che riavviarlo.
Questo da cosa è dovuto?Ho immaginato si trattasse da un esaurimento magari della memoria del pc magari troppo traffico di seriale raggiunge un limite memoria e li resta fermo.
Spero possiate aiutarmi.
Grazie

from time import *
import sys
import serial
import os
serialFromArduino = serial.Serial("/dev/ttyACM0",9600)
serialFromArduino.flush()
print"Ho inizializzato il sistema...Eseguo il server"
print "Server in funzione"
u=5

while True:
    try:
        val = ord(serialFromArduino.read())


        if  (u>9):
             u=9
 
 
        if  (val == 57):
             u=u-1
             sleep(1)
 
        if  (val == 56):
             u=u+1


        if  (u ==8 ):
             execfile('ualta.py')
             sleep(1)

        if   (u== 2):
             execfile('uok.py')
             sleep(1)

 

    except KeyboardInterrupt:
        exit()

di che tipo è u nello sketch di arduino?

Dunque, dal lato arduino invia 56 ,perchè in codice ASCII, per incrementare la u mentre 57 per diminuire il contatore python
:slight_smile:

Non hai risposto alla mia domanda però. È un int o un byte?

Ok, non l'ho definito in python, dentro ad arduino è un serial print
:slight_smile: