Go Down

Topic: Problème pour retourner un tableau char d'une fonction  (Read 716 times) previous topic - next topic

Tayo

Bonjour !

Alors je vous explique le projet en général, je récupère des infos d'une rs485, que je les met sur une carte sd et cela toute les secondes.

J'ai une fonction qui permet de créer de nouveau fichier sur ma SD, cette fonction produit une variable char charFileName qui est le nom du fichier. Je voudrais "l'envoyer" dans une autre fonction TCO (qui fait une interruption toute les secondes)  pour pouvoir écrire sur ce nouveau fichier toutes les secondes.

Mais voila je n'arrive pas, j'ai compris qu'il fau tutiliser une pointeur pour cela. Il faut surement utiliser les fonctions static et strcpy parce que les cases mémoires du char son effacé à la fin de ma fonction.
Est ce que vous pourriez me donner des conseils, un tuto (j'en ai trouvé en C++ on va dire basic, pas en "arduino" mais je n'arrive pas à les mettres en oeuvre)

https://openclassrooms.com/forum/sujet/retourner-un-tableau-de-char-99230

Je mets mon code en copie, ce sont les fonctions generateFiles et TC0.
Sur mon code j'ai "juste" retourner char* et essayer de le récupérer dans la fonction TC0. Cela compile mais malheureusement cela ne fonctionne pas sur ma maquette.


Je vous remercie d'avance !! !!

kamill

Bonjour,

Tout au long de ton programme tu utilises des String, pourquoi veux tu que ta fonction retourne un char *? tu n'as qu'à retourner un String.
Tu n'es pas obligé de copier ton String dans un tableau de char pour l'utiliser. Beaucoup de fonctions acceptent un char * ou un string comme paramètre, et tu veux vraiment utiliser ton String comme const char * tu as la fonction c_str(), par exemple tu aurais pu utiliser fileName.c_str() au lieu de créer un charFileName

De plus je pense que les fonctions de SD acceptent directement un String comme paramètre.

Tayo

Ok, j'ai fait ce que tu m'as dit. J'ai transferé le fileName en String. J'arrive à le transférer. Le souci c'est que dans ma fonction TC0 bug.. En gros mon proto fonctionne si j'écris void TC0_Handler()
mais ne fonctionne plus si j'écris void TC0_Handler(String p).

Je ne comprends pas..

Ps: myFile=SD.open(fileName,FILE_WRITE); fileName doit être un char, il ne peut pas être un string.

kamill

Je ne comprend pas. TC0_handler() est un handler d'interruption qui ne prend pas de paramètre, que ce soit des char *, des String ou autre.

Si SD.open() accepte les String (sauf si tu utilises une autre bibliothèque que celle fournie avec l'ide auquel cas tu peux utiliser .c_str())

Go Up