我想创建一个使用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)函数; 说“错误:无效使用非静态成员函数”不起作用