Comment faire un Serial.print quand ca bug

Bonjour à tous,

Suis désolé pour cette question.
Mais j’ai toujours pu faire un Serial.println() sauf que la , ca bug pour un uint8_t.

J’ai cette fonction

bool Adafruit_MQTT_Client::sendPacket(uint8_t *buffer, uint16_t len) {
  Serial.print(F("mqtt.h: "));
  Serial.println(buffer);

[... code ...]
}

Au niveau du Serial.println(), mon terminal m’affiche cette erreur

C:\Users\pierrot\Documents\Arduino\libraries\Adafruit_MQTT_Library\Adafruit_MQTT_Client.cpp:79:24: error: call of overloaded ‘println(uint8_t*&)’ is ambiguous

Serial.println(buffer);

Mais pourquoi il est ambigus?
Que puis-je faire pour qu’il ne le soit pas? C’est pourtat un simple Serial.println()

:o

bonjour, si tu mettais ton code, ca serait plus pratique pour répondre

A mon avis, c'est parce qu vous voulez faire un print sur un buffer dont on ne connait pas la longueur. On ne connait que son pointeur *buffer.

Peut-être qu'un :

int i = 0;

while(buffer[i] != 0x00) {
  Serial.print(buffer[i]);
  i++;
}

Cordialement.

Pierre

+1, c’est pour cela que le code serait bon a voir :wink:
on peut utiliser une boucle for aussi

C'est le type utilisé qui rend la méthode ambiguë. Le compilateur ne sais pas si le buffer contient du texte ou un tableau de valeurs Il suffit de faire un cast

 Serial.print((char*)buffer);

Si buffer contient bien une chaîne de caractères évidemment. S'assurer aussi que la chaîne est bien terminée avec un \0 ça dépend de comment tu as construit la chaîne en question.

En fait tu n'as donné que la fin du message d'erreur du compilateur. Si tu regardes le début du message retourné lors de la compilation, le compilateur te donne la liste de toutes les méthodes de Serial.println() avec les types supportés. Or uint8_t n'est pas connu donc il ne sait pas faire correspondre une méthode avec le code que tu as rentré.