本文介绍使用3.x和2.3.0版本的C Link SDK接入设备时,可能遇到的问题和解决方法。

背景信息

如果您尚未接入物联网平台,推荐使用最新版本的SDK。更多信息,请参见概述

为什么SDK传入的心跳间隔时间和MQTT Connect包的连接参数不一致?

SDK会将您传入的心跳间隔时间,翻倍作为MQTT Connect的参数传给物联网平台。

您可以在以下版本的SDK的文件中,修改对应的参数,调整所需的心跳间隔。

SDK版本 文件 参数
3.x ./src/mqtt/impl/iotx_mqtt_client.c _mqtt_connect
2.3.0 ./src/protocol/mqtt/client/mqtt_client.c iotx_mc_connect

如何修改通用配置?

如果使用SDK的编译系统,编译SDK库或可执行文件时,您可以在config文件或在SDK源码中,通过搜索定位到要修改的默认宏定义,手动将其修改。

常用的宏定义项如下所示:

宏定义项 说明
CONFIG_MQTT_TX_MAXLEN MQTT发送Buffer
CONFIG_MQTT_RX_MAXLEN MQTT接收Buffer
IOTX_MC_REQUEST_TIMEOUT_DEFAULT_MS 心跳间隔时间
IOTX_MC_KEEPALIVE_PROBE_MAX 最大心跳丢失次数

MQTT接入时,出现“mqtt read buffer is too short”错误时,该如何处理?

您可以通过设置MQTT的Buffer大小,解决该问题。SDK的MQTT的Buffer默认为1024个字节,当接收的单次MQTT消息长度超过该值时,就会出现此错误。

在SDK源码中搜索宏CONFIG_MQTT_RX_MAXLEN的值为所需的大小,可解决该问题。

同理,如果发送消息时遇到该报错,您可以修改CONFIG_MQTT_TX_MAXLEN的值,解决对应问题。

CoAP接入时,出现“The message length 2693 is too long”时,该如何处理?

该错误说明上报消息的程度过长。您可以修改COAP_MSG_MAX_PDU_LEN的值,解决该问题。