EC20模组使用MQTT库对接EMQX,基于STM32F407

一、说明

 

本lib库基于STM32F407编译,其他的cortexM4内核也支持,采用串口和EC20模组通信。

库包括两个文件:ec20_mqtt.h和ec20_mqtt.lib。使用时添加lib文件到工程中,头文件引用ec20_mqtt.h即可。

下载:https://gitee.com/eiri_jackmaster/ec20_mqtt_cm4-lib

二、功能

提供了创建mqtt客户端、连接服务器、订阅、发布、取消订阅、断开连接、获取imei号等API接口。

/*! -------------------------------------------------------------------------- */
/*! Public function prototype */ 
EC20_status EC20_initialize(void);
EC20_status EC20_mqttClientCreate(uint8_t pClientID,char* pIPv4, uint32_t pPort);
EC20_status EC20_mqttClientConnectServer(uint8_t pClientID, char* pClientIDStr,char* pName, char* pPswd);
EC20_status EC20_mqttClientSubscribe(uint8_t pClientID, char* pTopic, uint8_t pQos);
EC20_status EC20_mqttClientUnSubscribe(uint8_t pClientID, char* pTopic);
EC20_status EC20_mqttClientPublish(uint8_t pClientID, char* pTopic, uint8_t pQos, uint8_t pRetain, uint8_t *pData, uint32_t pSize);
EC20_status EC20_mqttClientDisConnectServer(uint8_t pClientID);
extern void EC20_moduleHardReset(void);
size_t      EC20_getIMEI(char *pIMEIBuff);

三、移植

在头文件指定相应的串口操作函数和毫秒级基本延时即可。此外,需要外部实现EC20模组的复位操作,一般是对rst管脚拉高一段时间,复位函数需要指定函数为void EC20_moduleHardReset(void)。

/*! macro defination for porting */
/*! ec20 uart default 115200 8 N 1 */
#define EC20_SENDDATA(a,b)        USART2_sendData(a,b)    /*! uart redefine */
#define EC20_SENDSTR(a)           USART2_sendString(a)
#define EC20_RXFLAG               usart2Rx.flag                        
#define EC20_RXBUFF               usart2Rx.buff
#define EC20_RXLEN                usart2Rx.size
#define EC20_BUFF_SIZE            UART2_BUFF_SIZE       /*! buffsize define */
#define EC20_DELAYMS              HAL_Delay
#define PRINT_ENABLE              0x10        /*! 0x00=enable, other=disable*/

四、实例

以下为STM32F407使用ec20的mqtt库,实现对接自建EMQX。

1、工程添加ec20_mqtt.lib

2、头文件引入

定义变量和私有mqtt服务器信息(我使用了订阅认证和鉴权):

  3、实现EC20模组复位接口

 4、调用接口

(1)初始化

(2)创建mqtt客户端,连接服务器

(3)订阅和发布主题

 4、执行结果

 

 可以看到发布和订阅正常。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/404679.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么是I帧,P帧,B帧

From: http://blog.csdn.net/abcjennifer/article/details/6577934 视频压缩中,每帧代表一幅静止的图像。而在实际压缩时,会采取各种算法减少数据的容量,其中IPB就是最常见的。 简单地说,I帧是关键帧,属于帧内压缩。…

linux中的memory management和page mapping

1 首先要说的最简单的是在一个process在运行的时候,它看到的内存是这个样子的。3G以后是给kernel使用的运行和动态分配的内存的空间,注意因为是process所看到的,下面全部都是虚拟地址空间。如下: 2 然后需要说的是Linux Physical …

linux 使用paho C库实现mqtt客户端

一、下载 github 下载paho mqtt c库源码,编译安装库文件。 地址:https://github.com/eclipse/paho.mqtt.c 关键API:Paho Asynchronous MQTT C Client Library: MQTTAsync.h File Reference 说明:paho客户端库是纯c库&#xff…

Linux实验二报告

北京电子科技学院(BESTI) 实 验 报 告 课程:信息安全系统设计基础 班级: 201352 姓名:池彬宁 贺邦 学号:20135212 20135208 成绩: 指导教…

重学数据结构007——二叉查找树

之前的博客中提到过,我学习采用的参考书是《数据结构与算法分析——C语言描述》。这门书的组织安排与国内广泛实用的教材《数据结构——C语言版》比较不同。这本书描述了一些树和二叉树的概念,举例讲解了什么是树的三种遍历之后,就开始重点讲…

无线网卡共享Internet访问到电脑有线接口注意事项

一、共享网卡访问 网卡属性--共享--以太网 Note: 观察有线以太网的IPv4是否有Internet访问权限。Note:配置IPv4的NDS与无线网卡WLAN的属性一致。 二、有线网卡配置 Note:连接到有线网卡上的外接设备需要配置IP地址为192.168.137.xxx,处于同…

Nginx 多进程连接请求/事件分发流程分析

Nginx使用多进程的方法进行任务处理,每个worker进程只有一个线程,单线程循环处理全部监听的事件。本文重点分析一下多进程间的负载均衡问题以及Nginx多进程事件处理流程,方便大家自己写程序的时候借鉴。 一、监听建立流程 整个建立监听socket…

h264检测是I帧还是P帧

From: http://blog.csdn.net/zgyulongfei/article/details/7558031 今天在网上找了一些资料,知道了如何检测h264中的帧类型,在这里记录下来。 首先,贴出nal单元类型定义(图从《新一代视频压缩编码标准H.264》摘录)&am…

C#之out和ref区别

out与ref的区别总结:1.两者都是通过引用来传递。2.两者都按地址传递的,使用后都将改变原来参数的数值。3.属性不是变量,因此不能作为 out或ref 参数传递。4.若要使用 ref 或 out,方法定义和调用方法都必须显式使用 out、ref 关键字。5.rel可以…

一次ssh登录不成功的解决经历

一、列出解决过程中所有报错信息 ssh connection refused port 22Stopped OpenBSD Secure Shell server. Failed to start OpenBSD Secure Shell server.OpenSSL version mismatch. Built against 1010104f, you have 101000cf Unable to fetch some archives, maybe run apt-…

IOS自动化打包介绍

摘要 随着苹果手持设备用户的不断增加,ios应用也增长迅速,同时随着iphone被越狱越来越多的app 的渠道也不断增多,为各个渠道打包成了一件费时费力的工作,本文提供一种比较智能的打包方式来减少其带来的各种不便。 TAG Ios打包&…

win10 vscode 无法激活python 虚拟环境的解决办法

一、powershell中 python创建虚拟环境无法激活 二、管理员模式运行powershell,执行策略更改: Set-ExecutionPolicy RemoteSigned,输入y 三、vscode再次激活: .\flask-venv\Scripts\activate 激活成功。 四、退出虚拟环境&#x…

vscode 升级过后自带的四种终端

一、版本 二、终端 自带了四种默认配置终端,删除以前Edit in settings.json的“terminal.integrated.shell.windows”字段。 四种默认终端: powershellwslcmdjavaScript Debug Terminal

2015第19本:异类--不一样的成功启示录

一位移民加拿大的高中同学在2012年回国探亲,聚会时曾推荐了《异类--不一样的成功启示录》这本书,英文书名叫《Outliers - the story of success》,一直没有系统地看完。在整理Omnifocus的读书列表时又发现了此书,还是趁这个机会把…

windows10 安装mqtt服务器和client客户端进行本地调试

一、安装mqtt服务器 使用emqx作为mqtt服务器,下载emqx-windows-4.3.8.zip。 emqx-windows-4.3.8.zip 其他版本:Directory listing for broker: / | EMQ 解压到自定义目录位置,在cmd窗口进入解压后的bin目录 cd /d D:\Tools\exqxServer\em…

I,P,B帧和PTS,DTS的关系

From: http://www.cnblogs.com/qingquan/archive/2011/07/27/2118967.html 基本概念: I frame :帧内编码帧 又称intra picture,I 帧通常是每个 GOP(MPEG 所使用的一种视频压缩技术)的第一个帧,经过适度地压…

Windows Subsystem for Linux(WSL)安装emqx

一、安装 win10自带linux子系统,wsl ubuntu,安装方法同ubuntu。 脚本一键安装:curl https://repos.emqx.io/install_emqx.sh | bash 二、使用 $ emqx start emqx 4.0.0 is started successfully! $ emqx_ctl status Node emqx127.0.0.1 i…

丰富“WinForms” 的一个别样项目(学生管理)

一个别样的WinForms项目,他并没多么的新颖,但是它的用处确实有点多,或许会有你需要的地方;如果你对WinForms中那么多控件无法把握,又或者是你根本就不懂,那我觉得你应该好好看看,如果一个人的人…

OSPF区域不能与area 0 相连的解决方法

有些时候,由于区域包含的路由器过多或区域的地理位置原因等,造成网络中配置的OSPF区域(非area 0)不能够与area 0相连。大家都知道,在OSPF的所有区域内,area 0 是骨干区域,非0区域都要与area0相连…

emqx使用webhook数据持久化到mysql

官方文档:WebHook | EMQ Docs 一、启用webhook和触发规则 编辑webhook规则配置文件:/etc/emqx/plugins/emqx_web_hook.conf 指定webhook的url位置:web.hook.url http://127.0.0.1:5000/mqtt/webhook 增加消息推送事件规则:指…