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.

[参考译文] CC3220:在定制项目中实现 MQTT

Guru**** 2526700 points
Other Parts Discussed in Thread: CC3220SF, UNIFLASH

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/771739/cc3220-implementing-mqtt-in-customized-project

器件型号:CC3220

您好!

我在"mqTT client"项目中尝试了 MQTT 客户端订阅和发布、但它的工作正常。

我正在 尝试在 SDK 的"开箱即用"项目中集成相同的 MQTT。

因此、器件启动正常后、我将在"link_local_task.c"的 getDeviceType ()中打印"[Provisioning task] detected device is CC3220SF"

在此步骤旁边、我调用了"mqTT_client_app.c"的以下任务

//在此处启动 MQTT //
UART_PRINT ("MQTT 任务开始\n");

pthread_t MQTTThreads =(pthread_t)空;
int32_t RetVal;
pthread_attr_t pAttrs;
struct sched_param primParam;
pthread_attr_init (&pAttrs);
priParam.sched_priority = 1;
RetVal = pthread_attr_setschedparam (&pAttrs、&priParam);
RetVal |= pthread_attr_setstacksize (&pAttrs、4096);

if (重定位)
{
/*句柄错误*/
UART_PRINT ("无法配置线程参数\n");
while (1)
{
;
}
}

RetVal = pthread_create (&MQTTThreads、&pAttrs、MQTTThread、NULL);

if (重定位)
{
/*句柄错误*/
UART_PRINT ("无法创建线程\n");
while (1)
{
;
}
} 

从 MQTT 客户端项目导入并编辑的文件是

e2e.ti.com/.../5826.mqtt_5F00_client_5F00_app.c

e2e.ti.com/.../2376.mqtt_5F00_client_5F00_app.h

e2e.ti.com/.../5241.client_5F00_cbs.c

e2e.ti.com/.../1220.client_5F00_cbs.h

e2e.ti.com/.../1803.network_5F00_if.c

e2e.ti.com/.../3022.network_5F00_if.h

请查找附件以查看代码更改。

原因1:如果使用 CCS Uniflash 刷写、我将无法获取打印"MQTT 任务启动"、我将按如下方式进行打印

交换机(deviceType)
{
case DEV_TYPE_CC3220R:// 3220R
UART_PRINT ("[配置任务]检测到的器件为 CC3220R\n");
中断;
case DEV_TYPE_CC3220RS:// 3220RS
UART_PRINT ("[配置任务]检测到的器件为 CC3220RS\n\n");
中断;
case DEV_TYPE_CC3220FS:// 3220FS
{
UART_PRINT ("[Provisioning task]检测到的器件为 CC3220SF\n\n");

//在此处启动 MQTT //
UART_PRINT ("MQTT 任务开始\n");

pthread_t MQTTThreads =(pthread_t)空;
int32_t RetVal;
pthread_attr_t pAttrs;
struct sched_param primParam;
pthread_attr_init (&pAttrs);
priParam.sched_priority = 1;
RetVal = pthread_attr_setschedparam (&pAttrs、&priParam);
RetVal |= pthread_attr_setstacksize (&pAttrs、4096);

if (重定位)
{
/*句柄错误*/
UART_PRINT ("无法配置线程参数\n");
while (1)
{
;
}
}

RetVal = pthread_create (&MQTTThreads、&pAttrs、MQTTThread、NULL);

if (重定位)
{
/*句柄错误*/
UART_PRINT ("无法创建线程\n");
while (1)
{
;
}
}

中断;
默认值:
中断; 

原因2:如果我进行了 JTAG 调试,则大部分时间设备通过打印“

[配置任务]提交新下载失败、通过重新发送器件恢复到以前的副本"以及其他一些时间。

极少时间"连接到代理失败、错误代码:-1 "

请告诉我这方面的解决方案、

谢谢你

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

    您的 OOB + MQTT 项目目标是什么?
    根据您尝试执行的操作、此项目可能有更合适的起点、可能更易于使用和开发。 使用 OOB 项目、您可以使用 HTTP 服务器、配置任务、OTA 功能以及许多其他功能位、这些功能可能不一定会使调试复杂化。

    如果您希望继续使用当前的 OOB + MQTT 项目、您可以查看以下几项来开始调试。
    使用 CCS uniflash 情况、您认为从您可以看到的终端打印件来看、您在哪里卡住了?
    在调试器的情况下、如果您单步执行程序、或者可能在"Failed to commit new download"消息之前放置一个断点、那么您在该点之前是否观察到任何异常情况? 是否有错误消息?

    此致、
    Michael
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Michael、
    我希望在项目中使用开箱即用项目的"供应"任务。
    同样、我要使用 HTTP GET、HTTP POST、MQTT PUB 和 MQTT 子项。
    哪一项可在 CC3220中满足我的上述要求?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    鉴于您需要所有这些功能、从智能锁参考设计开始可能是有道理的:
    www.ti.com/.../tidc-01005

    该代码具有配置和 MQTT 以及您可能希望在产品中使用的 OTA。 尽管它具有某些特定于电子锁的功能、但该功能应可轻松替换为您自己的产品代码。 与添加 MQTT 或配置相比、添加 HTTP 功能应该简单明了、您可以查看 HttpGet 示例以了解如何使用我们的 HTTP 客户端库。

    此致、
    Michael