1 Zigbee应用程序框架开发指南 - 概述

2 Zigbee应用程序框架开发指南 - 应用程序框架结构

3 Zigbee应用程序框架开发指南 - 应用程序框架目录结构

4 Zigbee应用程序框架开发指南 - 生成应用程序配置文件

5 Zigbee应用程序框架开发指南 - 应用程序框架API

6 Zigbee应用程序框架开发指南 - 应用程序框架Callback接口

7 Zigbee应用程序框架开发指南 - 时间处理

8 Zigbee应用程序框架开发指南 - 事件

9 Zigbee应用程序框架开发指南 - 属性管理

10 Zigbee应用程序框架开发指南 - 命令处理和生成

11 Zigbee应用程序框架开发指南 - 命令行接口(CLI)

12 Zigbee应用程序框架开发指南 - 调试打印接口

13 Zigbee应用程序框架开发指南 - 多网络支持

14 Zigbee应用程序框架开发指南 - 睡眠设备

15 Zigbee应用程序框架开发指南 - 应用程序框架插件

16 Zigbee应用程序框架开发指南 - 扩展ZigBee Cluster Library (ZCL)

17 Zigbee应用程序框架开发指南 - 使用Ember AppBuilder设计应用程序

18 Zigbee应用程序框架开发指南 - 应用框架V6

11 命令行接口(CLI)

Zigbee应用程序框架包括一个命令行接口(CLI),它实现了许多常见的命令和特定于集群的命令。例如,与常见功能相关的命令(如网络形成和属性读写)由CLI实现。

Zigbee应用程序框架CLI可以将整数参数作为十进制和十六进制表示法。如果参数包含0x前缀,则假定它是十六进制,否则是十进制。此外,整数数组可以在花括号内传递,字符串可以在引号内传递。

命令行引用可以在Zigbee应用程序框架API引用中找到。

11.1 扩展命令行接口

扩展命令行接口的过程如下:

  1. 在AppBuilder的“include”选项卡中,添加一个名为EMBER_AF_ENABLE_CUSTOM_COMMANDS的宏。这允许在文件/app/framework/cli/custom- clip .h中包含一个名为emberAfCustomCommands的命令数组,该命令数组在该文件中被派生出来。现在必须为emberAfCustomCommands数组提供定义,以满足编译时链接器的需求。
  2. 在应用程序中定义一个名为emberAfCustomCommands的EmberCommandEntry类型数组
  3. 下面的示例添加了两个命令,“form”和“join”。这些命令每个都有四个参数,用简短的“uvsh”形式描述。下一节将介绍用于描述命令参数的简写形式。
//The table of network commands.
EmberCommandEntry networkCommands[] = {
{ "form", formCommand, "uvsh" },
{ "join", joinCommand, "uvsh" },
...
{ NULL }
};
  1. 您定义的所有命令都属于EmberCommandEntry类型。类型EmberCommandEntry记录在堆栈API参考中。基本上它们的形式是“ command”、、 args”,其中的参数是一串字符,指示传递的参数的底层类型。EmberCommandEntry在/app/util/serial/
    command-interpreter2.h中的定义如下。
typedef PGM struct {
#endif
/** Use letters, digits, and underscores, '_', for the command name.
* Command names are case-sensitive.
*/
PGM_P name;
/** A reference to a function in the application that implements the
* command.
* If this entry refers to a nested command, then action field
* has to be set to NULL.
*/
CommandAction action;
/**
* In case of normal (non-nested) commands, argumentTypes is a
* string that specifies the number and types of arguments the
* command accepts. The argument specifiers are:
* - u: one-byte unsigned integer.
* - v: two-byte unsigned integer
* - w: four-byte unsigned integer
* - s: one-byte signed integer
* - b: string. The argument can be entered in ascii by using
* quotes, for example: "foo". Or it may be entered
* in hex by using curly braces, for example: { 08 A1 f2 }.
* There must be an even number of hex digits, and spaces
* are ignored.
* - *: zero or more of the previous type.
* If used, this must be the last specifier.
* - ?: Unknown number of arguments. If used this must be the only
* character. This means, that command interpreter will not
* perform any validation of arguments, and will call the
* action directly, trusting it that it will handle with
* whatever arguments are passed in.
* Integer arguments can be either decimal or hexidecimal.
* A 0x prefix indicates a hexidecimal integer. Example: 0x3ed.
*
* In case of a nested command (action is NULL), then this field
* contains a pointer to the nested EmberCommandEntry array.
*/
PGM_P argumentTypes;
/** A description of the command.
*/
PGM_P description;
} EmberCommandEntry;

11.2 CLI示例

11.2.1 示例1:使用Zigbee 3.0 Security创建网络

  1. 使用Simplicity Studio console或简单的telnet程序连接到网络的协调器。如果设备在Port 1上公开了它的CLI,您可以通过telnet连接到Port 4901来连接它。一旦连接到设备,使用network creator插件的form命令来创建网络
Device 1> plugin network-creator form 1 0xabcd 10 15
  1. 使用network creator安全插件的open-network命令允许连接,以便新设备可以进入网络:
Device 1> plugin network-creator-security open-network
  1. 使用网络控制插件启动命令将第二个设备连接到创建的网络:
Device 2> plugin network-steering start 0

11.2.2 示例2:创建一个网络

您可以使用两个设备并使用CLI启动网络。

  1. 使用Simplicity Studio console 或简单的telnet程序连接到网络的协调器。如果设备在Port 1上公开了它的CLI,您可以通过telnet连接到Port 4901来连接它。一旦连接到设备,使用网络表单命令来形成网络。
Device 1> network form 11 2 0x00aa
  1. 使用网络pjoin命令允许连接,以便新设备可以进入网络:
Device 1> network pjoin 0xff
  1. 使用网络连接命令将第二个设备连接到创建的网络:
Device 2> network join 11 2 0x00aa

11.2.3 示例3:发送一个属性读取

一旦形成了网络,就可以使用CLI在网络内发送消息。例如,使用global read命令读取basic cluster’s的ZCL版本。

  1. 通过填充Ember应用程序框架的消息传递缓冲区来创建命令。
Device 2> zcl global read 0 0

此命令将Cluster id 0、属性id 0的全局读写入消息传递缓冲区。

  1. 使用Send命令将全局读命令发送到设备。send命令接受三个参数:消息应该发送到的双字节节点ID、发送端点和目标端点。
Device 2> send 0x0000 1 1

该命令将全局读命令从设备2发送到设备1,设备1是网络的协调器,因此具有短节点id 0x0000。

11.2.4 示例4:发送一个Cluster命令

ZCL的许多核心Clusters都在Zigbee应用程序框架中内置了CLI命令。例如,identify命令允许您使用ZCL identify CLI命令创建一个ZCL identify命令,并使用send命令发送它。

Device 2> zcl identify id 30
Device 2> send 0 1 1

这个ZCL命令使用Identify Cluster。identify命令指定标识时间和缩写ID,并发送一个30秒的值,该值也将发送到协调器。

当您输入此命令时,它被加载到消息缓冲区中。在构建命令时,命令行界面显示消息缓冲区的内容以进行验证。如果您在命令中犯了一个错误,您可以在发送命令之前重新输入该命令。
为了在空中发送ZCL命令,使用CLI提供的一个单独的发送命令。

send命令有几个您可以指定的附加options和endpoints。如果它是广播的,您可以分组发送命令。
无论何时发送消息,发送消息的节点都会报告正在传输哪个Cluster。同样,无论何时接收消息,它都会给出接收内容的打印输出。

11. Zigbee应用程序框架开发指南 - 命令行接口(CLI)相关推荐

  1. 9. Zigbee应用程序框架开发指南 - 属性管理

    1 Zigbee应用程序框架开发指南 - 概述 2 Zigbee应用程序框架开发指南 - 应用程序框架结构 3 Zigbee应用程序框架开发指南 - 应用程序框架目录结构 4 Zigbee应用程序框架 ...

  2. 王者级微信小程序开发实战教学 从零到高手搭建微信小程序框架开发教程

    王者级微信小程序开发实战教学 从零到高手搭建微信小程序框架开发教程 小程序进阶 王者级微信小程序开发实战教学课程,讲师手把手对同学们进行微信小程序开发的进阶实战,从零开始搭建,从本地到云端开始系统化的 ...

  3. 开发跨端微信小程序框架选型指南

    多端框架uni-app和Taro选型对比 一. 背景 小程序原生开发有不少槽点: 1.原生wxml开发对Node.预编译器.webpack支持不好,影响开发效率和工程构建流程.所以大公司都会用框架开发 ...

  4. 使用Taro小程序框架开发一个学习、刷题、论坛、聊天交流的微信小程序

    本项目小程序端采用Taro技术框架,可将React代码编译为微信小程序.安卓APP.IOS程序.H5页面等,管理端采用React Hook + TypeScript来进行开发 项目介绍 当代大学生上课 ...

  5. Jdon框架开发指南

    Jdon框架快速开发指南 开发主要步骤如下: JdonFramework6.0以上两步开发见这里. 快速配置指南 新增/查询/修改/删除(CRUD); 批量查询和分页显示 本文Step By Step ...

  6. 「小程序」开发 指南(里面是小程序开发的各种论坛和文档)

    之前研究小程序,看到了一篇小程序的开发帖子,在这分享给大家. 什么是微信小程序? 微信之父张小龙是这样描述小程序的: 小程序是一个不需要下载安装就可使用的应用,它实现了应用触手可及的梦想,用户扫一扫或 ...

  7. 《Boost程序完全开发指南》

    1.3开发环境 由于Boost大量使用了C++高级特性(如模板偏特化.ADL),因此不是所有的编译器都 能够很好地支持Boost. 在VC集成环境中使用嵌入工程编译的方式需要定义宏BOOST_ALL_ ...

  8. 程序员开发指南!金三银四Android面试的一些感受,这原因我服了

    前言 前几年移动互联网创业的风口,如今渐渐消失,移动互联网被巨头公司瓜分,一些创业公司倒闭了,Android 开发需求慢慢趋近于饱和.而当初移动互联网处于风口时,自学.转行以及培训机构出来了大量 An ...

  9. 程序员开发指南!半路出家Android程序员看我轻松逆袭!实战篇

    前言 不清楚你是不是知道,咱们中国有相当大的一部分软件公司,他们的软件开发团队都小的可怜,甚至只有1-3个人,连一个项目小组都算不上,而这样的团队却要承担一个软件公司所有的软件开发任务,在软件上线和开 ...

  10. 程序员开发指南!java面试常问问题

    正文 如果你参加过一些大厂面试,肯定会遇到一些开放性的问题: 1. 写一段程序,让其运行时的表现为触发了5次Young GC.3次Full GC.然后3次Young GC: 2. 如果一个Java进程 ...

最新文章

  1. java两行两行读取问文件,正则提取两行之间所有行内容方法.
  2. 撰写第三周课程总结及实验报告(一)
  3. Wine下完美安装QQ 2010:
  4. Developer Express .Net 2005 V7.2.1 crack
  5. 会议录音被误删了用EasyRecovery怎么恢复
  6. 移动端 重定向 https 请求
  7. python turtle输出坐标_如何在Python/turtle中使用坐标列表绘制形状
  8. 老师我做完母带后混音更脏了。混音界四大邪术 | MZD Studios混音10问第2期
  9. eyoucms留言模版验证码实现
  10. 项目管理第十二章项目采购管理
  11. 二维码在Access中的使用
  12. android开发教程!看懂这些帮你轻松解决就业问题!知乎上转疯了!
  13. 为什么远程计算机后会黑屏,电脑上钉钉怎么远程,为什么远程后黑屏?
  14. 区块链技术在食品行业供应链管理中的用途
  15. vue3.0+ts+element-plus多页签应用模板:侧边导航菜单(上)
  16. postgresql表复制
  17. Matlab:常用命令大全
  18. springboot 整合Swagger及美化
  19. 微信小程序:封装上传图片组件
  20. Android V1及V2签名原理简析

热门文章

  1. 华雨欢:5月硬分叉的BCH未来可期
  2. f(x)和g(x)分别是概率密度函数,h(x)=f(x)g(x)还会是概率密度函数么?
  3. android微信摇一摇(抽奖)
  4. pandas学习(四)之数据填充
  5. python正则表达式与re模块
  6. Python3快速入门—7.枚举
  7. 如何从0到1搭建业务架构?
  8. 科学计算机上lg怎么打,科学计算器对数
  9. 轻量级Qt键盘-介绍篇
  10. 计算机键盘各个键的用途,给大家介绍键盘各个键的功能图解