资料介绍
一、本教程中说明的内容
先说说本文化的适用范围吧:
一、使用的芯片是STM32F103C8T6,但是并没有任何与平台相关的代码,应该在所有STM32芯片中都是可以用的。
二、本文使用的是SIM800C模块,驱动是用C 实现的,基于ARM mbed平台写的。但是从原理上来讲,C和C 差别不大,本文的代码经过修改也可以直接用于其他平台的使用。
三、本文数据传输使用的是“透传模式”,对于所有的透传模块,本文都有很大的参考意义。
二、MQTT的使用
首先,推荐一个MQTT的库:Paho,这个库支持非常多的平台,当然也包括了嵌入式平台:GitHub – paho.mqtt.embedded-c。将该库中的MQTTPacket文件夹下载下来,MQTTPacket文件夹下面主要有三个文件夹,我们使用的文件主要集中在src文件夹和samples文件夹中。
src文件夹中存放着MQTT核心功能的代码,而samples中存放着三个例子:pub00sub1、pub0sub1_nc、qos0pub和网络驱动(transport.c和transport.h)。
由于三个驱动都有一个main函数,所以无法同时存在,本文中只使用了pub0sub,所以将此文件夹内容精减到只有pub0sub1.c、transport.c、transport.h三个文件。
当然,在实现使用时可能会改变目录结构,使目录结构更加清楚,可以根据自己的喜好来进行更改,并不影响使用。
将transport.h的内容精减到以下内容:
主要的工作有:
1、为了方便表示,删除了版权信息,有实际使用时请保留。
2、没有使用pub0sub1_nc这个例子,所以将transport_getdatanb方法去除。
3、透传模块中使用不到socket,所以将与socket相关的参数去掉。
这些方法实现的主要功能是:
1、transport_open的作用是初始化模块连网的信息、transport_close作用是关闭链接。
2、transport_sendPacketBuffer用于发送数据、transport_getdata用于接收数据。
然后用transport.c来实现transport.h中声明的4个函数。
三、在ARM mbed中使用MQTT
首先说句题外话,自我感觉mbed是一个非常不错的平台,很大程度上提高了代码的可重用性。但也有一个问题,就是其支持是以开发板为单位的,所以并不是对每一种芯片的支持都很好。
首先介绍一个例子,HelloMQTT – a mercurial repository | mbed。但这个例子其中有很多不完善的地方,而且该例子使用的网络驱动也不是GPRS模块。
如果要用不同的连网方式,那么就写一个驱动,驱动中至少要包含以下两个方法:
这两个方法会在MQTTClient中自动调用,timeout表示毫秒。返回值为读或写的字节数。
对此,我写了驱动程序:
MQTTGRPSEthernet.h
#pragma once
#if !defined(MQTTGPRSETHERNET_H)
#define MQTTGPRSETHERNET_H
#define DEFAULT_GPRS_TIMEOUT 6000000 //6s
#define SERIAL_BUFFER_SIZE 256
#include "mbed.h"
class MQTTGPRSEthernet
{
public:
MQTTGPRSEthernet(PinName tx, PinName rx, int baudrate = 115200);
~MQTTGPRSEthernet();
bool initNet(const char* apn, const char* userName = "", const char* passWord = "", int timeout = DEFAULT_GPRS_TIMEOUT, bool isReconnect = false);
bool connect(char* hostname, int port, int timeout = DEFAULT_GPRS_TIMEOUT);
int read_line(char* buffer, int timeout = DEFAULT_GPRS_TIMEOUT);
int read(unsigned char* buffer, int len, int timeout = DEFAULT_GPRS_TIMEOUT);
int write(unsigned char* buffer, int len, int timeout = DEFAULT_GPRS_TIMEOUT);
bool disconnect();
private:
bool initNet();
Serial eth;
bool command(const char* cmd, const char* ack = "");
bool connected = false;
bool initialized = false;
char* localIP;
const char *_apn;
const char *_passWord;
const char *_userName;
};
#endif
MQTTGRPSEthernet.cpp
主程序
lient的yield函数中用调用messageArrived函数,之前的示例给出的是100,可能是由于间太短的缘故,总是调用不了回调函数,所以我将其改的非常大,便于调试。实际使用时可以使用1000。
四、总结
其实paho embeded-c用起来还是挺方便的,但是代码的重要性不高,所以移植起来往往会让人无从下手。但深放研究就会发现其实使用起来是非常简单的。
转载自TsonTec:测量解决方案提供者
(mbbeetchina)
下载该资料的人也在下载
下载该资料的人还在阅读
更多 >
- SIM800C开发板资料 7次下载
- STM32 SIM800L继电器控制板
- SIM800C开发板用户手册 105次下载
- STM32与SIM800连接百度物接入MQTT服务器教程
- SIM800C使用STC89C52单片机读写短信
- SIM800C调试
- 基于TFTP协议实现STM32的IAP资料下载
- SIM800 GSM模块系列指令手册资料免费下载 0次下载
- ATK-SIM800C GSM模块的17个常见问题资料汇总免费下载 34次下载
- SIM800 MINI板GPRS模块资料包合集免费下载 75次下载
- SIM800C GPRS模块的威廉希尔官方网站 原理图免费下载 69次下载
- SIM800C开发板的威廉希尔官方网站 原理图免费下载 0次下载
- 手机蓝牙和SIM800C中的蓝牙通讯软件免费下载 17次下载
- STM32和MQTT及SIM800使用AT指令实现的详细资料合集免费下载 153次下载
- SIM800C实现温湿度数据上传平台(MQTT协议) 48次下载
- MQTT和Modbus协议的区别 1899次阅读
- MQTT通信协议和工具包简介 1266次阅读
- paho-mqtt模块实战 1113次阅读
- MQTT协议的概念和主要特性 MQTT协议于物联网有何好处 2230次阅读
- 深入浅出地学习MQTT协议 975次阅读
- MQTT协议简介及协议原理 6718次阅读
- 【产品应用】GLCOM-NET网关一分钟实现LoRa转MQTT(高阶版) 2098次阅读
- 小凌派RK2206开发板:实现基于OpenHarmony的本地MQTT协议 4558次阅读
- HTTP及MQTT比较分析 5617次阅读
- 如何移植MQTT物联网通信协议 4273次阅读
- SIM800C模块和SIM900A模块对比 2.4w次阅读
- MQTT工业级无线路由器的特点 1654次阅读
- 根据WebSocket协议完全使用C++实现函数 4610次阅读
- 基于Android智能终端的虚拟SIM卡软件实现 2.6w次阅读
- STM32F103C8T6引脚图 43.6w次阅读
下载排行
本周
- 1TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 2开关电源基础知识
- 5.73 MB | 6次下载 | 免费
- 3100W短波放大威廉希尔官方网站 图
- 0.05 MB | 4次下载 | 3 积分
- 4嵌入式linux-聊天程序设计
- 0.60 MB | 3次下载 | 免费
- 5基于FPGA的光纤通信系统的设计与实现
- 0.61 MB | 2次下载 | 免费
- 6基于FPGA的C8051F单片机开发板设计
- 0.70 MB | 2次下载 | 免费
- 751单片机窗帘控制器仿真程序
- 1.93 MB | 2次下载 | 免费
- 8基于51单片机的RGB调色灯程序仿真
- 0.86 MB | 2次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成威廉希尔官方网站 应用800例(新编版)
- 0.00 MB | 33564次下载 | 免费
- 3接口威廉希尔官方网站 图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21548次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字威廉希尔官方网站 基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动威廉希尔官方网站 设计》 温德尔著
- 0.00 MB | 6653次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537796次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420026次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6威廉希尔官方网站 仿真软件multisim 10.0免费下载
- 340992 | 191185次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183278次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论
查看更多