Arduino Forum

International => Italiano => Software => Topic started by: enrico_19 on Mar 25, 2019, 01:46 pm

Title: Nextion display: recuperare valore di un campo testo
Post by: enrico_19 on Mar 25, 2019, 01:46 pm
Ciao a tutti, sto cercando di recuperare un valore di un testo dal display touch Nextion...

Code: [Select]
char buffer[100];
memset(buffer, 0, sizeof(buffer));
t_hourmax.getText(buffer, sizeof(buffer));
Serial.println(buffer);


Sapete dirmi se c'è un altro modo visto che questo non funziona?
Grazie, ciao
Title: Re: Nextion display: recuperare valore di un campo testo
Post by: fabpolli on Mar 25, 2019, 02:29 pm
Troppe poche informazioni
Com'è definito t_hourmax?
Che oggetto è sul display?
Perché ti serve recuperarne il testo?
Se puoi/vuoi metti tutto il codcie che magari è più comprensibile capire come mai una cosa non va

Title: Re: Nextion display: recuperare valore di un campo testo
Post by: enrico_19 on Mar 25, 2019, 02:43 pm
NexText t_hourmax = NexText(3, 7, "t_hourmax");

E' un campo testo, mi serve recuperare il valore per poi utilizzarlo...
E' solo quello che non va, riesco ad assegnargli un valore con setText, ma il getText non mi funziona.
Title: Re: Nextion display: recuperare valore di un campo testo
Post by: fabpolli on Mar 25, 2019, 02:50 pm
Sembra corretto allora, non è che fai la setText prima di spostarti nella pagina del componente sul display?
Title: Re: Nextion display: recuperare valore di un campo testo
Post by: enrico_19 on Mar 25, 2019, 02:57 pm
No, il testo sul componente t_hourmax viene modificato direttamente dal codice del nextion premendo dei pulsanti... vuoi dire che posso fare il gettext solo se prima gli assegno un valore con settext?  :o
Title: Re: Nextion display: recuperare valore di un campo testo
Post by: fabpolli on Mar 25, 2019, 02:58 pm
No scusa ho sbagliato invece di setText volevo scrivere getText, ovvero fai la getText che sei nella pagina del controllo o ti sei spostato di pagina?
Title: Re: Nextion display: recuperare valore di un campo testo
Post by: enrico_19 on Mar 25, 2019, 03:04 pm
Si sono nella pagina giusta, premendo un pulsante sulla stessa pagina dovrei recuperare quel valore, ma non mi restituisce niente...
Title: Re: Nextion display: recuperare valore di un campo testo
Post by: fabpolli on Mar 25, 2019, 03:16 pm
Metti tutto il codcie di Arduino che magari la magagna si annida li, altrimenti non saprei cos'altro pensare a meno non vi sia un errore nella libreria Nextion (che io non uso)
Title: Re: Nextion display: recuperare valore di un campo testo
Post by: enrico_19 on Mar 25, 2019, 03:54 pm
Ho provato anche a togliere tutto e tenere solo la parte che non funziona...

Code: [Select]

#include <Nextion.h>

char buffer[100];

SoftwareSerial HMISerial(D5, D6);
NexText t_temp     = NexText(0, 1, "t_temp");
NexButton btn_settemp = NexButton(0, 13, "btn_settemp");

NexTouch *nex_listen_list[] = {
  &btn_settemp,
  NULL
};

void btn_settempPushCallback(void *ptr) {
  memset(buffer, 0, sizeof(buffer));
  t_temp.getText(buffer, sizeof(buffer));
  Serial.print("text: ");
  Serial.println(buffer);
}

void setup() {
  Serial.begin(115200);
  nexInit();
  t_temp.setText("11");
  btn_settemp.attachPush(btn_settempPushCallback, &btn_settemp);
}

void loop() {
  nexLoop(nex_listen_list);
}



Ma non funziona lo stesso...  :smiley-confuse:
Title: Re: Nextion display: recuperare valore di un campo testo
Post by: fabpolli on Mar 25, 2019, 04:09 pm
Credo che il problema possa risiedere nel tipo d'oggetto e/o nella valorizzazione del valore sul Nextion, la getText invia un comando che richiede la proprietà t_temp.txt se tu setti sul display t_temp.val allora non può funzionare, se invece tu setti t_temp.txt allora c'è qualcosa che non va nella libreria, di più non so cosa dirti in quanto non la uso perché ho preferito farmi tutto da me perché ritenevo la loro libreria pesante e complessa da usare rispetto a intercettare i valori dalla seriale, analizzando proprio ora il contenuto della getText ho visto che fa uso della classe String per poi inviare un array di char, inutilmente pesante per la MCU in termini di memoria e alla lunga può portare a blocchi improvvisi. Prova a chiedere sul loro forum se esiste una segnalazione d'errore sulla getText o se esiste un workaround
Title: Re: Nextion display: recuperare valore di un campo testo
Post by: enrico_19 on Mar 25, 2019, 04:13 pm
Ok grazie per la disponibilità... se mi rispondono ti faccio sapere anche per completare il thread...
Da seriale per prendere il valore come si farebbe?
Title: Re: Nextion display: recuperare valore di un campo testo
Post by: fabpolli on Mar 25, 2019, 04:48 pm
Dovresti ragionare "al contrario" ovvero lato arduino non puoi proprio usare la libreria, apri la seriale (HW o SoftwareSerial poco importa) e programmare lato Nextion la scrittura di ciò che vuoi ricevere lato Arduino con i comandi print e printh.
A quel punto su arduino ti basta verificare se esistono caratteri sulla seriale, riceverli e interpretare il comando.
Io per gestire i pulsanti sul display ho fatto un po' di salti mortali ma alla fine sono soddisfatto del risultato, ovvero:

Lato arduino mi arriva una cosa tipo
NT20
Scompongo la stringa (array di char non classe String) per capire cosa fare e lo faccio :)

In questo modo ho diviso completamente la gestione dell'interfaccia grafica dall'operatività del programma. L'interaccia è a carico del Nextion che invia/riceve dati solo quando serve, Arduino si occupa di gestire i dati e operare in base ad essi.
In fase di avvio se devo inviare dei dati al display mi basta scrivere su seriale una cosa tipo
Code: [Select]

displaySeriel.print("text1.txt=pippo");
displaySeriel.write(0xFF);
displaySeriel.write(0xFF);
displaySeriel.write(0xFF);

Il Nextion vuole come terminatore tre 0xFF e il gioco è fatto
Title: Re: Nextion display: recuperare valore di un campo testo
Post by: enrico_19 on Mar 25, 2019, 11:13 pm
Ti ringrazio ancora per la dettagliata risposta, mi sa che mi farò la mia libreria utilizzando solo comandi seriali come mi hai spiegato tu