我正在使用 RTOS SDK 附带的示例之一:(examples/protocols/mqtt/tcp) 并且我添加了串行端口,因为我想发送要发布到 MQTT 代理的数据。所以在我的 UART 队列中,我调用
代码:
全选esp_mqtt_client_publish()
但我没有客户端句柄,它只在回调中设置。我尝试使用客户端句柄的全局副本,但它没有用,除了是个坏主意:
代码:
全选esp_mqtt_client_handle_t gclient = NULL;
sta
tic esp_err_t mqtt_event_handler_cb(esp_mqtt_event_handle_t event)
{
esp_mqtt_client_handle_t client = event->client;
gclient = client;
int msg_id;
// your_context_t *context = event->context;
switch (event->event_id) {
case MQTT_EVENT_CONNECTED:
ESP_LOGI(TAG, \"MQTT_EVENT_CONNECTED\");
msg_id = esp_mqtt_client_subscribe(client, \"debug/test1\", 0);
ESP_LOGI(TAG, \"sent subscribe successful, msg_id=%d\", msg_id);
msg_id = esp_mqtt_client_subscribe(client, \"debug/test2\", 1);
ESP_LOGI(TAG, \"sent subscribe successful, msg_id=%d\", msg_id);
/*
msg_id = esp_mqtt_client_publish(client, \"/topic/qos1\", \"data_3\", 0, 1, 0);
ESP_LOGI(TAG, \"sent publish successful, msg_id=%d\", msg_id);
有没有什么优雅的方法可以让客户端在回调之外处理?或者另一种方法是创建自定义事件并将该消息发送到回调?