Problème de compilation avec un Mega 2560

Bonjour à toutes et à tous,

Ça fait un bail que je n'ai pas touché un Arduino.
Je voudrais faire une modification à un programme qui fonctionnait très bien et qui, aujourd'hui, ne veut plus se compiler. Voici l'erreur :

> In file included from E:\Arduino\libraries\ChP_CarteSD/CarteSD.h:7:0,
>                  from E:\Arduino\Projets_ChP\Chaudière\Chaudiere17\Chaudiere17.ino:1:
> E:\Arduino\libraries\DS3231/DS3231.h:53:16: error: expected identifier before numeric constant
>  #define SUNDAY 7

et voici le passage incriminé dans la la bibliothèque

#define MONDAY		1
#define TUESDAY		2
#define WEDNESDAY	3
#define THURSDAY	4
#define FRIDAY		5
#define SATURDAY	6
#define SUNDAY		7

Ben je ne vois pas de problème. En voyez-vous un ?

NOTA : il semble qu'il y ait aussi d'autres erreurs. Ce sera pour la suite.

Cordialement.
Pierre.

Ce serait mieux de mettre le code complet et toutes les erreurs.
Dès fois, l'erreur ne se cache pas où on le croit. Et elle peut se trouver en amont de l'endroit où le compilateur a détecté un problème.

Je ne sais pas si tu utilises time.h mais :

    enum _WEEK_DAYS_ {
        SUNDAY,
        MONDAY,
        TUESDAY,
        WEDNESDAY,
        THURSDAY,
        FRIDAY,
        SATURDAY
    };

Donc ta ligne #define SUNDAY 7 est équivalente à #define 0 7

De plus, la norme est plutôt de placer le dimanche en 0, comme dans time.h.

Pour ce qui est de l'erreur sur les nom de jour, j'ai réglé ce problème en remplaçant dans mon fichier .ino "#include <Time.h>" par "#include <TimeLib.h>"

Je suppose que cela vient de mise à jour des librairies car avant, cela fonctionnait bien.

Maintenant j'ai d'autres erreurs, qui je suppose, viennent aussi de mises à jour de librairies :

Voici le bout de code utilisé dans CarteSD.cpp (que je n'utilise d'ailleurs pas dans mon programme) :

String CarteSD::listeFchExt(String ext) {
	String lst = "";
  if (SD.begin(53, SPI_FULL_SPEED)) {
		char tmp[13];
		String fch = "";
		while (file.openNext(SD.vwd(), O_READ)) {
			file.getFilename(tmp);
			fch = tmp;
			if ((! file.isDir()) && fch.substring(fch.indexOf('.')).equalsIgnoreCase(ext))
				lst += '&'+fch.substring(0, fch.indexOf('.'));
			file.close();
		}
	}
  return lst;
}
E:\Arduino\libraries\ChP_CarteSD\CarteSD.cpp: In member function 'String CarteSD::listeFchExt(String)':

E:\Arduino\libraries\ChP_CarteSD\CarteSD.cpp:206:27: error: 'SdFat {aka class SdFs}' has no member named 'vwd'

   while (file.openNext(SD.vwd(), O_READ)) {

                           ^~~

E:\Arduino\libraries\ChP_CarteSD\CarteSD.cpp:207:9: error: 'class SdFile' has no member named 'getFilename'; did you mean 'getName'?

    file.getFilename(tmp);

         ^~~~~~~~~~~

         getName

exit status 1

Les termes qui sont notés ne pas être connus devaient exister avant puisque, comme je l'ai dit, cela fonctionnait.

Cordialement.
Pierre.

Dans le readme sur le dépot de SDFat il y a ceci

Warning: This is SdFat Version 2.

Earlier releases of Version 1 are here:

Donc tu peux aller chercher la dernière release de la version 1 si tu penses que c'est ce que tu utilisais. Et l'installer à la place de la version plus récente que tu as.

Merci pour cette proposition.

J'ai téléchargé une version 1. ...
et l'une des erreur a disparu : vwd() existe a nouveau, mais, même en remontant à la version 1.01, j'ai toujours l'erreur suivante :

E:\Arduino\libraries\ChP_CarteSD\CarteSD.cpp: In member function 'String CarteSD::listeFchExt(String)':
E:\Arduino\libraries\ChP_CarteSD\CarteSD.cpp:207:9: error: 'class SdFile' has no member named 'getFilename'; did you mean 'getName'?
    file.getFilename(tmp);
         ^~~~~~~~~~~
         getName
exit status 1
Erreur de compilation pour la carte Arduino Mega or Mega 2560

J'ai essayé de remplacer getFilename par getName, mais il faut deux arguments à cette fonction.

Je suppose qu'une autre librairie, appelée cette fois par SdFat, est aussi en cause.

Cordialement.

Pierre.

Oui, deux arguments :

  • le buffer où le nom sera copié
  • la longueur du buffer

Pourquoi cela devrait-il poser problème ?
C'est une amélioration sécurisante.

Oui, c'est vrai, pour autant que ces deux fonctions fassent la même chose (ce que je suppose).

Si tel est le cas, mes problèmes sont résolus. Merci à tous.

Cordialement.

Pierre CHAUVEAU.

Problème de recherche de ce sujet dans le forum : en me connectant directement sur le forum Arduino Français, je sui incapable de retrouver cette discussion. Je ne la retrouve que parce que j'ai eu une notification par mail et en cliquant sur cette notification.
Le sujet a-t-il été déplacé ou autre ?

Quel est le lien me permettant de trouver ce sujet en connectant directement sur le forum Arduino Français ?

Cordialement.
Pierre.

N'aurais-tu pas cliqué par inadvertance sur Tracking / muted ?

Tu peux toujours utiliser l'outil de recherche en haut à droite de la fenêtre, par contre, je n'ai aucun résultat de recherche si je restreins la recherche au forum français. Je sélectionne tout le temps l'options "in all topic and posts"
Lorsque c'est un post auquel tu as participé tu ajoutes ton pseudo dans la recherche.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.