Alink 协议解析 | 学习笔记

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
简介: 快速学习 Alink 协议解析

开发者学堂课程【物联网平台开发全栈教程Alink 协议解析学习笔记,与课程紧密联系,让用户快速学习知识。

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


Alink 协议解析


基本内容

一、  相关内容

二、  编译

三、  服务器模拟真实设备


一、  相关内容

1、在 WIFI.c 里面解析 MQTT 里面读取的信息;

//接收 MQTT 服努器友送辻来的数据,解析

void Analyze_ MQTT_ Read (void)

{

unsigned int Len=0,i=0;  

// i=0 是个临时的变量

unsigned char Dat[256] ;

// 缓冲区的大小不超过256

//如果用户觉得这个逻辑有问题,那就可以自己尝试去改变这个数值;

if(Get Mess Count_ WIFI() == 0)

return;

//首先会直接读取有没有信息过来如果没有信息那就直接退出。

// 如果说有数据,只要不是0那么它就直接读取缓冲区里所有的数据。

Len=0;

while(Get_ Byte_ WIFI (&Dat [Len++] ) ) ;

//获取接收缓冲区数据

Dat [Len] = 0;

// 这个做法其实是不科学的;

for(i=0;i

{

if((Dat[i] == 0XD0)& (Dat[i+1]==0x00) )

//检验此处是否包含 D0或者是00, 只要连续的两个是 D0或者是00, 那证明此处是回复的心跳。

send_ stzl

("\r\n收到 MQTT 服务器回复的心跳信号! \r\n");

if(Dat[i] == O)//把前面二进制传输时的0去掉 ;

// 二进制中的00有很多个含义; 服务器上面下发的数据里面很可能还包含着许多个00

//一旦碰到 Dat 里面有0,它的妙用则体现在 Compare_ strCompare_ str 这个子函数会认为 Buf 里面都是 ASCII 字符,其实“1”不是 ASCII 字符,但是它如果在比较的时候遇到了0,它就会直接退出。Dat 就是 buf

Dat [i] = 1;

// 所以在这里 有一个简单的处理,把0授予1, 观察有没有出现 D000结合的情况,如果存在这样的情况, 那么就回复一下心跳。

if (Compare_ str (Dat, "\"WorkSwitch\":1") != 255)

// 先来比较一下 WorkSwitch 里面有没有1;

//在定义产品的时候,产品-功能定义; 在功能定义里面有一个标志符, 这个标识符非常的重要, 标志符的布尔值不是0就是1;如下图光标存在点所示:

image.png

{

Relay = 1;

Send Strl ("\r\l平台下发命令:打开继电器! \r\n");

//比较之后,发现 WorkSwitch 的数值为1,那么接着打开继电器;

}

if (Compare str (Dat, ") "WorkSwitch":0") != 255)

{

Relay = 0;

Send Strl ("\r\l平台下发命令:关闭继电器! \r\n");

//比较之后,发现 WorkSwitch 的数值为0,那么接着将会关闭继电器;


二、 编译

编译时将它加入单片机,观察在日志里面它会输出什么内容?

WIFI 模组交互的程序一切正常;

TCP Connect OK; 证明服务器的 TCP 链接是成功的;

MQTT 连接成功;

发送心跳;

收到心跳信号;

服务器连接正常;


三、 服务器模拟真实设备

1、产品-在线调试-选择设备-如下图红色边框内所示:

image.png

2、向下翻页-调试功能:运行开关(WorkSwitch-方法设置

1)当 WorkSwitch=1时,可以看到日志上:平台下发命令:打开继电器;

2)当 WorkSwitch=0时,可以看到日志上:平台下发命令:关闭继电器;

image.png

如果想看一下平台发送了什么内容, 其实在之前使用 MQTT 的函数的时候,就已经知道它会发送一长串的内容,里面会包含 WorkSwitch =0或者 WorkSwitch =1;如果想看,就可以使用串口1Dat 的内容发出去,在串口1的窗口看到底发送了什么内容。

解析就是 Compare_str 这个子函数,有没有“0”或者“1”;它的做法其实并没有很科学,没有解析 json,也没有在 json 解析完之后再看哪一个字段到底是多少?这样做法是非常粗暴、非常直接的,就是简单的判断一下里面时候含有“WorkSwitch=1”、“ WorkSwitch=0”,本身学习编程就是为了简单的数据上报和简单的开关控制,所以说用粗暴的方法解决也是可以的,它本身的业务逻辑也没有那么复杂,需要学习的是在不同的场合去使用不同的思维做事情。

相关文章
|
3月前
|
XML 监控 网络协议
云深处绝影四足机器人协议学习解析
本文详细介绍并解析了云深处绝影X20四足机器人的通信协议,包括TCP服务端端口号、基于Service的请求/响应通信机制、通信帧结构、消息类型、常见的通信示例如获取状态和导航请求,以及运动控制的参数和命令。文中还提出了对协议中某些未明确说明或可能存在的问题的疑惑。
41 0
云深处绝影四足机器人协议学习解析
|
26天前
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
86 3
|
2月前
|
域名解析 存储 网络协议
深入解析网络通信关键要素:IP 协议、DNS 及相关技术
本文详细介绍了IP协议报头结构及其各字段的功能,包括版本、首部长度、服务类型、总长度、标识、片偏移、标志、生存时间(TTL)、协议、首部检验和等内容。此外,还探讨了IP地址的网段划分、特殊IP地址的应用场景,以及路由选择的大致流程。最后,文章简要介绍了DNS协议的作用及其发展历史,解释了域名解析系统的工作原理。
111 5
深入解析网络通信关键要素:IP 协议、DNS 及相关技术
|
3月前
|
缓存 网络协议 安全
【网络攻防战】DNS协议的致命弱点:如何利用它们发动悄无声息的网络攻击?
【8月更文挑战第26天】DNS(域名系统)是互联网的关键组件,用于将域名转换为IP地址。然而,DNS协议存在安全漏洞,包括缺乏身份验证机制、缓存中毒风险及放大攻击的可能性。通过具体案例,如DNS缓存中毒和DNS放大攻击,攻击者能够误导用户访问恶意站点或对目标服务器实施DDoS攻击。为了防范这些威胁,可以采用DNSSEC实现数字签名验证、利用加密的DNS服务(如DoH或DoT)、限制DNS服务器响应以及及时更新DNS软件等措施。理解并应对DNS的安全挑战对于确保网络环境的安全至关重要。
93 2
|
4月前
|
数据采集 存储 JSON
从零到一构建网络爬虫帝国:HTTP协议+Python requests库深度解析
【7月更文挑战第31天】在网络数据的海洋中,使用Python的`requests`库构建网络爬虫就像探索未知的航船。HTTP协议指导爬虫与服务器交流,收集信息。HTTP请求包括请求行、头和体,响应则含状态行、头和体。`requests`简化了发送各种HTTP请求的过程。
82 4
|
2月前
|
前端开发 JavaScript 安全
深入解析 http 协议
HTTP(超文本传输协议)不仅用于传输文本,还支持图片、音频和视频等多种类型的数据。当前广泛使用的版本为 HTTP/1.1。HTTPS 可视为 HTTP 的安全增强版,主要区别在于添加了加密层。HTTP 请求和响应均遵循固定格式,包括请求行/状态行、请求/响应头、空行及消息主体。URL(统一资源定位符)用于标识网络上的资源,其格式包含协议、域名、路径等信息。此外,HTTP 报头提供了附加信息,帮助客户端和服务端更好地处理请求与响应。状态码则用于指示请求结果,如 200 表示成功,404 表示未找到,500 表示服务器内部错误等。
54 0
深入解析 http 协议
|
2月前
|
数据采集 存储 JSON
从零到一构建网络爬虫帝国:HTTP协议+Python requests库深度解析
在网络数据的海洋中,网络爬虫遵循HTTP协议,穿梭于互联网各处,收集宝贵信息。本文将从零开始,使用Python的requests库,深入解析HTTP协议,助你构建自己的网络爬虫帝国。首先介绍HTTP协议基础,包括请求与响应结构;然后详细介绍requests库的安装与使用,演示如何发送GET和POST请求并处理响应;最后概述爬虫构建流程及挑战,帮助你逐步掌握核心技术,畅游数据海洋。
66 3
|
2月前
|
消息中间件 安全 Kafka
Kafka支持SSL/TLS协议技术深度解析
SSL(Secure Socket Layer,安全套接层)及其继任者TLS(Transport Layer Security,传输层安全)是为网络通信提供安全及数据完整性的一种安全协议。这些协议在传输层对网络连接进行加密,确保数据在传输过程中不被窃取或篡改。
146 0
|
3月前
|
域名解析 监控 网络协议
利用DNS协议的弱点
【8月更文挑战第17天】
55 1
|
3月前
|
安全 数据库连接 数据库
Python深度解析:上下文协议设计与应用技巧
在Python编程中,资源管理是一个常见且重要的问题。无论是文件操作、网络连接还是数据库事务,都需要确保资源在使用后能够正确地释放或恢复到初始状态。Python通过上下文管理器提供了一种优雅的方式来处理资源的获取与释放,使得代码更加简洁、安全。

推荐镜像

更多