Forum
>>
Programmazione Python
>>
GUI
>>
Problema con ser.write()
Pagina: 1
Esegui il login per scrivere una risposta.
Pagina: 1
Scritto da fabio75 ![]() |
2025-10-22 19:32:15 - Problema con ser.write()
|
Ho un problema con questo pezzo di codice:
try: # Apri la porta seriale ser = serial.Serial('/dev/ttyACM0', 9600, timeout=1) print(f"Porta seriale /dev/ttyACM0 aperta con successo.") time.sleep(2) # Attendi un momento per la connessione values=['1000','1000','0','0','0','0','0'] values = [ [e.encode('UTF-8') for e in values]] print(values) # Invia i dati ser.write(values) #print("Dati inviati!") # Chiudi la porta seriale ser.close() print("Porta seriale chiusa.") except serial.SerialException as e: print(f"Errore durante l'apertura o la comunicazione della porta seriale: /dev/ttyACM0") se tento di inviare la stringa values mi da il seguente errore: TypeError: 'list' object cannot be interpreted as an integer Sto cercando di inviare lungo la USB verso un Arduinodue valori superiori a 256. Nessuno mi puo' aiutare a capire che tipo di dati vuole ser.write() ? --- Ultima modifica di fabio75 in data 2025-10-22 19:42:15 --- |
|
Scritto da Daniele aka Palmux ![]() |
2025-10-23 09:22:47 - Re: Problema con ser.write()
|
Ciao caro, tralasciamo il fatto che non hai indentato correttamente il codice con l'apposito pulsantino, ma sei perdonato per questo peccato veniale.
Il problema sta nel fatto che ser.write() non accetta liste come nel tuo caso, ma bytes. Quindi devi trasformare, come un barbapapà, quello che gli passi altrimenti avrai sempre quel tipo di errore. Ora vai e torna vincitore. |
|
Scritto da fabio75 ![]() |
2025-10-23 12:44:03 - Re: Problema con ser.write()
|
Ok quindi devo ciclare con for su ser.write():
ecco il codice. values = app.freqa + app.mixa + app.freqb + app.mixb print(app.values) #invia modello try: # Apri la porta seriale ser = serial.Serial('/dev/ttyACM0', 9600, timeout=1) print(f"Porta seriale /dev/ttyACM0 aperta con successo.") time.sleep(2) # Attendi un momento per la connessione val = [ [e.encode('UTF-8') for e in values]] print(val) # Invia i dati for char in range(len(val)): ser.write(valchar) print("Dati inviati!") # Chiudi la porta seriale ser.close() print("Porta seriale chiusa.") except serial.SerialException as e: print(f"Errore durante l'apertura o la comunicazione della porta seriale: /dev/ttyACM0") e mi da ancorar errore: {0} Porta seriale /dev/ttyACM0 aperta con successo. Exception in Tkinter callback Traceback (most recent call last): File "/usr/lib/python3.10/tkinter/__init__.py", line 1921, in __call__ return self.func(*args) File "/media/fabio/6CA2E3C5A2E3923E/Progetti con eagle/SINTHETIZER/SOFTWARE/PC/prova.py", line 197, in invia val = [ [e.encode('UTF-8') for e in values]] File "/media/fabio/6CA2E3C5A2E3923E/Progetti con eagle/SINTHETIZER/SOFTWARE/PC/prova.py", line 197, in <listcomp> val = [ [e.encode('UTF-8') for e in values]] AttributeError: 'int' object has no attribute 'encode'Scusami la modalità ad indice su ser.write() ma provengo dal C. |
Pagina: 1
Esegui il login per scrivere una risposta.