建立一个库,以便立即发送数据

时间:2019-07-30 18:44:13

标签: c++ esp32

我想创建一个使用esp-now上传文件的库。 .h文件是

#ifndef TELEMETRIA_h
#define TELEMETRIA_h
#include "Arduino.h"
#include "WiFi.h"
// canal usado para conexao

class TELEMETRIA {

public:
  // enum esp_now_send_status_t {
  //   ESP_NOW_SEND_SUCCESS,
  //   ESP_NOW_SEND_FAIL,
  //
  // };
  const int CHANNEL = 1;
  TELEMETRIA();
  void begin();
  void envia(int a, int b);
  uint8_t _broadcast[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
private:
  void OnDataSent(const uint8_t *mac_addr, uint8_t status);

};

#endif

cpp文件为:

#include "TELEMETRIA.h"
    #include "Arduino.h"
    #include "esp_now.h"
    //#include <WiFi.h>
    // cria um objeto que recebe como entrada o EspNow
    TELEMETRIA::TELEMETRIA() {}
    void TELEMETRIA::begin() {
      WiFi.mode(WIFI_STA);
      esp_now_init();
      // Criamos uma variável que irá guardar as informações do slave
      esp_now_peer_info_t slave;
      // Informamos o canal
      slave.channel = CHANNEL;
      // 0 para não usar criptografia ou 1 para usar
      slave.encrypt = 0;
      // Copia o endereço do array para a estrutura
      memcpy(slave.peer_addr, _broadcast, sizeof(_broadcast));
      // Adiciona o slave
      esp_now_add_peer(&slave);
      esp_now_register_send_cb(OnDataSent);
      // esp_now_register_send_cb(envia);

    }
void TELEMETRIA::OnDataSent(const uint8_t *_broadcast, esp_now_send_status_t status) {};
void TELEMETRIA::envia(int _a, int _b) {
  // Array que irá armazenar os valores lidos
  // Para cada pino
  uint8_t values[2];
  values[0] = _a;
  values[1] = _b;
  Serial.println("To enviando");
  esp_now_send(_broadcast, (uint8_t *)&values, sizeof(values));
}

这个想法是创建一个TELEMETRIA对象,然后调用TELEMETRIA.send(数据)函数来发送数据。

问题在于esp_now_register_send_cb(OnDataSent)函数; 说“错误:无效使用非静态成员函数”不起作用

0 个答案:

没有答案