基于麒麟座开发板2.0的MQTT实现例程
链接--->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实现例程的更多相关文章
- AC6102开发板USB3.0测试和使用说明
AC6102开发板USB3.0测试和使用说明 概述 AC6102上集成了一颗Cypress 推出的高性能USB3.0传输芯片CYUSB3014,Cypress称之为EZ-USBFX3.该芯片性能强劲, ...
- 基于uFUN开发板和扩展板的联网校准时钟
项目概述 上周在uFUN试用群里看到管理员说试用活动快结束了,要抓紧完成评测总结,看大家的评测总结也都写了,我也不能落后啊!正好最近做的扩展板到手了,于是赶紧进行调试,做了一个不用校准的时钟,时钟这种 ...
- 基于uFUN开发板的RGB调色板
前言 使用uFUN开发板配合Qt上位机,实现任意颜色的混合,Qt上位机下发RGB数值,范围0-255,uFUN开发板进行解析,然后输出不同占空比的PWM,从而实现通过RGB三原色调制出任意颜色. Qt ...
- 基于uFUN开发板的心率计(三)Qt上位机的实现
前言 上两周利用周末的时间,分别写了基于uFUN开发板的心率计(一)DMA方式获取传感器数据和基于uFUN开发板的心率计(二)动态阈值算法获取心率值,介绍了AD采集传感器数据和数据的滤波处理获取心率值 ...
- 基于uFUN开发板的心率计(二)动态阈值算法获取心率值
前言 上一篇文章:基于uFUN开发板的心率计(一)DMA方式获取传感器数据,介绍了如何获取PulseSensor心率传感器的电压值,并对硬件电路进行了计算分析.心率计,重要的是要获取到心率值,本篇文章 ...
- 千呼万唤始出来——uFUN开发板2.0开箱评测
前言 今年3月,我参与了面包板社区组织的第一批uFUN开发板评测活动,并有幸能获得试用机会,那是我第一次了解到uFUN这个项目及背后的故事,4月份,uFUN 2.0版本来了,收到了张工送的一块样板,后 ...
- 【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 ...
- 基于 Arduino 开发板,这款插座是可编程且开源的
基于 Arduino 开发板,这款插座是可编程且开源的 https://www.oschina.net/news/74861/open-source-socket https://github.com ...
- 基于Basys2开发板的简易电子琴和音乐播放器设计
背景:华中科技大学 电测综合实验 主要功能:Basys2开发板外接一个扬声器(或无源蜂鸣器也可)实现电子琴和音乐播放器的功能.其中由于开发板上只有4个按键,所以电子琴功能只做了4个音调,分别对应于4个 ...
随机推荐
- bnuoj16491
http://www.bnuoj.com/bnuoj/problem_show.php?pid=16491 题意:有t组测试数据,每组测试数据第一行为n,m,接下来有n种跑法,m为最大的能力,每一种跑 ...
- VBA学习笔记(8)--遍历所有文件夹和文件
说明(2017.3.26): 1. 采用的是兰色幻想教学视频中的“父子转换法” 2. 这种VBA的遍历文件夹方法非常难理解,主要是因为dir这个函数,第一次带参数调用,返回的是此目录下的第一个文件,第 ...
- linux搭建git服务器
服务端配置 1.安装git 2.新建一个用户,只能用来上传代码,而不能通过ssh登录,比如git用户 adduser git chsh -s $(command -v git-shell) git 使 ...
- Entity Framework4.3安装以及错误(基础连接已经关闭:未能为SSL/TLS……)问题解决!
Entity Framework以下简称EF 安装EF4.3的步骤是首先安装VS扩展 NuGet,然后再使用NuGet安装EF程序包 安装完NuGet就可以安装EF了,有两种方式可以安装EF: 1.使 ...
- LAN8710A/LAN8710Ai datasheet 记录
因为产品的双网口出现了问题,而且是AM335x 内部驱动,难度比较大,现从PHY 端开始分析相关原理,找到双网口不能使用的原因. 此篇是记录一些有关LAN8710A 这个PHY的一些特性. 各个功能模 ...
- 解析:SO_REUSEADDR bind: address in use
http://blog.sina.com.cn/s/blog_53a2ecbf010095db.html socket中的SO_REUSEADDR Q: 我正在写一个unix server程序,不是d ...
- SpringMVC 多个数据源 配置多个事物管理器 Multiple Transaction Managers
http://docs.spring.io/spring/docs/3.0.x/spring-framework-reference/html/transaction.html#transaction ...
- VMware网络连接失败
假如你碰到了VMware 网络被断开, 明明已经分配了适配器, 客户端却显示网络断开没有连接. 可用恢复默认的方法重置所有网卡及服务. 进主工具首页.点击: 虚拟网络编辑器,然后点击下面的恢复默认. ...
- EasyUI项目中的自定义JS
自定义方法: (function($) { $.extend($, { //获取下标,删除时使用 getArrayIndex : function (array,value) { var index ...
- [从jQuery看JavaScript]-JavaScript
什么是JavaScript?相信随便百度Google一下都能找到一大堆的定义解释.而在我的理解中,JavaScript就是一种客户端的脚本语言,用于处理页面数据逻辑和用户体验(网页特效).实际上,Ja ...