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.

[参考译文] CC3220SF:CC3220sf-使用(MQTTClient_publish) API 持续发布 MQTT

Guru**** 1626620 points
Other Parts Discussed in Thread: CC3220SF, TIDC-01005
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/875269/cc3220sf-cc3220sf--issue-with-continuous-mqtt-publish-using-mqttclient_publish-api

器件型号:CC3220SF
主题中讨论的其他器件: TIDC-01005

您好!

我一直在使用 CC3220sf launchpad 并在 WiFi 门锁参考设计( TIDC-01005)上开发我的应用。

我开发了具有 MQTT 功能的应用程序、以便与云(AWS)进行通信、我成功地发布了 MQTT 并订阅了消息。

一切都正常、直到我今天发现 MQTT 发布的错误。

问题:

当我将 MQTT 消息一个接一个地发布到 AWS 代理时、延迟了一段时间、控制器(CC3220SF)被挂起、直到我对板进行电源复位后、它才会恢复。

这里可能是什么原因? 当 MQTTClient_publish API 由于某种原因无法发布消息时,是否有任何超时或以任何方式返回并运行正常代码?

下面是我的 API

MQTTClient_publish (
app_bc.mqttClientHandle、(char*) publish_topic、
strlen((char*) publish_topic[0])、(char*) readbuff、
strlen((char*) readbuff),
MQTT_QOS_0 |(retain_enable)?
MQTT_publish_retain:0));

 

 

这种情况现在还没有发生。

此致

Sanath

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

    您好、Sanath、

    您是在 CC32xx SDK 中使用 MQTT 库、还是使用 AWS 插件或 AWS SDK?

    如果您使用的是 MQTT 库,请尝试添加断点并单步执行 MqttClient_send(),并注意哪个 API 不会返回。 您可以通过将 source/ti/net/MQTT/interface/mqttclient.c 作为文件添加到项目中来执行此操作。

    我还建议检查任何线程中的堆栈溢出。 如果您使用的是 TI-RTOS 和 CCS、则可以使用 ROV 工具: http://dev.ti.com/tirex/explore/node?node=AEwahlHnEy6Wj4XMYzQTrQ__fc2e6sr__LATEST

    此致、

    Sarah

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

    您好、Sarah、

    谢谢、

    我不使用 AWS SDK。我在 WiFi 门锁参考设计中使用 CC3220 SDK

    我将会看一下它。

    此致

    Sanath

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

    您好、Sarah、

    我发现了该错误,而不是因为 MQTT publish.it而是因为用作开关的外部中断。 我写了一个逻辑 、用于在电路板上按住开关5秒钟时发布消息。按下开关时  

    控制器会挂起5秒钟。

    我不知道导致这种情况的原因是什么、是开关问题还是逻辑问题。

    我更换了电路板上的开关、工作了半小时、我认为是开关问题、但新开关也突然再次出现了问题。

    我正在使用的逻辑是、当按下按钮时、我将 GPIO 用作两个边沿的外部中断。计时器将启动、计数到 5秒、当我离开时、任务将被执行。

    我之前甚至评论了 MQTT 发布 API、认为它可能会导致这种情况。 但它仍然挂起、以确保它是开关或中断逻辑问题。

    我不明白为什么它会使控制器挂起? 如何解决这一问题?

    注意:我使用的中断逻辑与 WiFi 门锁参考 project.it 中使用的中断逻辑相同、甚至还有软件去抖计时器。

    此致

    Sanath

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

    您好、Sanath、

    您能否分享一下您是如何实现中断处理程序的?

    此致、

    Sarah

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

    您好、Sarah、

    该问题是由 UART_WRITE 引起的、我在中断处理程序内调用 UART_WRITE。

    当我从那里移除它时、它工作正常。

    现在、我需要找到一种以其他方式使用 UART_WRITE 的方法。

    UART_WRITE (uartHandle、"^[B]>"、5);

    此致

    Sanath