【分享】关于EDP命令下发-Arduino中文社区 - Powered by Discuz! Archiver

OneNET 发表于 2017-7-6 10:43

【分享】关于EDP命令下发

最近发现在群里不少朋友对EDP命令下发不是很了解。
其实应该多看看协议文档,文档描述得很清楚,然后再把命令下发的数据读取出来,对比着文档看,效果很好的。
这里简单介绍下,EDP命令下发的内容。

一、快速应用
其实往简单了说,平台就是把系统相关数据 加上 用户自定义的命令数据组成一帧数据,然后下发到设备。我们只需要跳过系统相关数据,直接获取到命令内容就可以了。

1.先看看平台端的命令格式约定:
例程中使用命令格式如{xxx}{V},{xxx}就是命令内容,比如操作红色LED就写{redled},{V}是值,特别注意这个“{V}”,看以下说明红线处
http://upfiles.heclouds.com/forum-app/2017/04/11/82318474dd02c7250b96907eceb6c5b6.jpg 2.jpg (0 Bytes, 下载次数: 42)
下载附件
2017-4-11 14:22 上传



什么意思呢,就是说在平台按钮填写命令的时候,比如写{redled}{V},下发的实际内容是{redled}1或者0,{V}会被替换为开关值。

2.再看看设备端的命令处理方法
传入参数是获取到的整个下发的内容,也就是系统相关信息和用户自定义命令。
因为我们下发的命令内容少于256字节,所以整个下发内容中有4个结束符(数值:0),例程使用string库来处理命令,所以不能有结束符,则需要替换掉(图中高亮处)。
然后找到命令和命令参数即可。
http://upfiles.heclouds.com/forum-app/2017/04/11/6a42e99a65b324d5d1b1a9dbcb13983e.jpg 3.jpg (0 Bytes, 下载次数: 30)
下载附件
2017-4-11 14:29 上传



将命令带上“{}”,也是方便查找。

所以大家平时自己做开发的时候,只要下发和解析的命令做到相同就可以了。

二、协议详解
http://upfiles.heclouds.com/forum-app/2017/04/11/cd2bba830f02c501de745a3ad856f6f9.jpg 4.jpg (0 Bytes, 下载次数: 30)
下载附件
2017-4-11 14:35 上传



摘自“设备终端接入协议-EDP-V1.5”,5.7节,关于EDP命令下发的具体内容可由此参考。

http://upfiles.heclouds.com/forum-app/2017/04/11/dbaba67c954f33f24ca64f9fb36dc3aa.jpg 1.jpg (0 Bytes, 下载次数: 90)
下载附件
2017-4-11 14:37 上传



此截图是命令下发内容的字符形式和十六进制形式,现在结合协议内容来分析下。
图右半部分高亮处为协议的所有内容。
起始的0xA0对应第一字节,bit4~7为10。
第二字节为0x33,是代表除了第一个和第二个字节,剩下的数据长度为51字节。
第三和第四字节“0x00 0x24”代表cmdid的长度,共计36字节,cmdid是在命令响应的时候需要把下发的cmdid原封不动的返回给平台的,只是处理下发时,可以忽略。
然后在“0x00 0x00 0x00 0x09”代表命令的长度,共4个字节来表示命令长度。{redled}0,刚好9字节。
紧接着的就是命令内容和参数了,从0x7B("{")开始,从这里开始的数据就全部是用户自定义的数据了。
页: [1]
查看完整版本: 【分享】关于EDP命令下发