"invalid conversion from 'const char*' to 'char*' [-fpermissive]"

Pouvez vous me dire pourquoi ce sketch compile sur un arduino mega et pas sur un ESP32 ou j’obtiens le message suivant :

“invalid conversion from ‘const char*’ to ‘char*’ [-fpermissive]”

La finalité c’est pour une webradio, de pouvoir séparer l’artiste et le titre de la chanson et l’afficher sur un écran Nextion.

le titre arrive sous la forme :

info StreamTitle="Raiders - Indian Reservation (the Lament Of The Cherokee Reservation Indian) "

avec un espace à la fin.

Sinon, avez vous une solution qui fonctionne pour réaliser ce partage entre artiste et titre ?

Merci.

const char *titre = "Raiders - Indian Reservation (the Lament Of The Cherokee Reservation Indian) ";

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  Serial.println("debut");
  audio_showstreamtitle(titre);
}

void loop() {
  // put your main code here, to run repeatedly:

}

void audio_showstreamtitle(const char *title) {
  Serial.print("streamtitle : "); Serial.println(title);
    size_t longueur = strlen(title);
    Serial.print("longueur = "); Serial.println(longueur);

    const char *singer, *titre;

    singer = strtok(title, "-");
    titre = strtok(0, "\0") + 1;

    Serial.print("Singer = ");Serial.println(singer);
    Serial.print("Title = ");Serial.println(titre);
//   NEXTION_SendString("t1", singer);
//   NEXTION_SendString("g0", titre);

}


void NEXTION_SendString (const char *ID, const char *string)
{
  char buf[100];
  int len = sprintf (buf, "%s.txt=\"%s\"", ID, string);
  Serial2.write(buf, len);
  Serial2.write(0xff);
  Serial2.write(0xff);
  Serial2.write(0xff);
}

Configuration finale:
ESP32, MAX98357R, écran Nextion 2.4" NX3224T024_011

Bonjour,

strtok modifie la chaine de caractère passée en paramètre, ce ne doit pas être une constante.

Bonjour Kamil,
Une ébauche de solution alors pour séparer le nom de l’artiste du titre 3 ?
Peut être sans utiler strtok ?

Merci

Soit title n’est pas vraiment une constante et tu ne le déclares par comme constante, soit c’est vraiment une constante et tu en fais une copie

  char * titleBis = strdup(title);
  singer = strtok(titleBis, "-");
  titre = strtok(0, "\0") + 1;
  delete titleBis;

Tu devrais plutôt utiliser strstr pour trouver " - ", puis utiliser str(n)cpy pour copier dans des tableaux de char ce qui est avant et après " - ".

Un exemple ici : 9EfgsG - Online C++ Compiler & Debugging Tool - Ideone.com

Bonjour,

Merci à toi Kamil, et guix,

Finalement j’ai pris la solution à guix et ça fonctionne.

Je continue à avancer sur ce programme de Webradio.

Merci.

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