Salve a tutti, purtroppo ho un problema che non mi riesce di risolvere. Da una serie di concatenazioni ottengo una stringa compresa di virgolette. Nella funzione readStr di easyNextion non riesco ad avere il la stringa da inviare , che le comprenda.
Allego il codice completo dei risultati ottenuti.
Grazie in anticipo per i chiarimenti
Inter :in4.txt
Pos2 :"in6.txt"
Pos :"in3.txt"
Inter :in3.txt
Pos2 :"in5.txt"
Pos :"in2.txt"
Inter :in2.txt
Pos2 :"in4.txt"
Pos :"in1.txt"
Inter :in1.txt
Pos2 :"in3.txt"
Come vedete Pos è virgolettato ma inserito nella funzione myNex.readStr(Pos) che dovrebbe leggete la stringa nella cella da lei indicata non lo fa perchè alla funzione mancano le virgolette, come visualizzato in Inter.
Scusa, non ho mai usato quella libreria ma da un'occhiata su github non capisco perché tu ti sia fissato con le virgolette, a me non sembra affatto che per la readStr() siano necessarie, anzi...
Nel codice di esempio della libreria leggo:
Dove starebbero le virgolette interne alla stringa? Non mi pare che si debba aggiungere proprio nulla.
E poi vorrei farti notare che la funzione "readStr()" richiede un parametro di tipo "String" non una "C string" (o "char array") quindi non servono tutte quelle strcpy(), strcat()... Anzi, probabilmente è proprio il passaggio di quella "C string" (che di fatto rappresenta un indirizzo in memoria della relativa stringa char[], e non una variabile "String") a confondere la libreria.
Per dire, pur non sapendo come sia definito "Shifta" e non capendo come tu stia usando "Shifta" (da 40 a 1 decrementandolo ad ogni ciclo ma dentro fai anche uno "Shifta+2...) visto che non hai condiviso tutto il codice, la chiamata la semplificherei così:
Grazie docdoc, ma da come hai scritto anche tu stringFromNextion = myNex.readStr("t0.txt");vedi che il testo è tra virgolette . Senza di queste nextion non ritorna il valore di testo scritto nella cella t0. per quanto riguarda le funzioni strcpy(), strcat() mi servono per creare la stringa da inserire nella variabile Pos. La quale dalla stampa risulta si con virgolette ma non vengono comprese all'interno di Inter = myNex.readStr(Pos); infatti anzichè darmi il valore di nextion alla cella i3 mi restituisce in Inter la Pos Inter :in3.txt senza virgolette, perchè non riconosciuta. In oltre la funzione è completa e shifta è un int da come lo è 40 e per quanto richiesto dal cilo For. Fin qui voglio solo specificare e non polemizzare perchè sicuramente errori ne ho fatti sicuramente. Io potrei risolvere scrivendo tutta la sequenza direttamente con i valori necessari tra virgolette con una sfilza di righe di programma, ma la mia curiosità era capire come farlo con un ciclo For. Grazie e scusami se sono sembrato polemico.
Eh certo, perché è una costante stringa che va racchiusa tra virgolette (e comunque non l'ho scritto io, quella è una riga degli esempi della libreria)!
Se nella stringa ci fossero le (doppie) virgolette ci sarebbe scritto:
stringFromNextion = myNex.readStr("\"t0.txt\"");
Molto bene, felice di essere stato utile!
Ma un consiglio per le prossime volte: quando usi una libreria, dai sempre un'occhiata agli esempi che sono (quasi) sempre compresi, per capire meglio l'uso, e magari eseguine un paio prima di iniziare a scrivere il tuo codice.