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.

[参考译文] CCS/CC3200:CC3200:MQTT 重新连接

Guru**** 2769425 points

Other Parts Discussed in Thread: CC3200

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/782611/ccs-cc3200-cc3200-mqtt-reconnection

器件型号:CC3200

工具/软件:Code Composer Studio

您好!

我在 MQTT_CLIENT 示例项目的帮助下编写了代码。 如果互联网连接不足、我的代码可通过 MQTT 重新连接正常工作。 但在 WiFi 重新连接后、它不会连接到代理。 使用 WiFi 重新连接后、代码在 MQTT 代理连接处卡住、并打印 3C:FH-B1 0x10至网络16、发送(52字节)[@ 0]。 在 CC3200中 MQTT 重新连接的理想流程是什么?  

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

    您能否描述一下在 Wi-Fi 断开和重新连接序列后、应用程序当前如何处理 MQTT 客户端设置/连接? 它是否与示例中的相同?

    一般来说、我们的器件没有特定的重新连接流程。 它应基于客户端使用的服务器/选项的要求。 例如、如果 MQTT 服务器支持客户端接管、则设备应能够像最初连接时那样简单地重新连接、并在使用"干净会话"时重新订阅主题。

    如果您在某些情况下看到此序列在演示中不起作用、则可能是代码中重新创建客户端上下文并重新连接时出现问题。

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

    您好 Benjamin、

    只要器件连接到互联网、MQTT 功能就会启动。  

    while (1){

    if (Connect_TO_Wifi ()=true)

    START_MQTT ();

    我已经使用了示例代码来实现、我不需要代码的队列部分、因此我删除了该代码。 最初、MQTT 代码按照预期工作。 但是、如果 MQTT 重新连接(在 WiFi 重新连接后)、设备将无法连接到代理。 如果我在 MQTTClient 函数末尾的标签中使用函数"sl_ExtLib_MqttClientDisconnect "、代码将在断开连接后停止、之后不会发生任何情况。  

    我尝试在  "sl_MqttDisconnect "回调中使用"sl_ExtLib_MqttClientExit()"、但在重新连接的情况下、代码在连接部分停止。 同样,fucn"sl_ExtLib_MqttClientCtxDelete()"也会导致类似的问题(sl_ExtLib_MqttClientCtxDelete 函数存在一些互斥锁问题)。  

    可以使用什么方法来解决该问题?

    谢谢、  

    特鲁普蒂。

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

    您好、Trupti、

    [引用 user="Trupti Jadhav"]同样,funtion "sl_ExtLib_MqttClientCtxDelete()"会导致类似的问题(sl_ExtLib_MqttClientCtxDelete 函数存在一些互斥锁问题)。[/quot]

    请详细说明这一点。 什么互斥锁问题? 这就是当前 MQTT_CLIENT 示例当前处理断开连接/重新连接的方式、它在我的测试中运行良好。

    您是否根本没有使用 RTOS?

    谢谢、

    本·M

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

    我一段时间内没有听到您的反馈、因此我假设您已经从这个问题着手。 我将关闭该线程。 如果您有关于此主题的其他问题、您可以通过发布新答复来再次打开主题。 如果该线程在您返回之前锁定、您可以打开引用此帖子的新线程、并在顶部显示"提出相关问题"按钮。

    最棒的
    本·M