Pagina 1 di 1

Char come argomento di funzione

MessaggioInviato: 15 dic 2015, 7:21
da Sjuanez
Salve a tutti,
questa faccenda si potrebbe sicuramente risolvere con lo studio del C, ma ora sono a corto di tempo e mi vedo costretto a chiedere una soluzione pronta. Se per favore potrete darmela.

Ho questa funzione:
Codice: Seleziona tutto
void bmpDraw(char *filename, uint8_t x, uint8_t y) {


Come primo argomento accetta una variabile char.

Io ho bisogno di comporre la variabile char in questo modo:

"i.bmp"

dove i è una variabile Int che uso come contatore.

Quindi la domanda:
come trasformo una variabile concatenata composta da una Int e una Stringa in char?

So che la domanda è banale, ma non ho ora il tempo di approfondire.

Vi ringrazio infinitamente.

Re: Char come argomento di funzione

MessaggioInviato: 15 dic 2015, 8:31
da Candy
No, quello che hai postato è la dichiarazione di una funzione che ha in ingresso un puntatore ad una stringa col nome del file. Ora sta a te, indipendentemente da cosa devi fare, generare il nome file, nel modo che vuoi, e passare alla funzione il suo puntatore.
Se vuoi passare per una variabile numerica, puoi creare il nome file con, spero sia compreso, la classia funzione di print o format.

Codice: Seleziona tutto
char fname[50];
sprintf(fname, "%i.bmp", iFileName);
bmpDraw(fname, ....)

Re: Char come argomento di funzione

MessaggioInviato: 15 dic 2015, 8:34
da Sjuanez
http://playground.arduino.cc/Main/Printf
Dovrebbe funzionare!

Grazie, tra un po provo e ti faccio sapere. :D

O_/ O_/ O_/

Re: Char come argomento di funzione

MessaggioInviato: 15 dic 2015, 9:01
da fairyvilje
Tu prima di chiamare quella funzioni lavori con una stringa di questo tipo o questo?
Perché nel secondo caso non puoi usare direttamente la funzione sprintf (sempre sperando che sia correttamente implementata e disponibile nell'ambiente di arduino). Dovresti fare una conversione con un qualche metodo offerto dalla classe String. Che non è la string del C++ che pure esisterebbe, ma una sorta di implementazione più Java style che non conosco nel dettaglio.

Si perché quelli che hanno inventato il C++ si sono fatti un culo per progettare una libreria standard e di template con tutti i dettagli più impensabili, per dare un'interfaccia comune ai programmatori, quindi quelli di arduino si sono chiesti come rovinare tutto ciò :mrgreen: .

Edit: Eccola!

Re: Char come argomento di funzione

MessaggioInviato: 15 dic 2015, 11:21
da Russell
se usi l'oggetto string in effetti avresti varie scorciatoie per la gestione di testo + numeri
https://www.arduino.cc/en/Tutorial/StringAppendOperator

Re: Char come argomento di funzione

MessaggioInviato: 15 dic 2015, 11:37
da Sjuanez
Allora,
innanzitutto grazie a tutti.

Seguendo il suggerimento di Mauro non sono riuscito ad arrivare lontanissimo perché la documentazione sulle funzioni di Arduino non mi dava grandi informazioni e io sono a digiuno di C. (da recuperare!)

Ho avuto più fortuna con l'idea di Foto Utentefairyvilje ed ecco che il codice ora funziona.

:arrow: In pratica dovevo visualizzare su un piccolo display una grande raccolta di foto con una sequenza predeterminata.

Inizialmente, per comodità, mi ero ricavato l'elenco dei file dalla cartella e l'avevo caricato in un'array, così:
Codice: Seleziona tutto
char *images[] = {"mare.bmp","cielo.bmp","spiaggia.bmp","logo.bmp","quello_che_vuoi.bmp"};


Funzionava, ma se continuavo a caricare foto partiva l'avviso della scarsa memoria. Siccome come dicevo non ho molto tempo, ho rinominato tutte le foto con numeri progressivi utilizzando un software e adesso le richiamo così.

E' la prima volta che mi scontro con le differenze tra la programmazione su PC e quella su microcontrollore. E' stata una buona lezione, e un buon monito a fare le cose per bene con questi strumenti.


Grazie ancora a tutti.
O_/ O_/ O_/