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.

CC3235SF 的MQTT心跳包异常,OneNet数据下发异常

使用MQTT_3_1_1版本的MQTT,出现问题如下:

1、在百度云上发送、接收数据是正常的,心跳包也能正常打开,但是改变心跳包参数的时候不生效,一直都是默认的25s

2、在阿里云上发送、接收数据是正常的,但是无法开启心跳包,我们使用 MQTTClient_get 函数得到的值是一个空值,说明底层设置失败。

3、在OneNet上可以发送数据到OneNet服务器,但是不能接收到服务器下发的数据。

请帮忙分析一下在这个几个问题可能是什么原因导致的,或者在设置参数过程中需要注意什么?感谢支持。

  • 你用的SDK版本是多少,在例程中进行了哪些修改?
    更改参数后,重新烧录程序参数是否更改完成?
  • SDK版本是simplelink_cc32xx_sdk_4_10_00_07,是参照这个mqtt_client例程写的,云平台是我们基于OneNet、阿里云和百度云配置的。

    1、在百度云上发送、接收数据是正常的,心跳包也能正常打开,但是改变心跳包参数的时候不生效,一直都是默认的25s

    2、在阿里云上发送、接收数据是正常的,但是无法开启心跳包。

    3、在OneNet上可以发送数据到OneNet服务器,但是不能接收到服务器下发的数据。

    这三种情况是单独运行的,并且都是基于MQTT服务的,流程是一样的,调用的函数接口都是一样的,在百度云能上传下发数据,心跳包也能发送出来,说明模块的参数配置应该是成功的,到底有没有问题我不得而知,只能说设置函数返回了成功。并且因为你们SDK里边的给的查询API 是个空函数,是真的没办法确定。下面是查询函数原型。

    int16_t MQTTClient_get(MQTTClient_Handle handle, uint16_t option, void *value, uint16_t valueLength)
    {
    return 0;
    }

    并且我们使用软件模拟和云平台连接通信的时候是没有问题的。

    所以请你仔细看一下我这三个问题,帮忙分析分析

  • /**
     \brief     Get client parameters.
    
     This function can get different parameters from the client.
     Will message params, user name and password, keep alive time and
     clean/persistent session.
    
     \param[in] handle      handle to the MQTTClient instance
     \param[in] option      Define the actual option to set. Applicable values:
                               - #MQTTClient_USER_NAME
                               - #MQTTClient_PASSWORD
                               - #MQTTClient_WILL_PARAM
                               - #MQTTClient_KEEPALIVE_TIME
                               - #MQTTClient_CLEAN_CONNECT
     \param[in] value       Specifies a value for the option
     \param[in] valueLength Specifies the length of the value
    
     \return Success(0) or Failure(Negative number)
    
     \sa MQTTClient_Will
     */
    int16_t MQTTClient_get(MQTTClient_Handle handle, uint16_t option, void *value, uint16_t valueLength);


    通过这个API用户名、密码等信息,需要传入正确的参数
    
    参考以下两个例子,看下操作是否正确,第二个示例是将数据发送到IBM Watson IoT Platform云的 
    
    http://dev.ti.com/tirex/explore/node?node=AHJ8YEDDQKAGTuUKvUm0ig__fc2e6sr__LATEST
    http://dev.ti.com/tirex/explore/node?node=AOU6wxqd7QK3nTF1q4CG3g__fc2e6sr__LATEST

  • 你们的get函数是个空的,获取不到任何参数,你可以去C:\ti\simplelink_cc32xx_sdk_4_10_00_07\source\ti\net\mqtt\interface路径下的mqttclient.c文件里看看。我们在阿里云和百度云都已经调通了。就OneNet不能下发数据,上传数据是可以的,现在分析不出问题出在哪里。
  • 使用MQTTClient_get需要传入参数,看下上面关于函数的说明,不传入参数是获取不到数据的
  • 都说了你们给的函数原型是和空函数,空函数,空函数,你有没有进入到目录去看啊?
    你去下面这个目录里边看       C:\ti\simplelink_cc32xx_sdk_4_10_00_07\source\ti\net\mqtt\interface。   找到图片对应的函数原型。看看是不是我的SDK有问题??

  • 请问这个函数应该怎么去获取参数,把你获取的值给我看看呢?