This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] LAUNCHCC3220MODASF:CC3220MODASF 上的并发 MQTT 和 HTTP 连接存在问题

Guru**** 2350460 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1460205/launchcc3220modasf-issue-with-concurrent-mqtt-and-http-connections-on-cc3220modasf

器件型号:LAUNCHCC3220MODASF

工具与软件:

大家好!

我是 TI 系列的新用户、目前使用 CCS v12.4.0。 我正在处理一个具有 CC3220MODASF (SimpleLink CC32xx SDK 4.10.00.07)和适用于 CC32xx 的 Azure SDK (azure_cc32xx_4.10.01.01)的项目。 我的目标是使用 MQTT 向 Azure IoT Hub 发送消息、并使用 HTTPS 将文本文件记录到 Azure Blob Storage。

MQTT 到 Azure IoT Hub 的连接运行正常、但在尝试连接到 Azure Blob Storage 的同时保持 MQTT 连接处于活动状态时遇到问题。 具体来说,当我尝试向 Azure Blob 存储发送请求时,我收到了400个错误的请求响应。

如果我在建立 MQTT 连接后未断开与 MQTT 的连接、尝试连接到 HTTP、则无法连接、并且收到400错误(URL 有问题)。 但是、如果我在 MQTT 连接之前或使用同一 URL 关闭 MQTT 连接后连接到 HTTP、则可以正常运行。 我已经检查了内存使用情况、似乎不是问题。

以下是 MQTT 和 HTTP 单独使用(而非并发使用)的内存详细信息

MQTT 连接

  • MQTT 连接前准备的电源
    • 共计:32768
    • 免费:9336
    • 最大的自由块:9288
  • MQTT 连接后运行
    • 共计:32768
    • 免费:7032
    • 最大的自由块:6480

HTTP 连接

  • HTTP 连接之前
    • 共计:32768
    • 免费:9336
    • 最大的自由块:9288
  • 完成 HTTP 连接后
    • 共计:32768
    • 免费:7336
    • 最大的自由块: 6736.

下面是我的代码片段:


httpClientHandle = HTTPClient_create(&statusCode, 0);
    if (statusCode < 0) {
        printError("httpTask: creation of HTTP client handle failed", statusCode);
        return NULL;
    } else {
        Display_printf(display, 0, 0, "httpTask: HTTP client handle created successfully\r\n");
        Display_printf(display, 0, 0, "HTTP client handle value: %p\r\n", httpClientHandle);
    }

    ret = HTTPClient_connect(httpClientHandle, HOSTNAME, &secParams, 0);
    if (ret < 0) {
        printError("httpTask: connect failed", ret);
        HTTPClient_destroy(httpClientHandle);
        return NULL;
    } else {
        Display_printf(display, 0, 0, "httpTask: Connected to host successfully\r\n");
        Display_printf(display, 0, 0, "HTTP connection status value: %d\r\n",ret);
    }


    Display_printf(display, 0, 0, "REQUEST_URL2  '%s'\r\n", REQUEST_URI_2);


    // Set the necessary headers
    HTTPClient_setHeaderByName(httpClientHandle, HTTPClient_REQUEST_HEADER_MASK, "x-ms-blob-type", "AppendBlob", strlen("AppendBlob"), HTTPClient_HFIELD_NOT_PERSISTENT);
    HTTPClient_setHeaderByName(httpClientHandle, HTTPClient_REQUEST_HEADER_MASK, "If-None-Match", "*", strlen("*"), HTTPClient_HFIELD_NOT_PERSISTENT);
    HTTPClient_setHeaderByName(httpClientHandle, HTTPClient_REQUEST_HEADER_MASK, "Content-Length", "0", strlen("0"), HTTPClient_HFIELD_NOT_PERSISTENT);

    ret = HTTPClient_sendRequest(httpClientHandle, HTTP_METHOD_PUT, REQUEST_URI_2, NULL, 0, 0);
    if (ret < 0) {
        Display_printf(display, 0, 0, "httpTask: send request failed", ret);
        HTTPClient_disconnect(httpClientHandle);
        HTTPClient_destroy(httpClientHandle);
        return NULL;
    }
    Display_printf(display, 0, 0, "HTTP Response Status Code: %d\n", ret);

    if (ret == HTTP_SC_PRECONDITION_FAILED ||ret == HTTP_SC_CONFLICT ) {
        Display_printf(display, 0, 0, "Blob exists.\n");
        // Proceed with appending logs
        httpTask_logs_Appending(body);
    } else if (ret == HTTP_SC_CREATED) {
        Display_printf(display, 0, 0, "Blob did not exist and was created.\n");
        httpTask_logs_Appending(body);

    }  else if (ret == HTTP_SC_BAD_REQUEST) {

        Display_printf(display, 0, 0, "BAD_REQUEST  status code: %d\n", ret);

    }

    else {

        Display_printf(display, 0, 0, "Unexpected status code: %d\n", ret);
    }

    ret = HTTPClient_disconnect(httpClientHandle);
    if (ret < 0) {
        printError("httpTask: disconnect failed", ret);
    }
    sleep(3);
    HTTPClient_destroy(httpClientHandle);

    return NULL;
}


这 是我的日志

httpTask:已成功创建 HTTP 客户端句柄

HTTP 客户端句柄值:@200069c8

httpTask:已成功连接到主机

HTTP 连接状态值:0

HTTP 响应状态代码:400

错误请求状态代码:400

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、有任何与此相关的更新吗? 我目前在本部分被阻止、非常感谢您的帮助。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    很抱歉响应延迟、您是否知道 HTTP 数据包是否确实离开了设备? 一、Wi-Fi 无线监听器?

    Shlomi