链接--->https://sanwen8.cn/p/649shZ1.html

OneNET现已全面适配标准MQTT协议,相信这一功能的增加会**便于开发者进行设备的接入。

OneNET提供了MQTT的C语言版本的SDK供大家使用,接下来我们将利用该SDK,将MQTT协议移植到麒麟座开发板上,希望这边文章能对希望使用MQTT接入OneNET的开发者提供一定帮助。☀

(本文中使用的SDK、调试工具、以及说明文档,均可以在官网文档中心中的MQTT专区下载)

 下载SDK 

(一)

▶ 首先进入我们的MQTT说明专区,找到C语言SDK下载链接,下载SDK。

其中:
mqtt/config.h

mqtt/mqtt.h

mqtt/mqtt_buffer.h

src/mqtt.c

src/mqtt_buffer.c

为MQTT相关的.c 以及.h文件sample/c/sample.c  是使用示例文件

 代码的移植

(二)

▶ 将上述.c 以及 .h 文件复制到 开发板的工程中 Protocol/mqtt目录下,在工程中添加mqtt.c以及mqtt_buffer.c文件(记得修改Include Path 路径)

▶ 由于SDK是在linux环境下编译以及测试的,移植到STM32环境下带来了平台的差异性。

▶ 主要记得修改如下地方:
1、修改MQTT相关的.h文件的include路径,使之与工程环境相匹配
2、屏蔽掉原来的assert函数,和inline关键字
3、修改分配的缓冲区的大小
    主要是  MqttSample_Init()函数中的Mqtt_InitContext() 函数,SDK中分配了 1<<20大小的字节,由于STM32资源有限,这里需要改小一点,本例中为1000字节。
4、修改接口的初始化、收、发函数。
    原SDK是在linux系统中利用网口来实现通信,而开发板中使用串口连接通信模块的形式实现通信,相关的函数都需要作相应的修改,详见代码文件。

— 代码示例 —

(三)

(1)源代码如下:

在平台创建一个公开协议产品(设备接入协议类型选择MQTT协议),这里不介绍产品创建过程,请参考平台文档中心“接入帮助”部分的相关内容。

(2)本例中的代码流程如下图:

(3)开发板资源分配如下:

代码中需要修改的参数位置:
main.c   
line 40:

line 789

esp8266.h  
line1 :

— SDK使用示例 —

(四)

▶ MQTT连接

▶ MQTT订阅

▶ MQTT发布消息

▶ MQTT回复命令

▶ MQTT上传数据

▶ 接收数据解析

— 代码接入测试 —

(五)

▶ 使用MQTT simulate device 来模拟同产品目录下的另外一个设备

▶ 打开设备电源,在调试串口目录下可以看到调试信息

▶ 使用模拟设备与平台建立连接

可以看到产品topic列表中已经有开发板所创建的 test_topic(订阅自动创建)

— topic发布以及接收测试 

(六)

▶ 在订阅框中输入key_press ,点击订阅(该topic为开发板按键发布消息的topic)

▶ 按下开发板上的key2,见调试信息:

▶ 触发消息之后,在模拟器侧,就可以收到该topic的消息了

▶ 使用模拟软件,向test_topic发送一则消息

▶ 在开发板侧,可以从调试信息中看到,已经收到了该topic消息

至此,topic的订阅与发布测试已完成。

— 命令下发与应答测试 —

(七)

▶ 在线发送命令给开发板

▶ 在调试信息中可以看到以及接收了该命令并成功解析

▶ 此时LED7已经被点亮

基于麒麟座开发板2.0的MQTT实现例程的更多相关文章

  1. AC6102开发板USB3.0测试和使用说明

    AC6102开发板USB3.0测试和使用说明 概述 AC6102上集成了一颗Cypress 推出的高性能USB3.0传输芯片CYUSB3014,Cypress称之为EZ-USBFX3.该芯片性能强劲, ...

  2. 基于uFUN开发板和扩展板的联网校准时钟

    项目概述 上周在uFUN试用群里看到管理员说试用活动快结束了,要抓紧完成评测总结,看大家的评测总结也都写了,我也不能落后啊!正好最近做的扩展板到手了,于是赶紧进行调试,做了一个不用校准的时钟,时钟这种 ...

  3. 基于uFUN开发板的RGB调色板

    前言 使用uFUN开发板配合Qt上位机,实现任意颜色的混合,Qt上位机下发RGB数值,范围0-255,uFUN开发板进行解析,然后输出不同占空比的PWM,从而实现通过RGB三原色调制出任意颜色. Qt ...

  4. 基于uFUN开发板的心率计(三)Qt上位机的实现

    前言 上两周利用周末的时间,分别写了基于uFUN开发板的心率计(一)DMA方式获取传感器数据和基于uFUN开发板的心率计(二)动态阈值算法获取心率值,介绍了AD采集传感器数据和数据的滤波处理获取心率值 ...

  5. 基于uFUN开发板的心率计(二)动态阈值算法获取心率值

    前言 上一篇文章:基于uFUN开发板的心率计(一)DMA方式获取传感器数据,介绍了如何获取PulseSensor心率传感器的电压值,并对硬件电路进行了计算分析.心率计,重要的是要获取到心率值,本篇文章 ...

  6. 千呼万唤始出来——uFUN开发板2.0开箱评测

    前言 今年3月,我参与了面包板社区组织的第一批uFUN开发板评测活动,并有幸能获得试用机会,那是我第一次了解到uFUN这个项目及背后的故事,4月份,uFUN 2.0版本来了,收到了张工送的一块样板,后 ...

  7. 【RTOS】基于V7开发板的uCOS-III,uCOS-II,RTX4,RTX5,FreeRTOS原版和带CMSIS-RTOS V2封装层版全部集齐

    RTOS模板制作好后,后面堆各种中间件就方便了. 1.基于V7开发板的最新版uCOS-II V2.92.16程序模板,含MDK和IAR,支持uC/Probe https://www.cnblogs.c ...

  8. 基于 Arduino 开发板,这款插座是可编程且开源的

    基于 Arduino 开发板,这款插座是可编程且开源的 https://www.oschina.net/news/74861/open-source-socket https://github.com ...

  9. 基于Basys2开发板的简易电子琴和音乐播放器设计

    背景:华中科技大学 电测综合实验 主要功能:Basys2开发板外接一个扬声器(或无源蜂鸣器也可)实现电子琴和音乐播放器的功能.其中由于开发板上只有4个按键,所以电子琴功能只做了4个音调,分别对应于4个 ...

随机推荐

  1. PowerShell实现基于SharePoint的网站HomePage Auto-Configure Solution

    Home Page Web Parts Auto-Configuration PS:该项目为公司项目,我还是给他的名字屏蔽掉吧,这是我用PowerShell写的一个自动化升级工具,此为三部自动化工具的 ...

  2. c++包管理工具conan

    Conan is a portable package manager, intended for C and C++ developers, but it is able to manage bui ...

  3. ORM框架为什么不流行了

    程序员的逻辑是先写sql脚本,然后在编写对应的实体代码. orm框架的逻辑是先写实体代码,然后自动生成脚本,构建数据库,这和程序员的逻辑或习惯刚好相反,所以这类ORM框架渐渐的被淘汰了,例如:Hibe ...

  4. Log4php 使用心得

    使用log4php 记录系统日志: 1.自动拦截php报出的错误,写日志 2.手动打印错误 set_error_handler('captureNormal',E_ERROR | E_PARSE); ...

  5. iOS网络NSURLConnection使用详解

    一.整体介绍 NSURLConnection是苹果提供的原生网络访问类,但是苹果很快会将其废弃,且由NSURLSession(iOS7以后)来替代.目前使用最广泛的第三方网络框架AFNetworkin ...

  6. ServiceMetadataBehavior 的 HttpsGetEnabled 属性设置为 True,而 HttpsGetUrl 属性是相对地址,但没有 https 基址

    WCF 发布,本机正常,服务器报错,信息如下: ServiceMetadataBehavior 的 HttpsGetEnabled 属性设置为 True,而 HttpsGetUrl 属性是相对地址,但 ...

  7. Java命令学习系列(二)——Jstack

    Java命令学习系列(二)——Jstack 2015-04-18 分类:Java 阅读(512) 评论(0) jstack是java虚拟机自带的一种堆栈跟踪工具. 功能 jstack用于生成java虚 ...

  8. java-TokenProcessor令牌校验工具类

    TokenProcessor令牌校验工具类 public class TokenProcessor { private long privious;// 上次生成表单标识号得时间值 private s ...

  9. Ubuntu之Docker安装

    1.添加官方的GPG key到系统 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - 2.添加D ...

  10. ARP协议相关介绍

    什么是ARP协议? ARP,即地址解析协议,实现通过IP地址得知其物理地址.在TCP/IP网络环境下,每个主机都分配了一个32位的IP地址,这种互联网地址是在网际范围标识主机的一种逻辑地址.为了让报文 ...