import serial
sr=serial.Serial("/dev/tty.usbmodemfd121", 9600)
while True:
print sr.readline()
non capisco perché se uso Serial.print(x); (senza ln) python stà fermo senza stampare niente.
quello che serve a me è che arduino mi stampa 3 variabili senza andare a capo poi alla terza si.
nel senso
la butto lì, ma probabilmente il readline di python aspetta di ricevere un invio a capo,prima di restituire la stringa..oppure potresti settargli un timeout,se il readline di python lo prevede
anche io sono d'accordo con mi_ri...se tu gli chiedi di leggere una riga lui per forza aspetta i caratteri di fine riga per leggere l'informazione (volevo scrivere "riga" ma l'ho usato troppe volte in una frase XD).
giusto per capire tu vuoi che il pyton ti visualizzi a schermo 287 267 379 e poi vada a capo per ricevere il gruppo successivo di dati, potresti fare una modifica del genere
while True:
x = sr.readline()
print x
println() //non so come si scriva in pyton ma è per far capire
e nel codice arduino metti tutte println.
quello che sto pensando è questo...tu metti quello che leggi dal arduino in una variabile intera eliminando così qualunque traccia di \n\r che l'arduino possa aver inviato poi stampi tutti i valori interi sulla riga e poi quando non ci sono più valori da leggere (in questo caso dopo il terzo) metti un println manuale nel pyton...nella mia testa funziona però non ho idea se possa funzionare anche nella pratica
risolto grazie.
avevo fatto uno sbaglio da principianti credevo di aver messo sulla variabile z (Serial.println(z) la ln ma non l'avevo messa -.- mi dovrei sparare, ora ho fatto va tutto.
comunque non serve scrivere println() (che si scrive print senza niente) perché va automaticamente a capo a ogni stampo
c'è solo un piccolo problema
dato che con python posso leggere il singolo comando ma solo la riga mi ritrovo i numeri
x=287
y=267
z=379
stampati ovviamente in un unica riga. 287267379
(si deve ripetere trope volte riga :))
come posso aggiungere la virgola?
Serial.print(x","); //lo so che è sbagliato ma come devo fare?
e poi sul pyton sono sicuro che c'è o un comando tipo string.split così ti dividi la stringa in 3 variabili a secondo di un carattere (,) oppure se non ti interessa salvare nelle variabili ma solo stampare a video ci deve essere un comando tipo string.replace dove sostituisci la virgola con uno spazio