MQTT 移植STM32+GPRS(串口透传)(三)
来源:互联网 发布:唯品会网络异常 编辑:程序博客网 时间:2024/06/07 02:36
昨天,去参观了AWE(中国家电及消费电子博览会),智能家居,智能插座、智能LED灯、智能摄像头、智能橱柜等等,大开眼界,原来这些别的公司的产品都正式投产了。还顺便打听了几家提供云服务的公司,他们一听MQTT就说支持MQTT的协议,2家开发通信模组的公司甚至直接可以提供支持MQTT的固件。看来我要加快了。
##开发环境:
stm32f103 + esp6288(固件中支持自动连接服务器) 裸机开发
##步骤
* 首先在 https://github.com/eclipse/paho.mqtt.embedded-c 下载源码![ ](http://omp77n3im.bkt.clouddn.com/MQTT_scoure.png)
MQTTPacket 文件全部添加到keil工程当中,参考samples提供的例子,删除不需要的头文件。
MQTTPacket/samples/transport.c和transport.h也要添加到工程中去,这是我们要改写的接口。
* 因为MQTT使用JSON打包封装的数据处理会很简单,因此还要下载一个基于c 的文件用于格式转换。
https://github.com/DaveGamble/cJSON 拷贝cJSON.c和cJSON.h到工程中。
* 改写串口中断接收函数,其中socket连接服务器是在串口转wifi模块中设置好服务器的ip和port,这样移植到gprs模块时会很方便。在每次串口中断中清定时器的计数值,同时接收长度变量加1,并约定在50ms内收不到数据,认为接收完成,完成标志位置1。
*transport.c中修改里面的四个接口:
![ ](http://omp77n3im.bkt.clouddn.com/MQTT_API.png)
open/close函数暂时用不到,里面初始化相应的AT命令。
transport_sendPacketBuffer();发送消息改成串口发送姐可以了
transport_getdata();要进行改写里面的recv()函数,因为要接收完成后才能处理,但因为官方源码构架比较严谨,而且相当有水准。因此等待接收完成,放在MQTTRead_package();外面去做。
###最后
当设置好这些,就可以订阅和发布了。完成相应的初始化和参数设置后主函数中while(1)执行等待读消息,timer3定时器中断中发送采集到的传感器数值,timer4定时器中断中发送ping报,不然服务器会认为超时而断开连接。
详细的步骤下篇继续,目前程序尚未完善暂不献丑。
######说明:在sectong公司期间的周末休息时间所整理。
0 0
- MQTT 移植STM32+GPRS(串口透传)(三)
- MQTT 移植STM32+GPRS(串口透传)(一)
- MQTT 移植STM32+GPRS(串口透传)(二)
- MQTT 移植STM32+GPRS(串口透传)(四)
- MQTT 移植STM32+GPRS(串口透传)(六) +补充帖子
- MQTT 移植STM32+GPRS(串口透传)(五) +补充帖子
- MQTT客户端移植到STM32
- 几步实现stm32上面移植mqtt
- STM32 DMA 串口透传
- nodeMCU和arduino串口透传MQTT消息
- STM32 USB虚拟串口移植参考
- 在GPRS模块(GA6)和STM32F103C8T6单片机上移植MQTT协议
- stm32与sim900之GPRS通信(电脑串口与SIM900通信)
- GRBL八:STM32代码移植——串口
- 串口调试GPRS模块
- 串口GPRS的了解
- STM32串口
- stm32串口
- 对于配置了Spring编码过滤器之后,仍出现中文乱码的处理
- css用一张大图片来设置背景优缺点 实现方法
- linux 套接字函数send和recv函数(阻塞模式)
- 字段赋值映射,NGUI、UGUI事件管理
- android下拉刷新scrollview的用法pullToRefreshScrollview
- MQTT 移植STM32+GPRS(串口透传)(三)
- css 兼容ie浏览器的方法
- vue自定义指令拖拽事件
- Android点赞动画
- 三月十八小结
- 恩,今天把git和sublime结合了一下。。然后看了下《西部世界》
- JS 判断字符串包含
- 数据库索引文件一般采用什么数据结构?
- 港大女生闻判拭泪 教师梦恐粉碎