mqtt c语言 单片机,MQTT--单片机实现即时通讯
连接--->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--单片机实现即时通讯相关推荐
- 单片机使用C语言实现MQTT协议
单片机使用C语言实现MQTT协议 在单片机使用MQTT协议非常普遍,特别是在物联网相关领域,在阿里云,华为云等公有云都提供MQTT协议连接物联网平台. 本篇介绍如何用C语言实现MQTT的连接 MQTT ...
- 501-STM32+Air724UG基本控制篇(自建物联网平台)-移植使用-移植单片机MQTT底层包到自己的工程项目
说明 这节详细说明一下如何把工程里面的MQTT包移植到用户自己的工程. 注意:首先确定自己已经实现了使用TCP连接服务器! 该底层包适用于所有的单片机,和所有的网络模块. 该教程以STM32工程为例子 ...
- IM即时通讯H5端,MQTT
做IM即时通讯的成果: 成功实现了H5端和APP端之间的通信(H5和H5之间也已实现),将H5嵌入到微信小程序,并且开发了SDK使得小程序也能实时得到消息的数量和消息内容. 遇到的难点 (1)消息的状 ...
- C语言实现MQTT协议(一)协议讲解
MQTT介绍 MQTT是一个客户端服务端架构的发布/订阅模式的消息传输协议.它的设计思想是轻巧.开放.简单.规范,易于实现.这些特点使得它对很多场景来说都是很好的选择,特别是对于受限的环境如机器与机器 ...
- c语言嵌入式开发单片机,嵌入式开发|单片机基础
嵌入式开发它是一个综合的技能学习,既要去学习基本的Linux编程,又要学习物理机的操作使用,要想学习嵌入式的开发,在前面的文章中已经是跟大家说过了,嵌入式开发的学习需要掌握的基础课程还是比较多的,单片 ...
- 单片机modebus RTU通信实现,采用C语言,可适用于单片机,VC,安卓等(转)
源:单片机modebus RTU通信实现,采用C语言,可适用于单片机,VC,安卓等 //modebus_rtu.c /***************************************** ...
- wxpython视频教程-单片机C语言入门_单片机教程_单片机编程语言 - C语言网
本教程由 继承叔 编写,面向对单片机有基础认知的初学者! 1.单片机了解 单片机是一块集成电路的控制芯片,我们熟知的家电例如洗衣机的定时控制和滚筒运作,电饭煲的保温功能和鸣叫提醒,电冰箱,空调等等这些 ...
- c语言图像浏览器,单片机采用浏览器进行监控将给软件的编程带来极大的便利...
1 引言 互联网的技术大多数应用在商业领域的信息传递,但目前也开始越来越多地向工业控制领域发展.单片机以其体积小.功能强.灵活可靠而广泛应用于工业控制和电器产品中,远程控制是其重要的内容之一.现在,单 ...
- 在VUE中利用MQTT协议实现即时通讯
前言 建议先阅读: 在Node.js下运用MQTT协议实现即时通讯及离线推送 以前尝试在vue中用上mqtt,了解到mqtt实质上是基于websocket进行数据通信,所以上文中在node下实现的服务 ...
- c语言编写51单片机中断程序,执行过程是怎样的?
Q:c语言编写51单片机中断程序,执行过程是怎样的? 例如程序: #include<reg52.h> void main(void) { EA=1; //开放总中断 ...
最新文章
- python解释器工作原理_Python解释器执行原理
- FileZilla Server简介及使用说明
- 【通知】3月当当购书大额优惠券赠送,仅限今明两天
- 安装部署VMware vSphere 5.5文档 (6-1) 配置IBM DS4700 共享存储
- 如何保证IM实时消息的“时序性”与“一致性”?
- k8s四种port解析:nodePort、port、targetPort、containerPort
- 计算机系统基础:磁盘调度知识笔记
- sas sql 读取最后一行数据_SAS基础编程和数据处理
- css根据当前宽度设置css,JS和CSS实现自动根据分辨率设置页面宽度
- STL中sort排序的简单使用
- Bokeh库快速入门
- ODOO从哪里开始??OpenERP的第一根线头儿
- 数据库——添加外键约束
- react+UmiJS+Antd Pro简介
- OpenSIPS脚本中的变量
- java毕业生设计在线答题系统计算机源码+系统+mysql+调试部署+lw
- 下载源码报错Cannot connect to the Maven process. Try again later. If the problem persists, check the Maven
- 130个Photoshop经典合成教程
- vivado下MT25qu02g Flash 固化
- Blos查看计算机硬盘,怎么检查硬盘是否被电脑识别 进bios判断硬盘是否运行方法...
热门文章
- 【Linux】处理数据文件
- 题解 POJ 2559-SP1805 【HISTOGRA - Largest Rectangle in a Histogram】
- LoadRunner场景设置里的各参数解释
- 【iCore4 双核心板_ARM】例程二十三:LWIP_HTTP实验——网页服务器
- Semaphore实现原理分析
- Swift -- 7.3 类和结构体
- Basic Calculator 基本计算器-Leetcode
- Linux Mint 17 搭建 JSP 环境
- Delphi 之 工具栏组件(TToolBar)
- MKNetwork网络请求过程中onCompletion调用两次的问题