mqtt部分:

int strlen(char *str)

{

int len = 0;

while (*str != ' ') {

len++;

str++;

}

return len;

}

// **********************************

// * *

// * 根据主机地址和端口号连接服务器 *

// * *

// **********************************

void tcp_connect(char *host,int port)

{

uart_send_str("AT

");

uart_send_str("AT+CPIN?

");

seelp(500);

uart_send_str("AT+CREG?

");

seelp(500);

uart_send_str("AT+CGATT?

");

seelp(500);

uart_send_str("AT+CSTT="CMNET"

");

seelp(500);

uart_send_str("AT+CIICR

");

seelp(1500);

uart_send_str("AT+CIFSR

");

seelp(1000);

uart_send_str("AT+CIPSTART="TCP","23.106.139.167","1883"

"); //连接TCP Server 8081 1883

}

// *************************

// * *

// * 构建MQTT连接包 *

// * *

// *************************

int baseIndex;

int mqtt_connect_message(unsigned char *mqtt_message,char *client_id,char *username,char *password)

{

char i = 0;

char client_id_length = strlen(client_id);

int username_length = strlen(username);

int password_length = strlen(password);

int packetLen = 12 + 2 + client_id_length + 2 + username_length + 2 + password_length;

mqtt_message[0] = 16; // MQTT Message Type CONNECT

mqtt_message[1] = packetLen%256;

baseIndex = 2;

if( packetLen >127 ){//

mqtt_message[2] = 1;//packetLen/127;

baseIndex = 3;

}

mqtt_message[baseIndex] = 0; // Protocol Name Length MSB

mqtt_message[baseIndex+1] = 6; // Protocol Name Length LSB

mqtt_message[baseIndex+2] = 77; // ASCII Code for M

mqtt_message[baseIndex+3] = 81; // ASCII Code for Q

mqtt_message[baseIndex+4] = 73; // ASCII Code for I

mqtt_message[baseIndex+5] = 115; // ASCII Code for s

mqtt_message[baseIndex+6] = 100; // ASCII Code for d

mqtt_message[baseIndex+7] = 112; // ASCII Code for p

mqtt_message[baseIndex+8] = 3; // MQTT Protocol version = 3

mqtt_message[baseIndex+9] = 194; // conn flags

mqtt_message[baseIndex+10] = 0; // Keep-alive Time Length MSB

mqtt_message[baseIndex+11] = 60; // Keep-alive Time Length LSB

mqtt_message[baseIndex+12] = 0; // Client ID length MSB

mqtt_message[baseIndex+13] = client_id_length; // Client ID length LSB

baseIndex += 14;

// Client ID

for(i = 0; i < client_id_length; i++){

mqtt_message[baseIndex + i] = client_id[i];

}

baseIndex = baseIndex+client_id_length;

//username

mqtt_message[baseIndex] = 0; //username length MSB

mqtt_message[baseIndex+1] = username_length; //username length LSB

baseIndex = baseIndex+2;

for(i = 0; i < username_length ; i++){

mqtt_message[baseIndex + i] = username[i];

}

baseIndex = baseIndex + username_length;

//password

mqtt_message[baseIndex] = 0; //password length MSB

mqtt_message[baseIndex+1] = password_length; //password length LSB

baseIndex = baseIndex + 2;

for(i = 0; i < password_length ; i++){

mqtt_message[baseIndex + i] = password[i];

}

baseIndex += password_length;

return baseIndex;

}

int mqtt_publish_message(unsigned char *mqtt_message, char * topic, char * message) {

//mqtt_message = 0;

unsigned char i = 0;

unsigned char topic_length = strlen(topic);

unsigned char message_length = strlen(message);

mqtt_message[0] = 48; // MQTT Message Type CONNECT

mqtt_message[1] = 2 + topic_length + message_length; // Remaining length

mqtt_message[2] = 0; // MQTT Message Type CONNECT

mqtt_message[3] = topic_length; // MQTT Message Type CONNECT

// Topic

for(i = 0; i < topic_length; i++){

mqtt_message[4 + i] = topic[i];

}

// Message

for(i = 0; i < message_length; i++){

mqtt_message[4 + topic_length + i] = message[i];

}

return 4 + topic_length + message_length;

}

int subindex = 0;

int mqtt_subscribe_message(unsigned char *mqtt_message,unsigned char *topic)

{

unsigned char topic_len = strlen(topic);

mqtt_message[0] = 130;

mqtt_message[1] = topic_len+5;

mqtt_message[2] = 0;

mqtt_message[3] = 1;

mqtt_message[4] = 0;

mqtt_message[5] = topic_len;

for (subindex=0; subindex

mqtt_message[6+subindex] = topic[subindex];

}

mqtt_message[topic_len+6+1] = 0;

return topic_len+7;

}

mqtt部分:

intstrlen(char*str)

{

intlen = 0;

while(*str !=' ') {

len++;

str++;

}

returnlen;

}

// **********************************

// *                                *

// * 根据主机地址和端口号连接服务器 *

// *                                *

// **********************************

voidtcp_connect(char*host,intport)

{

uart_send_str("AT

");

uart_send_str("AT+CPIN?

");

seelp(500);

uart_send_str("AT+CREG?

");

seelp(500);

uart_send_str("AT+CGATT?

");

seelp(500);

uart_send_str("AT+CSTT="CMNET"

");

seelp(500);

uart_send_str("AT+CIICR

");

seelp(1500);

uart_send_str("AT+CIFSR

");

seelp(1000);

uart_send_str("AT+CIPSTART="TCP","23.106.139.167","1883"

");//连接TCP Server  8081 1883

}

// *************************

// *                       *

// *  构建MQTT连接包       *

// *                       *

// *************************

intbaseIndex;

intmqtt_connect_message(unsignedchar*mqtt_message,char*client_id,char*username,char*password)

{

chari = 0;

charclient_id_length = strlen(client_id);

intusername_length = strlen(username);

intpassword_length = strlen(password);

intpacketLen = 12 + 2 + client_id_length + 2 + username_length + 2 + password_length;

mqtt_message[0] = 16;                      // MQTT Message Type CONNECT

mqtt_message[1] = packetLen%256;

baseIndex = 2;

if( packetLen >127 ){//

mqtt_message[2] = 1;//packetLen/127;

baseIndex = 3;

}

mqtt_message[baseIndex] = 0;                       // Protocol Name Length MSB

mqtt_message[baseIndex+1] = 6;                       // Protocol Name Length LSB

mqtt_message[baseIndex+2] = 77;                      // ASCII Code for M

mqtt_message[baseIndex+3] = 81;                      // ASCII Code for Q

mqtt_message[baseIndex+4] = 73;                      // ASCII Code for I

mqtt_message[baseIndex+5] = 115;                     // ASCII Code for s

mqtt_message[baseIndex+6] = 100;                     // ASCII Code for d

mqtt_message[baseIndex+7] = 112;                     // ASCII Code for p

mqtt_message[baseIndex+8] = 3;                      // MQTT Protocol version = 3

mqtt_message[baseIndex+9] = 194;                   // conn flags

mqtt_message[baseIndex+10] = 0;                      // Keep-alive Time Length MSB

mqtt_message[baseIndex+11] = 60;                     // Keep-alive Time Length LSB

mqtt_message[baseIndex+12] = 0;                      // Client ID length MSB

mqtt_message[baseIndex+13] = client_id_length;       // Client ID length LSB

baseIndex += 14;

// Client ID

for(i = 0; i

mqtt_message[baseIndex + i] = client_id[i];

}

baseIndex = baseIndex+client_id_length;

//username

mqtt_message[baseIndex] = 0;                      //username length MSB

mqtt_message[baseIndex+1] = username_length;       //username length LSB

baseIndex = baseIndex+2;

for(i = 0; i

mqtt_message[baseIndex + i] = username[i];

}

baseIndex = baseIndex + username_length;

//password

mqtt_message[baseIndex] = 0;                      //password length MSB

mqtt_message[baseIndex+1] = password_length;       //password length LSB

baseIndex = baseIndex + 2;

for(i = 0; i

mqtt_message[baseIndex + i] = password[i];

}

baseIndex += password_length;

returnbaseIndex;

}

intmqtt_publish_message(unsignedchar*mqtt_message,char* topic,char* message) {

//mqtt_message = 0;

unsigned chari = 0;

unsigned chartopic_length = strlen(topic);

unsigned charmessage_length = strlen(message);

mqtt_message[0] = 48;                                  // MQTT Message Type CONNECT

mqtt_message[1] = 2 + topic_length + message_length;   // Remaining length

mqtt_message[2] = 0;                                   // MQTT Message Type CONNECT

mqtt_message[3] = topic_length;                        // MQTT Message Type CONNECT

// Topic

for(i = 0; i

mqtt_message[4 + i] = topic[i];

}

// Message

for(i = 0; i

mqtt_message[4 + topic_length + i] = message[i];

}

return4 + topic_length + message_length;

}

intsubindex = 0;

intmqtt_subscribe_message(unsignedchar*mqtt_message,unsignedchar*topic)

{

unsigned chartopic_len = strlen(topic);

mqtt_message[0] = 130;

mqtt_message[1] = topic_len+5;

mqtt_message[2] = 0;

mqtt_message[3] = 1;

mqtt_message[4] = 0;

mqtt_message[5] = topic_len;

for(subindex=0; subindex

mqtt_message[6+subindex] = topic[subindex];

}

mqtt_message[topic_len+6+1] = 0;

returntopic_len+7;

}

gprs模块http mqtt_GPRS模块用TCP实现MQTT协议(基于SIM900A)相关推荐

  1. 模块学习4:(2)MQTT协议连接、发布、订阅、心跳、断链等分析和代码实现,并且通过mqtt.fx连接服务器,使用wireshark抓包分析mqtt实现过程

    文章目录 一.MQTT控制报文的结构 (1)固定报头(类型/标志 + 剩余长度) 剩余长度(这个要注意下,要注意它的计算方法,有一点特殊) 可变报头 有效载荷 二.下面直接开整各个具体的报文(MQTT ...

  2. m5310模组数据上传至onenet_NB-IoT模块 YNH-M5310A全网通接入OneNET平台MQTT协议实现数据传输...

    void ClearRAM(u8* ram,u32 n) { u32 i; for (i = 0;i < n;i++) { ram[i] = 0x00; } } //构建MQTT连接包 u16 ...

  3. gprs模块http mqtt_在GPRS模块(SIM800C)和STM32芯片上实现MQTT协议 | TsonTec:测量解决方案提供者...

    最近真是的好一个劲的折腾,算是完全搞明白了如何在STM32上实现MQTT协议了. 目录 [显示] 一.本教程中说明的内容 先说说本文化的适用范围吧: 一.使用的芯片是STM32F103C8T6,但是并 ...

  4. 以太网io模块4-20mA转网口转TCP/IP西门子PLC扩展modbus模块

    本文基于金鸽以太网io模块如何通过tcp/ip以及modbus-tcp协议读取io开关量信号以及输出io开关量信号,模块支持输入信号触发主动上报,支持io输出延时自动关断,功能比较强大,性能也比较稳定 ...

  5. gsm模块网站服务器,GPRS模块与GSM模块的七大区别

    众所周知,GPRS模块和GSM模块都是数据无线透明传输模块,经常有人将两者混为一谈.但这两者不是一回事.GPRS是通用分组无线业务,GSM是全球移动通信系统.可以说,GPRS是在GSM系统基础上的延续 ...

  6. 简述GPRS模块和GSM模块之间的区别

    GSM模块是将GSM射频芯片,基带处理芯片,存储器,放大器设备等集成在基板上的功能模块,以提供独立的OS,GSM射频处理,基带处理和标准接口. 简单来讲,GPRS无线模块就是将串口通讯转为GPRS无线 ...

  7. DIY TCP/IP IP模块和ICMP模块的实现2

    上一篇:DIY TCP/IP IP模块和ICMP模块的实现1 本节在8.2节的基础上扩展icmp_recv函数,检验接收到的ICMP数据帧的校验和,解析ICMP数据帧头部的type字段,根据ICMP数 ...

  8. DIY TCP/IP IP模块和ICMP模块的实现1

    上一篇:DIY TCP/IP IP模块和ICMP模块的实现0 8.2 IP数据帧的接收 本节实现DIY TCP/IP的IP数据帧的接收,6.1节介绍pdbuf模块时已经引入了IP头部结构体的定义,ip ...

  9. ESP-01S模块通过串口助手进行TCP透传

    ESP-01S模块通过串口助手进行TCP透传 使用工具 3.3V电源:ESP-01S模块:USB转TTL接口:串口工具SSCOM V5.13.1 ESP模块设置 1.将ESP模块通过串口与PC进行连接 ...

最新文章

  1. 10个非常有趣的Linux命令
  2. Vim 80列布局问题
  3. osgViewer::Viewer缩放、平移对单个模型不起作用
  4. 使用vert.x 2.0,RxJava和mongoDB创建simpe RESTful服务
  5. crontab mysql 不执行_crontab定时任务不执行
  6. Java实验4 面向对象基础
  7. matlab函数句柄介绍
  8. IDEA+Java+Servlet+JSP+Mysql实现新闻发布系统
  9. 输入一个字符,判断该字符是大写英文字符,小写英文字符,空格,还是其他字符
  10. 基于SSM+VUE的交通事故案例库系统(前后端分离)
  11. window.open无法打开新窗口
  12. 系统架构设计师考点全纪要(自己整理,本人一次稳过)
  13. python导入模块的语法结构_python学习第五讲,python基础语法之函数语法,与Import导入模块....
  14. [Filecoin]协议实验室关于SNARK竞赛的公告
  15. 【微信红包】恭喜发财,大吉大利
  16. php 重命名中有斜杠,php如何去除转义字符中的反斜杠
  17. 西门子博图指令——Array数据中元素的写入
  18. 如何保证电脑硬盘格式化后数据不能被恢复?
  19. 常微分方程的解法 (四): Matlab 解法
  20. ES6新增关键字:let和const及let的常用场景

热门文章

  1. php ci框架中脚手架是做什么用的
  2. 互联网移动在“云”端
  3. 12 mysql性能抖动
  4. vue实现动态改变title
  5. Mongoose多数据库连接及实用样例
  6. 【学习笔记】莫队算法
  7. Retrofit的使用教程(二)
  8. ListView删除选中的多项目
  9. maven笔记(2)-- 构建Java Project 及 Maven命令使用
  10. GIT入门笔记(11)- 多种撤销修改场景和对策--实战练习