void loop() {
server.handleClient();
if(mod == 1){//ci entra sempre, richiamo prima del loop una funzione che mi fa selezionare il valore di mod
//Serial.println("richiamo handle client");
testoInserito = "";
msg_rx = sms(testoInserito);
if (messageCount < MAX_MESSAGES) {
if(msg_rx != ""){
Serial.println("RX: " + msg_rx);
messages[messageCount] = msg_rx;
messageCount++;
msg_rx = "";
Serial.println("aggiorna pagina");
handleRoot();
}
}else{
for (int i = 0; i < MAX_MESSAGES - 1; ++i) {
messages[i] = messages[i + 1];
}
messages[MAX_MESSAGES - 1] = msg_rx;
//handleRoot();
}
}
delay(10);
}
void handleRoot() {
Serial.println("handleroot");
String html = "<html>" \
"<head>" \
"<meta name='viewport' content='width=device-width, initial-scale=1.5'>" \
"</head>" \
"<body>" \
"<form action='/submit' method='post'>" \
"<input type='text' name='testo' id='testo'><input type='submit' value='Invia'></form>" \
"<ul>"; // Inizia elenco non ordinato per i messaggi
// Aggiungi i messaggi memorizzati all'HTML
for (int i = 0; i < messageCount; ++i) {
html += "<li>" + messages[i] + "</li>";
}
html += "</ul><script>document.getElementById('testo').focus();</script></body></html>";
// Invia la risposta con l'HTML contenente i messaggi
server.send(200, "text/html", html);
}
void handleSubmit() {
Serial.println("handesubmit");
if (server.hasArg("testo")) {
String nuovoMessaggio = server.arg("testo");
// Aggiungi il nuovo messaggio all'array
if (messageCount < MAX_MESSAGES) {
messages[messageCount] = nuovoMessaggio;
messageCount++;
} else {
// Se il numero massimo di messaggi è stato raggiunto, sovrascrivi il messaggio più vecchio
for (int i = 0; i < MAX_MESSAGES - 1; ++i) {
messages[i] = messages[i + 1];
}
messages[MAX_MESSAGES - 1] = nuovoMessaggio;
}
Serial.println("Testo inserito: " + nuovoMessaggio);
// Ricarica la pagina per mostrare il nuovo messaggio
server.send(200, "text/html", "<p>Testo salvato!</p><script>window.location.replace('/');</script>");
Serial.println("Richiamo sms");
msg_rx = sms(nuovoMessaggio);//richiamo la funzione sms che serve a gestire anche la stampa sullo schermo
} else {
server.send(400, "text/plain", "Errore: nessun testo ricevuto!");
}
}
posto questo parziale di codice dal mio progetto, praticamente nel loop, quando verifico che la nuova stringa ricevuta dalla funzione sms non e vuota la inserisco in un array di stringhe. fin qui tutto ok, poi quando mando la funzione handleroot() che si occupa dell'aggiornamento della pagina, essa non si aggiorna.
nel codice si vede anche la funzione handlesubmit che gestiche l'inserimento di testo in una casella e alla pressione del bottone invio il testo viene inserito in sequenza nell'array di stringhe. in sostanza e una sorta di chat via radio, ma cio non importa.
il problema è che premendo il bottone e richiamando poi handleroot la pagina si aggiorna, se richiamo io invece via software handleroot() la pagina non si aggiorna.
cosa vi viene in mente ?