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

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

二、移植MQTTPacket到项目里:

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

6c65f4da217a48508982ec1a.htmlsession

三、修改已经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包进行通信。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值