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.

[参考译文] MSP432E401Y:使用 no-RTOS lwip MQTT 无法发布超过1024字节的数据

Guru**** 2528790 points
Other Parts Discussed in Thread: MSP432E401Y

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1108517/msp432e401y-unable-to-publish-data-more-than-1024-bytes-using-no-rtos-lwip-mqtt

器件型号:MSP432E401Y

您好!

我使用 MSP432E401Y 实现基于云的物联网数据记录。 我在非 RTOS 模式下使用了"simplelink_msp432e4_sdk_3_10_00_11" SDK、并将其 mbedtls 库与 lwip+MQTT 配合使用。

我已成功连接并发布高达1000字节的数据以保护 MQTT 代理(viz AWS / Mosquitto 等)。 但是、当我的数据长度超过1024字节时、在尝试发布数据时、代理无法接收到数据;相反、我与代理的连接已断开。 在 MQTT 库文件中、使用空 pbuf 调用'mqt_recv_callback'函数、这表示当我尝试发布超过1024字节的数据时连接断开。

观察结果:

如果数据长度小于1024字节、则数据会成功发布到任何 MQTT 代理

2.我尝试使用第三方 MQTT 客户端 viz. AWS 和 Mosquitto 安全代理上的'MQTT_box'发布长度为2048字节的数据、并成功发布。 (即 代理端无错误)

3.在 lwipopts.h 文件中,我已将宏设置为: #define tcp_WND  4096、 #define tcp_MSS   4096

4.在 mqtt_opt.h 文件宏中设置为 :#define MQTT_OUTPUT_RINGBUF_SIZE  5120

5.下面是 Wireshark 日志,其中以黄色突出显示的行表示设备(使用 lwip MQTT 文件)发布的数据以保护代理程序的安全。 但代理会发送断开连接、即(FIN、ACK)作为响应。

6.下面的 Wireshark 屏幕截图显示了当数据长度小于1024字节时成功发布的数据(请注意突出显示的黄色标记行)

 

请就此提出一些解决方案。

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

    您好!

    感谢您清晰地描述问题并展示您已采取的步骤。

    [引用 userid="259547" url="~/support/msp432e401y-unable to publish-data-more than 1024 bytese-using-no-rtos-lwip-msp432e401y1y-unable to publish-data-more than 1024 bytese-using -no-rtos-lwip-mqtt I 成功地在第三方和第三方 MQTT 上发布了2048字节的 MQTT 数据。] (即 代理端无错误)

    如果您使用第三方客户端发布1175个字节、会发生什么情况? 如果您尝试在代码中发送2048个字节、会发生什么情况?

    是否可以使用 Wireshark 捕获第三方客户端 TCP 事务?

    此致、

    Evan

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

    您好 Evan、感谢您的回复。

    1.当我尝试从第三方客户机发布数据时,它已成功发布。 此处随附了 Wireshark 屏幕截图。 请注意、在本例中、数据长度为1772字节。

    2.当我尝试从我的代码发送2048个字节时,结果是相同的,即它从 MQTT 代理获得 FIN、ACK,并断开连接。

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

    您是否能够检查数据包的内容以确定工作用例和非工作用例之间有何不同?

    此致、

    Evan