funzione Serial.print() per myStruct, si può?

Ciao a tutti,
volevo sapere se in qualche modo è possibile creare una funzione che passatagli una struttura ‘ignota’ sia in grado di inviare via seriale ogni elemento della struttura.

Mi spiego meglio, al momento ho una struttura myStruct e per inviare via seriale per ogni elemento vado a scrivere Serial.print(_myStruct.elementoX)…

volevo sapere se è possibile fare qualcosa come ho fatto per gli array:

void printFunc(int* array, int lenght){
for (int i = 0; i<lenght; ++i){
Serial.print(array*);*
}
richiamata con printFunc(mioArray, sizeof(mioArray)/sizeof(int));
pensavo, forse completamente fuori strada, che potrei far passare il puntatore alla struttura e le dimensioni della struttura. Supponendo (credo sia così però) che i bytes che compongono la struttura siano tutti in ordine dalla posizione del puntatore a quella di puntatore+dimensioni. A quel punto farei stampare a seriale il contenuto di tutte quelle celle di memoria come byte.
Se è una cosa fattibile qualcuno può darmi una mano a rendere codice quest’idea?
PS tra l’altro ho notato che la dicitura che avevo studiato su alcuni tutorial in internet sui puntatori:
int i = 100;
int *pointer = NULL;
pointer = &i; QUI mi da errore dicendo che pointer non è definita in questo modo

@astro ha linkato poco tempo fa questa libreria: http://www.billporter.info/2011/05/30/easytransfer-arduino-library/

Spedisci un struct (arbitraria) tra due Arduino. Ma la struttura DEVE essere nota e uguale sui due Arduino. Anche se spedisci la dimensione, che te ne fai ? Non puoi spedire un puntatore, è un indirizzo che punta alla memoria del Arduino che spedisce, chi riceve in quella posizione in memoria avrà di sicuro altro.

Intanto grazie per la risposta, adesso do un occhio alla pagina per capire se ne cavo qualcosa di utile.

Comunque il mio problema è un po’ differente, mi scuso per non essere stato sufficientemente specifico, personalmente non ho bisogno di parlare tra due Arduini, ma di inviare ad un’interfaccia grafica a computer i dati attraverso un modulo FPV433MHz.

Pertanto io ho solo bisogno che Arduino mi printi a seriale il contenuto della struttura sotto forma di stinga, poi lato computer mi arrangio in altro modo.

Il mio problema è che a seconda dei casi potrei volere una struttura ‘completa’ oppure diverse strutture ‘limitate’ a seconda del tipo di rilevazione che ho bisogno di fare. Volevo provare a rendere tutto automatico, per cui passare semplicemente la struttura alla funzione e poi questa da sola si arrangiasse a cavarne ogni elemento e inviarlo. Senza dover fare una funzione per stampare la struttura uno, una funzione per la seconda e via così…

mastraa: PS tra l'altro ho notato che la dicitura che avevo studiato su alcuni tutorial in internet sui puntatori:

int i = 100; int *pointer = NULL; pointer = &i; QUI mi da errore dicendo che pointer non è definita in questo modo

A me compila tranquillamente. IDE 1.6.5

mastraa:
Pertanto io ho solo bisogno che Arduino mi printi a seriale il contenuto della struttura sotto forma di stinga, poi lato computer mi arrangio in altro modo.

Non è possibile. Puoi printare in stringa/testo/ascii solo un vettore/array di char, non sapndo cosa c’e’ nella struttura puoi solo spedirla byte x byte usando Serial.write() ma poi c’e’ il problema che non sai come ricostruirla in fase di ricezione.

Qualcosa del genere:

void printFunc(byte* ptr, byte lenght)
{ for (byte i = 0; i<lenght; ++i)
 { Serial.write(*(ptr+i));
 }
}

printFunc((byte*)&myStruct,sizeof(myStruct));

nid69ita: A me compila tranquillamente. IDE 1.6.5

A me da errore...boh, non riesco a capire... ho lo stesso IDE

Ti ringrazio anche per l'altra risposta, gentilissimo!

@mastraa anche a me l' IDE dà lo stesso errore

Perché scommetto che cercate di eseguire il pointer = &i; fuori dal setup o dal loop.

Oops ::) già