连接--->http://blog.csdn.net/zhou6343178/article/details/51182623bash

二、移植MQTTPacket到项目里:

复制文件夹MQTTPacket到工程,复制MQTTPacket\samples里面的transport.c、transport.h到工程

session

三、修改已经transport.c里面的四个接口:eclipse

int transport_sendPacketBuffer(int sock, unsigned char* buf, int buflen); int transport_getdata(unsigned char* buf, int count); int transport_open(char* host, int port); int transport_close(int sock);

1

2

3

4

1

2

3

4

看接口名称就知道,该四个接口实现的是TCP数据的收发,具体修改须要根据已经实现的TCP接口来定。(单片机上经常使用的TCP/IP协议栈主要有uip、LwIP)

注意:MQTT是tcp/ip的应用层,传输层须要本身实现,这四个接口分别对应TCP的链接、收、发和关闭。tcp

四、实现订阅/发布,查看MQTTPacket\samples下的pub0sub1.c。

下面为参数的意义:

MQTTPacket_connectData data = MQTTPacket_connectData_initializer; //链接参数

data.clientID.cstring = “me2”; //客户ID,惟一

data.keepAliveInterval = 200; //保存存活时间200s

data.cleansession = 1;//从新链接后是否清除之前的信息 0表示不清除,1表示重连清除

data.username.cstring = “admin”;//若是服务器须要用户名密码,这里设置

data.password.cstring = “admin”;

Qos :

0 表示最多一次

1 表示至少一次

2 表示只有一次ui

MQTTDeserialize_publish(&dup,&qos,&retained,&msgid,&receivedTopic,&payload_in, &payloadlen_in, buf,buflen);

1

1

msgid:该包的ID,paketid,若是须要增长反馈(QoS为1和2须要反馈),须要获取该IDspa

发送反馈:.net

MQTTDeserialize_publish(&dup, &qos, &retained, &msgid,&receivedTopic,&payload_in, &payloadlen_in, buf, buflen);

int len = MQTTSerialize_puback(buf,buflen,msgid);

transport_sendPacketBuffer(ack_buf,len);

1

2

3

1

2

3

接收服务器的反馈:code

if(PUBACK == MQTTPacket_read(buf,buflen,transport_getdata))

{

unsigned char packettype = 0;

unsigned char dup_ack = 0; unsigned short packetid = 0; MQTTDeserialize_ack(&packettype,&dup_ack,&packetid,buf,buflen); }

1

2

3

4

5

6

7

8

1

2

3

4

5

6

7

8

比较发送的msgid和反馈获取的packetid,若是一致表示该包发送成功。

等等,具体看文档blog

五、服务器实现 mosquitto

请参考:http://blog.csdn.net/xukai871105/article/details/39252653

指令举例:

订阅 mosquitto_sub -h xxx.xxx.xxx.xxx -u admin -P admin -t substopic

-h 服务器域名

-u 用户名(没有能够省略)

-P密码(没有能够省略)

-t topic名称

发布:mosquitto_pub -h xxx.xxx.xxx.xxx -u admin -P admin -t substopic -m hello

-m 发布的内容

以上基本实现单片机与服务器的联调。若是须要手机控制单片机,可下载手机相关的MQTT包进行通信。

mqtt c语言 单片机,MQTT--单片机实现即时通讯相关推荐

  1. 单片机使用C语言实现MQTT协议

    单片机使用C语言实现MQTT协议 在单片机使用MQTT协议非常普遍,特别是在物联网相关领域,在阿里云,华为云等公有云都提供MQTT协议连接物联网平台. 本篇介绍如何用C语言实现MQTT的连接 MQTT ...

  2. 501-STM32+Air724UG基本控制篇(自建物联网平台)-移植使用-移植单片机MQTT底层包到自己的工程项目

    说明 这节详细说明一下如何把工程里面的MQTT包移植到用户自己的工程. 注意:首先确定自己已经实现了使用TCP连接服务器! 该底层包适用于所有的单片机,和所有的网络模块. 该教程以STM32工程为例子 ...

  3. IM即时通讯H5端,MQTT

    做IM即时通讯的成果: 成功实现了H5端和APP端之间的通信(H5和H5之间也已实现),将H5嵌入到微信小程序,并且开发了SDK使得小程序也能实时得到消息的数量和消息内容. 遇到的难点 (1)消息的状 ...

  4. C语言实现MQTT协议(一)协议讲解

    MQTT介绍 MQTT是一个客户端服务端架构的发布/订阅模式的消息传输协议.它的设计思想是轻巧.开放.简单.规范,易于实现.这些特点使得它对很多场景来说都是很好的选择,特别是对于受限的环境如机器与机器 ...

  5. c语言嵌入式开发单片机,嵌入式开发|单片机基础

    嵌入式开发它是一个综合的技能学习,既要去学习基本的Linux编程,又要学习物理机的操作使用,要想学习嵌入式的开发,在前面的文章中已经是跟大家说过了,嵌入式开发的学习需要掌握的基础课程还是比较多的,单片 ...

  6. 单片机modebus RTU通信实现,采用C语言,可适用于单片机,VC,安卓等(转)

    源:单片机modebus RTU通信实现,采用C语言,可适用于单片机,VC,安卓等 //modebus_rtu.c /***************************************** ...

  7. wxpython视频教程-单片机C语言入门_单片机教程_单片机编程语言 - C语言网

    本教程由 继承叔 编写,面向对单片机有基础认知的初学者! 1.单片机了解 单片机是一块集成电路的控制芯片,我们熟知的家电例如洗衣机的定时控制和滚筒运作,电饭煲的保温功能和鸣叫提醒,电冰箱,空调等等这些 ...

  8. c语言图像浏览器,单片机采用浏览器进行监控将给软件的编程带来极大的便利...

    1 引言 互联网的技术大多数应用在商业领域的信息传递,但目前也开始越来越多地向工业控制领域发展.单片机以其体积小.功能强.灵活可靠而广泛应用于工业控制和电器产品中,远程控制是其重要的内容之一.现在,单 ...

  9. 在VUE中利用MQTT协议实现即时通讯

    前言 建议先阅读: 在Node.js下运用MQTT协议实现即时通讯及离线推送 以前尝试在vue中用上mqtt,了解到mqtt实质上是基于websocket进行数据通信,所以上文中在node下实现的服务 ...

  10. c语言编写51单片机中断程序,执行过程是怎样的?

    Q:c语言编写51单片机中断程序,执行过程是怎样的? 例如程序: #include<reg52.h>   void main(void)   {    EA=1;      //开放总中断 ...

最新文章

  1. python解释器工作原理_Python解释器执行原理
  2. FileZilla Server简介及使用说明
  3. 【通知】3月当当购书大额优惠券赠送,仅限今明两天
  4. 安装部署VMware vSphere 5.5文档 (6-1) 配置IBM DS4700 共享存储
  5. 如何保证IM实时消息的“时序性”与“一致性”?
  6. k8s四种port解析:nodePort、port、targetPort、containerPort
  7. 计算机系统基础:磁盘调度知识笔记
  8. sas sql 读取最后一行数据_SAS基础编程和数据处理
  9. css根据当前宽度设置css,JS和CSS实现自动根据分辨率设置页面宽度
  10. STL中sort排序的简单使用
  11. Bokeh库快速入门
  12. ODOO从哪里开始??OpenERP的第一根线头儿
  13. 数据库——添加外键约束
  14. react+UmiJS+Antd Pro简介
  15. OpenSIPS脚本中的变量
  16. java毕业生设计在线答题系统计算机源码+系统+mysql+调试部署+lw
  17. 下载源码报错Cannot connect to the Maven process. Try again later. If the problem persists, check the Maven
  18. 130个Photoshop经典合成教程
  19. vivado下MT25qu02g Flash 固化
  20. Blos查看计算机硬盘,怎么检查硬盘是否被电脑识别 进bios判断硬盘是否运行方法...

热门文章

  1. 【Linux】处理数据文件
  2. 题解 POJ 2559-SP1805 【HISTOGRA - Largest Rectangle in a Histogram】
  3. LoadRunner场景设置里的各参数解释
  4. 【iCore4 双核心板_ARM】例程二十三:LWIP_HTTP实验——网页服务器
  5. Semaphore实现原理分析
  6. Swift -- 7.3 类和结构体
  7. Basic Calculator 基本计算器-Leetcode
  8. Linux Mint 17 搭建 JSP 环境
  9. Delphi 之 工具栏组件(TToolBar)
  10. MKNetwork网络请求过程中onCompletion调用两次的问题