Forum >> Programmazione Python >> Scripting >> Ricezione dati seriale

Pagina: 1

Salve a tutti ho un problema che mi affligge. Sto dialogando con un device che in seriale mi invia una sequenza di 11 dati tutti su singola riga.Esempio: 23412121216etc 8)]ogni volta mi invia questi 11 dati per poi fermarsi per un tempo x.8)]Io vorrei salvare ogni volta questi dati in variabili che posso richiamare all'occorrenza tipo8)]data0, data1 etc.8)]
8)]Il codice che ho utilizzato è il seguente:
class SerialThread (threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
def run (self):
try:
device = '/dev/ttyS5'
ser = serial.Serial(device, 9600, timeout=5000)
except:
print "Errore seriale"
while 1:
try:
print("Trying..."), device
data = []
data = ord(ser.read())
print data


except:
print "Errore seriale"


SerialThread().start()
Grazie
Il codice Python va indentato correttamente per essere valido e leggibile non solo dal PC ma anche dagli altri.

Il termine "dati" è generico, vuol dire tutto e niente, dalla seriale arrivano byte (che Python2 ritorna sotto forma di stringa di byte), per avere la lista dei valori di questi byte si applica ord a ciascun elemento:
data = [ord(c) for c in ser.read()]
Python3 invece ritorna direttamente un oggetto bytes, se si vuole l'equivalente della lista precedente basta scrivere:
data = list(ser.read())


*** Il codice va evidenziato con il simbolo di fianco ai colori per non perdere l'indentazione ***


Pagina: 1



Esegui il login per scrivere una risposta.