IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Arduino Discussion :

invalid conversion from 'void (*)(const uint8_t*, const uint8_t*, int) [Arduino ESP32]


Sujet :

Arduino

  1. #1
    cal
    cal est déconnecté
    Futur Membre du Club
    Inscrit en
    Juillet 2005
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 8
    Points : 9
    Points
    9
    Par défaut invalid conversion from 'void (*)(const uint8_t*, const uint8_t*, int)
    Bonjour à tous,

    je souhaite mettre en œuvre une communication entre deux esp32 avec le protocole espnow (moins énergivore que le wifi). Afin de comprendre le fonctionnement j'ai téléchargé des exemples pour les analyser mais lorsque que je lance la vérification j'ai une erreur que je ne sais pas identifier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    invalid conversion from 'void (*)(const uint8_t*, const uint8_t*, int)' {aka 'void (*)(const unsigned char*, const unsigned char*, int)'} to 'esp_now_recv_cb_t' {aka 'void (*)(const esp_now_recv_info*, const unsigned char*, int)'} [-fpermissive]
    A noter que c'est depuis la mise à jour des librairies.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    /
    **/   ESPNOW - Basic communication - Slave
       Date: 26th September 2017
       Author: Arvind Ravulavaru <https://github.com/arvindr21>
       Purpose: ESPNow Communication between a Master ESP32 and a Slave ESP32
       Description: This sketch consists of the code for the Slave module.
       Resources: (A bit outdated)
       a. https://espressif.com/sites/default/files/documentation/esp-now_user_guide_en.pdf
       b. http://www.esploradores.com/practica-6-conexion-esp-now/
     
       << This Device Slave >>
     
       Flow: Master
       Step 1 : ESPNow Init on Master and set it in STA mode
       Step 2 : Start scanning for Slave ESP32 (we have added a prefix of `slave` to the SSID of slave for an easy setup)
       Step 3 : Once found, add Slave as peer
       Step 4 : Register for send callback
       Step 5 : Start Transmitting data from Master to Slave
     
       Flow: Slave
       Step 1 : ESPNow Init on Slave
       Step 2 : Update the SSID of Slave with a prefix of `slave`
       Step 3 : Set Slave in AP mode
       Step 4 : Register for receive callback and wait for data
       Step 5 : Once data arrives, print it in the serial monitor
     
       Note: Master and Slave have been defined to easily understand the setup.
             Based on the ESPNOW API, there is no concept of Master and Slave.
             Any devices can act as master or salve.
    */
     
    #include <esp_now.h>
    #include <WiFi.h>
     
    #define CHANNEL 1
     
    // Init ESP Now with fallback
    void InitESPNow() {
      WiFi.disconnect();
      if (esp_now_init() == ESP_OK) {
        Serial.println("ESPNow Init Success");
      }
      else {
        Serial.println("ESPNow Init Failed");
        // Retry InitESPNow, add a counte and then restart?
        // InitESPNow();
        // or Simply Restart
        ESP.restart();
      }
    }
     
    // config AP SSID
    void configDeviceAP() {
      const char *SSID = "Slave_1";
      bool result = WiFi.softAP(SSID, "Slave_1_Password", CHANNEL, 0);
      if (!result) {
        Serial.println("AP Config failed.");
      } else {
        Serial.println("AP Config Success. Broadcasting with AP: " + String(SSID));
        Serial.print("AP CHANNEL "); Serial.println(WiFi.channel());
      }
    }
     
    void setup() {
      Serial.begin(115200);
      Serial.println("ESPNow/Basic/Slave Example");
      //Set device in AP mode to begin with
      WiFi.mode(WIFI_AP);
      // configure device AP mode
      configDeviceAP();
      // This is the mac address of the Slave in AP Mode
      Serial.print("AP MAC: "); Serial.println(WiFi.softAPmacAddress());
      // Init ESPNow with a fallback logic
      InitESPNow();
      // Once ESPNow is successfully Init, we will register for recv CB to
      // get recv packer info.
      esp_now_register_recv_cb(OnDataRecv);
    }
     
    // callback when data is recv from Master
    void OnDataRecv(const uint8_t *mac_addr, const uint8_t *data, int data_len) {
      char macStr[18];
      snprintf(macStr, sizeof(macStr), "%02x:%02x:%02x:%02x:%02x:%02x",
               mac_addr[0], mac_addr[1], mac_addr[2], mac_addr[3], mac_addr[4], mac_addr[5]);
      Serial.print("Last Packet Recv from: "); Serial.println(macStr);
      Serial.print("Last Packet Recv Data: "); Serial.println(*data);
      Serial.println("");
    }
     
    void loop() {
      // Chill
    }
    extrait de l'erreur du compilateur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Arduino : 1.8.13 (Windows 10), Carte : "ESP32-WROOM-DA Module, Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS), 240MHz (WiFi/BT), QIO, 80MHz, 4MB (32Mb), 115200, Core 1, Core 1, None, Disabled"
     
     
     
    sketch_oct15-recepteur:77:28: error: invalid conversion from 'void (*)(const uint8_t*, const uint8_t*, int)' {aka 'void (*)(const unsigned char*, const unsigned char*, int)'} to 'esp_now_recv_cb_t' {aka 'void (*)(const esp_now_recv_info*, const unsigned char*, int)'} [-fpermissive]
     
       77 |   esp_now_register_recv_cb(OnDataRecv);
    Je comprend (sauf erreur de ma part) que le format de déclaration des constantes n'est pas celui attendu mais je ne sais pas comment résoudre ça car je ne maitrise pas du tout le sujet.

    Merci de votre aide

  2. #2
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 841
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 841
    Points : 5 747
    Points
    5 747
    Par défaut
    Si vous regardez dans le gestionnaire de cartes, pour les ESP32 vous êtes en 2.0.xxx ou en 3.0.yy ?

    Sans doute que le code que vous avez provient d'un exemple pour l'ancienne version 2.0.xx et ils ont changé des choses dans les dernières versions du firmware des ESP.

    allez regarder leur exemple mis à jour

    https://github.com/espressif/arduino...NOW%2Fexamples

  3. #3
    cal
    cal est déconnecté
    Futur Membre du Club
    Inscrit en
    Juillet 2005
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 8
    Points : 9
    Points
    9
    Par défaut
    Bonjour JAY M
    merci pour votre réponse, je suis bien sur une ancienne version (2.0.18), je vais quand même jeter un coup d’œil sur les nouveaux exemples
    Cordialement

  4. #4
    cal
    cal est déconnecté
    Futur Membre du Club
    Inscrit en
    Juillet 2005
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 8
    Points : 9
    Points
    9
    Par défaut resolu
    Bonjour
    Finalement j'ai résolu mon problème en rechargeant des anciennes librairies. J'ai pu progressé dans mon projet mais je tombe sur un autre problème, je vais donc recréer une discussion et passer celle-là à "résolu".

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 07/07/2014, 13h02
  2. Réponses: 4
    Dernier message: 15/10/2008, 22h30
  3. Réponses: 7
    Dernier message: 16/02/2008, 08h30
  4. error: invalid conversion from `const wxChar*' to `CHAR*'
    Par barbarello dans le forum wxWidgets
    Réponses: 16
    Dernier message: 31/01/2006, 12h28
  5. Réponses: 2
    Dernier message: 24/12/2005, 12h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo