我试图为我的mqtt_client.h项目使用文件ESP32 32/Arduino IDE中定义的arduino-esp32 32方法:
我正努力用它来做一个事件处理程序。
我目前有:
#include <mqtt_client.h>
void MQTTEvent(esp_mqtt_event_t event) {
// process event
}
void setup() {
esp_mqtt_client_config_t mqtt_cfg;
mqtt_cfg.host = "192.168.0.126";
mqtt_cfg.port = 1883;
mqtt_cfg.client_id = "ESP32";
mqtt_cfg.uri = "HOMEPC";
mqtt_cfg.event_handle = MQTTEvent;
esp_mqtt_client_handle_t mqtt_client = esp_mqtt_client_init(&mqtt_cfg);
esp_mqtt_client_start(mqtt_client);
}
void loop() {
}..。但它失败了,因为:
*invalid conversion from 'void (*)(esp_mqtt_event_t)' to 'mqtt_event_callback_t {aka int (*)(esp_mqtt_event_t*)}' [-fpermissive]*
on line mqtt_cfg.event_handle = MQTTEvent;我找不到任何例子。有人能帮我吗?
发布于 2020-12-20 19:25:51
事件句柄的类型是错误的,它应该返回一个esp_err_t,因此如下所示:
esp_err_t MQTTEvent(esp_mqtt_event_t *event) {
...
return ESP_OK; // you will need to return esp error codes
}参见这里的定义:T
https://stackoverflow.com/questions/65383550
复制相似问题