Ciao a tutti!
Ho una domanda riguardo l'utilizzo della seriale:
Tramite arduino vado a leggere numerosi sensori di una macchina relativi a pressione, temperatura, giri motore ecc. Per leggerli poi sfrutto la seriale, il fatto è che ogni volta che un dato cambia, la seriale mi scrive tutto il messaggio da zero, cioè per esempio se la temperatura acqua sale io vedo una cosa del genere sulla seriale
"
Temp. H20: 80°
Temp. H20: 80°
Temp. H20: 80°
Temp. H20: 81°
Temp. H20: 81°
Temp. H20: 82°
Temp. H20: 82°
"
E così via, e quando i dati non sono relativi ad un unico sensore ma a tanti sensori e si aggiornano velocemente, è impossibile leggerli con chiarezza e in maniera rapida e intuitiva.
Ciò che vorrei fare è quello di "aggiornare" la scritta sulla seriale, in modo ad esempio che la scritta "Temp H20" stesse ferma in una certa posizione dello schermo, e la temperatura scritta accanto venisse man mano riscritta, ma sempre nella stessa posizione.
So benissimo che con la semplice seriale di arduino ciò non è possibile, ma mi chiedevo se esisteva qualche libreria che permettesse la creazione di una qualche finestra in cui fosse possibile scegliere cosa scrivere e dove!
Forse non mi sono spiegato. Vorrei replicare la seriale senza lo scrolling, perchè devo visualizzare tutti i dati che viaggiano nel can-bus di una macchina e che si aggiornano a centinaia di Hz, rendendo lo scrolling rapidissimo.
La soluzione di acquistare un display non è nè ottimale nè comoda, mi vincola ad avere sempre un display a portata di mano quando devo farlo e mi obbliga a fare collegamenti in più, quando come richiesto mi servirebbe una cosa rapida e intuitiva.
Non è possibile, detto in parole povere, "simulare un display su computer"? Cioè vorrei una sorta di seriale in cui si può posizionare il cursore e decidere dove scrivere. Non esiste nessuna libreria che permette di farlo?
SukkoPera:
Ma ti sei almeno curato di leggere bene quel che ti ho passato?
Yes, ho visto che parlano di Putty come possibile soluzione ma guardando online mi sembra una sorta di replica del seriale, e non posso decidere io dove scrivere.
Cioè io vorrei fare un schermata fissa, tipo
"
H20 Temp:
RPM:
Oil Temp:
Air Temp:
Oil Press:
Water Press:
..
..
"
E, alla frequenza che mi arrivano (quindi senza millis che faccia ritardi o che conteggi quando scrivere) aggiornare il dato accanto alla scritta. Sai se con putty è possibile? Se sì, sai dove posso informarmi a riguardo? Che non trovo molto.
So che la soluzione del display teoricamente funziona, ma non è ciò che mi serve, anche se come idea è perfetta, vorrei poter replicare tale display sul computer. Mi par strano non si possa fare in maniera easy, mentre con un display fisico si.
brizio95:
Yes, ho visto che parlano di Putty come possibile soluzione ma guardando online mi sembra una sorta di replica del seriale, e non posso decidere io dove scrivere.
A parte il monitor seriale di Arduino, che è molto semplice, i veri emulatori di terminale riconoscono caratteri di controllo con i quali puoi gestire, tra le tante cose, anche il cursore e la pulizia dello schermo … che sono poi le uniche cose che servono a te.
Come usare “putty” è ben desctitto nel suo MANULE che, ovviamnete … tocca studiare per configurarlo come emulatore di terminale VT100, dopo di che, le sequenze da inviare (che sono uno standard ANSI) le trovi QUI.
gpb01:
i veri emulatori di terminale riconoscono caratteri di controllo con i quali puoi gestire, tra le tante cose, anche il cursore e la pulizia dello schermo …
Ottimo! Mi basta sapere che con emulatore come PUTTY si possa fare e mi metto a studiarlo. La domanda era nella speranza che esistessero librerie che permettessero di simulare un display sullo schermo o cose simili, ma a sto punto direi che uso putty.
Che conosco bene la libreria UTFT per i display, e speravo di trovare qualcosa di analogo anche senza display, essendo quella molto intuitiva e facile da usare, ma direi che mi tocca optare per Putty.
Grazie mille
È da tre post che te lo sto dicendo, e se ti degnassi di guardare quel Link troveresti anche del codice pronto che invia le sequenze per cambiare colore dei caratteri. Le sostituisci con le sequenze per settare la posizione del cursore, come descritto nei Link nella discussione stessa, e sei a posto. Sembra quasi che tu non voglia capire.
SukkoPera:
È da tre post che te lo sto dicendo, e se ti degnassi di guardare quel Link troveresti anche del codice pronto che invia le sequenze per cambiare colore dei caratteri. Le sostituisci con le sequenze per settare la posizione del cursore, come descritto nei Link nella discussione stessa, e sei a posto. Sembra quasi che tu non voglia capire.
Hai pienamente ragione, il codice scritto in quell'articolo (scritto da te tra l'altro) ero convinto servisse per cancellare tutte le scritte, invece solo provandolo ho capito quello che fa e come funziona, quindi grazie e perdonate l'insistenza, errore mio.
Se possa servire a qualcuno, scrivo la bozza del codice necessario a fare quanto scritto inizialmente (poi lo cambierò tantissimo perchè dovrò usarlo per leggere dati dalla linea can di una macchina, ma questo va oltre il seguente post), per ora lascia delle scritte fisse mentre ne cambia altre, evitando lo scrolling tipico della seriale di Arduino.
Grazie a tutti davvero, ho risolto!
int x = 0;
int y = 0;
int z = 0;
#define ESC "\x1B"
void cls() {
Serial.print(ESC "[2J");
}
void setup() {
Serial.begin(115200);
cls();
}
void loop () {
x=x+1;
y = y+3;
z = z+5/3;
Serial.print(ESC"[5;1H");
Serial.print("ECT: ");
Serial.println(x);
Serial.print(ESC"[6;1H");
Serial.print("MAP: ");
Serial.println(y);
Serial.print(ESC"[7;1H");
Serial.print("TPS: ");
Serial.println(z);
delay(100);
}
Si certo, devo leggere i dati via can-bus, l'idea è quello di leggere i dati per i primi due secondi e salvare i vari indirizzi, mettere in ordine crescente gli indirizzi in modo che ognuno sia su ogni riga senza mai cambiare, e ogni volta che arriva un dato modificare quella riga, quindi farò un metodo che riconosce l'indirizzo e lo salva, uno che setta il cursore e uno che scrive.
Grazie di tutto ragazzi