查看: 2830|回复: 2

RT1052+pahoMQTTClient的移植实现

[复制链接]
  • TA的每日心情
    慵懒
    前天 09:38
  • 签到天数: 1417 天

    [LV.10]以坛为家III

    48

    主题

    3500

    帖子

    21

    金牌会员

    Rank: 6Rank: 6

    积分
    7329
    最后登录
    2024-4-30
    发表于 2018-11-30 17:04:05 | 显示全部楼层 |阅读模式
    前一篇我们已经成功的连上网络并自动获取到了IP,今天我们来学习下pahomqtt客户端的简单实现


    pahoMqttClient的源码包可以在官网找到,我们也可以在Keil Pack包里面安装
    TIM图片20181130153714.png


    源码包在KEIL安装目录下,和之前的cjson包静静的躺一起
    TIM图片20181130154035.png


    源码包里面MQTTPacket主要包含了MQTT的编解码,订阅等协议的解析内容,而MQTTClient-C就是我们需要和自己开发板匹配的接口文件,MQTTClient是给arduino,mbed移植用的,不用管它
    TIM图片20181130153809.png


    把整个包都拷贝到自己工程之下,可以放到SDK_2_3_1_EVKB_IMXRT1050_OK1052\OK1052-C_32M_sdram\middleware,因为第三方的软件包像lwip,fatfs什么都是放在这个位置
    TIM图片20181130154756.png


    准备工作都OK了,接下去就移植到自己的平台,打开Paho_MQTT\1.0.0\MQTTClient-C\src,可以看到如下内容MQTTClient.c.h就是客户端使用的一些API函数,包括MQTT连接,订阅,推送,接收等,可以直接用。红框内的就是和板卡的接口函数实现,这里提供了CC3200,linux等的示例参考
    TIM图片20181130154601.png


    这里我选择FreeRTOS的这个做参考,因为系统跑的也是FreeRTOS嘛,方便一些
    这几个函数可以直接删了,没用
    TIM图片20181130155542.png


    修改以下几个函数就可以,这些都是调用的FreeRTOS自己的socket,而我们用的是lwip的socket,将其替换掉,相应的头文件包含一下
    TIM图片20181130155617.png
    TIM图片20181130155629.png
    TIM图片20181130155642.png
    TIM图片20181130155653.png


    库本身是支持域名解析的,所以需要在lwipopts.h配置文件开启DNS解析
    #define LWIP_DNS                1


    修改完接口函数之后,可以使用MQTTClient-C\samples\FreeRTOS目录下的例程进行测试,具体的流程如下
    TIM图片20181130153208.png


    TIM图片20181130153248.png


    运行结果可以使用pahomqtt的客户端,登录订阅查看,可以看到发送和接收都是正常的
    TIM截图20181128142548.png


    TIM图片20181130152709.png


    以上就是简单的客户端移植,之后可以加入一些判断,重连等机制使其更稳定的运行


    附上我修改的接口文件和测试代码 MQTTEcho.rar (3.85 KB, 下载次数: 20)
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情

    2018-11-11 18:46
  • 签到天数: 1 天

    [LV.1]初来乍到

    9

    主题

    19

    帖子

    0

    注册会员

    Rank: 2

    积分
    92
    最后登录
    2018-12-4
    发表于 2018-12-2 20:13:51 | 显示全部楼层
    LWIP连接服务器函数怎么用的
    哎...今天够累的,签到来了~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    前天 09:38
  • 签到天数: 1417 天

    [LV.10]以坛为家III

    48

    主题

    3500

    帖子

    21

    金牌会员

    Rank: 6Rank: 6

    积分
    7329
    最后登录
    2024-4-30
     楼主| 发表于 2018-12-2 20:54:04 | 显示全部楼层
    橘子爱梨子 发表于 2018-12-2 20:13
    LWIP连接服务器函数怎么用的

    我一般都用socket编程的,流程就是
    先socket(),然后connect()连接服务器,然后send()发送数据,recv()接受函数,这样。
    你有原子或者野火的板子吗?他们有很多网络例程的,还有讲解,可以看下。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-5-2 06:01 , Processed in 0.127178 second(s), 24 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表