订阅主题 | 学习笔记

简介: 快速学习 订阅主题

开发者学堂课程【物联网平台开发全栈教程订阅主题学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/562/detail/7702


订阅主题


一、单片机订阅主题

1.片机订阅主题

1)通过单片机里面 CLI 的方法,将各种各样的数据,尤其是 MQTT 报文数据存储到了单片机里面。

2)报文数据是通过阿里云平台以及 MQTT 中文手册来计算的。

3)重新计算一下报文数据:

先连接一下单片机,读一下单片机现在里面的参数到底是什么

然后再复制 DeviceName

此时计算完了之后就生成了一个头文件。

这个框是最新的串口数据内容,可以作为简单的日志打印。

image.png

4)刚才生成了一个头文件 MQTT_Messaage.h,双击打开,里面计算出来的参数就出来了。打开小工具,点击写入数据到单片机,就会将这些数据一个字节一个字节的发送给单片机,完了之后,单片机会把这些数据存储到内部 flash里面,就是在 CLI 这里实现的。

2.这里面有 Write_keyWrite_key_HEXRead_keyRead_key_HEX

1Write_key Write_key_HEX 是有区别的。

2Write_key:就只是 ASCII 字符。这个子函数是写 SSID 和密码写域名用的。因为它是很纯粹的 ASCII 字符。

3Write_key_HEX:写入某 Key Flash 不过是上位机下发的二进制消息,除去 KEY 后的前两个字节是后续的长度。这个是写连续报文的,在传输的时候,小工具会先读这些报文数据,读一下他们有多长,在前面加两个字节,加两个字节是它的长度,就可以通过 Write 直接把它写进去。写完之后就会发一个数据出去。

4Read_key:单片机有一个唯一的 ID,唯一 ID 也是通过手册得来的,只不过又写了一个子函数,把 ID 变成了ASCII 字符。读出来之后小工具就放到了单片机 SN 的这个位置,这是 ASCII 字符。单片机存的时候是一系列十六进制。这样就能保证读一下计算参数每个单片机都是不一样的,因为他们的 SN 就不一样,

3.订阅主题程序:

1)订阅主题:

Read Flash Message (MQTT_Sub_Addr,DataBuf,&DataLen);

//读取 MQTT 报文,

for (i=0;i<DataLen;i++)
{
WIFI Send Byte (DataBuf [i]) ;
}
//等待服务器返回

Delaylms (2000) ;
Dat=0;
while (Get Byte_ WIFI (&DataBuf [Dat++]));
//获取接收缓冲区数据

if((DataBuf [0]==0X90)&(DataBuf[1]==0X03))
{
Send str1
("\r\n订阅属性成功!\r\n");

}
else
{
Send str1
("\r\n 订阅属性失败!\r\n");

for (i=0;i<DataLen;i++)
WIFI Send Byte (DataBuf[i]) ;

}

Delay1ns (2000) ;

}

}

DataBuf 里面的内容就是订阅主题,订阅的是以下的十六进制,这些十六进制表示的是要订阅的这个主题。把这些数据上报给服务器之后,服务器如果正确,就会返回9003007B01,在程序里面就可以简单检测一下。如果 ok就成功。

2)如果想取消订阅,就要发这些东西过去;

image.png

小工具没有把取消订阅这一堆数据扔出去,如果真想那样做,就用之前生成的头文件,可以直接包含这个头文件,在头文件里发对应的数组就可以了。

相关实践学习
RocketMQ一站式入门使用
从源码编译、部署broker、部署namesrv,使用java客户端首发消息等一站式入门RocketMQ。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
2月前
|
小程序 API
培训报名小程序-订阅消息发送
培训报名小程序-订阅消息发送
|
3月前
|
移动开发 小程序 Go
【社区每周】小程序消息订阅插件升级为消息订阅接口(2022年8月第五期)
【社区每周】小程序消息订阅插件升级为消息订阅接口(2022年8月第五期)
20 0
|
消息中间件 存储 RocketMQ
RocketMQ主题的自动创建机制
问题 在学习RocketMQ的时候,有几个疑问。 如果主题不存在,client把消息发给谁呢? 当发送消息给不存在的主题时,主题是什么时候创建的呢?
555 0
|
Python
Python编程:实现消息发布/订阅模型
Python编程:实现消息发布/订阅模型
104 0
|
自然语言处理 搜索推荐 开发者
基于主题知识问答|学习笔记
快速学习基于主题知识问答
59 0
基于主题知识问答|学习笔记
|
开发者 Python
为什么能学出有效的主题 上|学习笔记
快速学习为什么能学出有效的主题 上
54 0
为什么能学出有效的主题 上|学习笔记
|
自然语言处理 算法 开发者
为什么能学出有效的主题|学习笔记
快速学习为什么能学出有效的主题
58 0
为什么能学出有效的主题|学习笔记
|
开发者 Python
为什么能学出有效的主题 中|学习笔记
快速学习为什么能学出有效的主题 中
63 0
为什么能学出有效的主题 中|学习笔记
|
开发者 Python
为什么能学出有效的主题 下|学习笔记
快速学习为什么能学出有效的主题 下
36 0
为什么能学出有效的主题 下|学习笔记
|
消息中间件 存储 运维
【视频】普通消息 | 学习笔记
快速学习【视频】普通消息
310 0
【视频】普通消息 | 学习笔记