为你的AliOS Things应用增加自定义cli命令
摘要: 怎么才能在RTOS系统中,通过 串口shell控制LED的开关。

ls /dev/tty.*
/dev/tty.usbmodem14103

aos monitor /dev/tty.usbmodem14103 115200 #mac linux下命令
aos monitor com5 115200 #windows 下命令
--- Miniterm on /dev/tty.usbmodem14103 115200,8,N,1 ---
--- Quit: Ctrl+] | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
#
#
# help
====Build-in Commands====
====Support 4 cmds once, seperate by ; ====
help : print this
p : print memory
m : modify memory
echo : echo for command
exit : close CLI
devname : print device name
sysver : system version
reboot : reboot system
time : system time
ota : system ota
====User Commands====
loglevel : set log level
tasklist : list all thread info
dumpsys : dump system info
udp : [ip] [port] [string data] send udp data
wifi_debug: wifi debug mode
mac : get/set mac
kv : kv [set key value | get key | del key | list]
version : show version
#
# tasklist
------------------------------------------------------------------------
cpu usage period = 25
CPU usage : 1.89
------------------------------------------------------------------------
Name State Prio StackSize MinFreesize Runtime %CPU Candidate
------------------------------------------------------------------------
dyn_mem_proc_task PEND 6 256 216 22 0.00 N
idle_task RDY 61 200 177 745102697 98.11 N
DEFAULT-WORKQUEUE PEND 20 768 738 23 0.00 N
timer_task PEND 5 300 254 25 0.00 N
aos-init PEND 32 1536 1389 1419569 1.38 N
cli RDY 60 512 271 491760 0.47 Y
------------------------------------------------------------------------
struct cli_command {
const char *name; // 命令体,字符串
const char *help; // 命令的帮助说明文本,字符串
void (*function)(char *pcWriteBuffer, int xWriteBufferLen, int argc, char **argv);
// 命令被执行时实际调用的功能函数
};
static void led_switch(char *pwbuf, int blen, int argc, char **argv)
{
if(argc == 1) // 如果参数为空,则报错返回
{
LOG("参数错误");
return;
}
if(strcmp(argv[1],"on") == 0) // 如果输入参数为“on”,则点亮led
{
hal_gpio_output_low(&led); // GPIO输出低,点亮LED2
}
else
{
hal_gpio_output_high(&led); // GPIO输出高,熄灭LED2
}
}
参数名称
|
参数描述
|
char *pwbuf
|
当函数执行完成返回时,通过控制台打印出来的字符串指针。可以不传入。
|
int blen
|
上述字符串长度
|
int argc
|
命令调用时传入的参数长度,没有参数传入时为1
|
char **argv
|
传入参数缓存,字符串。第一个有效参数的角标从1开始。
|
struct cli_command led_switch_command[] = {
{
.name = "led_switch", // 命令名称
.help = "[on] turn on led2;[off] trun off led2",// 帮助文本
.function = led_switch // 命令具体执行的函数指针
}
};
aos_cli_register_commands(&led_switch_command[0],1);
aos_cli_register_commands(&led_switch_command[0],1); // 注册cli命令函数
aos_loop_run();
# help
====Build-in Commands====
====Support 4 cmds once, seperate by ; ====
help : print this
p : print memory
m : modify memory
echo : echo for command
exit : close CLI
devname : print device name
sysver : system version
reboot : reboot system
time : system time
ota : system ota
====User Commands====
loglevel : set log level
tasklist : list all thread info
dumpsys : dump system info
udp : [ip] [port] [string data] send udp data
wifi_debug: wifi debug mode
mac : get/set mac
kv : kv [set key value | get key | del key | list]
version : show version
led_switch: [on] turn on led2;[off] trun off led2
#led_switch on
## led_switch
[1291080]<V> 参数错误
为你的AliOS Things应用增加自定义cli命令的更多相关文章
- 修改node来增加自定义工具命令
如何通过node创建自定义cmd命令 一.命令功能的实现 1.将自己的自定义工具的文件夹放到当前使用的 node 的安装目录下的 node_modules 文件夹下面: 2.回到node安装目录下复制 ...
- [转]通过继承ConfigurationSection,在web.config中增加自定义配置
本文转自:http://www.blue1000.com/bkhtml/2008-02/55810.htm 前几天写了一篇使用IConfigurationSectionHandler在web.conf ...
- 在WPS绿色版中增加自定义皮肤
在WPS绿色版中增加自定义皮肤小俊的博客:http://xiaojun911.com/WPS绿色版:http://xiaojun911.com/xiazai/469.html小俊精简的WPS2016 ...
- dedecms如何增加自定义字段
开源的cms比较好的一点是可以根据自己的需求来开发相应的功能,比如dedecms想要增加一个专家职称字段调用要怎么调用呢? 增加自定义字段:后台找到 “核心” - 频道模型 - 内容模型管理 - 字段 ...
- gnome3增加自定义程序快捷方式
gnome3增加自定义程序快捷方式 1. 安装alacarte 在命令行输入下列命令安装alacarte程序 yum -y install alacarte 安装完毕后,在命令行输入下 ...
- 在项目中增加自定义icon图标
以MUI框架为例,内容来自于MUI官网. mui如何增加自定义icon图标 mui框架遵循极简原则,在icon图标集上也是如此,mui仅集成了原生系统中最常用的图标:其次,mui中的图标并不是图片,而 ...
- Odoo8在TreeView左上角增加自定义按钮以及通过继承生成自定义的View_Mode
今天有网友在问怎么在TreeView左上角增加一个自定义的按钮,在查询Odoo 自带的模块,发现在purchase_requisition中有使用,并且此模块还应用到了自定义View_Mode的情况, ...
- Android开发:《Gradle Recipes for Android》阅读笔记(翻译)4.2——增加自定义task
问题: 你想要在整体的构建过程中加入自定义的task. 解决方案: 使用dependOn属性将你的任务插入 directed acyclic graph 讨论: 在初始化阶段,Gradle将任务根据依 ...
- [ubuntu][deepin]系统增加自定义开机启动项
[ubuntu][deepin]系统增加自定义开机启动项 进行配置 cd /etc/init.d/ ls vim myScript nginx实例 #! /bin/sh # chkconfig: # ...
随机推荐
- 关于BSP,BIOS,和bootloader
BSP是板级支持包,是介于主板硬件和操作系统之间的一层,应该说是属于操作系统的一部分,主要目的是为了支持操作系统,使之能够更好的运行于硬件主板.BSP是相对于操作系统而言的,不同的操作系统对应于不同定 ...
- Type Interceptors
Type Interceptors Castle.Core, part of the Castle Project, provides a method interception framework ...
- ArrayList 源码解读
ArrayList 源码解读 基于JDk 1.7.0_80 public class ArrayList<E> extends AbstractList<E> impl ...
- Git是目前世界上最先进的分布式版本控制系统(没有之一)。
http://zhidao.baidu.com/link?url=NSYPiSvtGTMoqMA9vt68FRRF8WbfYVmwWeMh47_2lkp0K3jFMl--1Co1tg1R4VshTQV ...
- spring容器、spring MVC容器以及web容器的区别
本文转载自 https://www.cnblogs.com/xiexin2015/p/9023239.html 说到spring和springmvc,其实有很多工作好多年的人也分不清他们有什么区别,如 ...
- JSP基础--会话跟踪技术、cookie、session
会话跟踪技术 1 什么是会话跟踪技术 我们需要先了解一下什么是会话!可以把会话理解为客户端与服务器之间的一次会晤,在一次会晤中可能会包含多次请求和响应.例如你给10086打个电话,你就是客户端,而10 ...
- CSS基础--属性选择器、伪类选择器
属性选择器 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...
- 利用Lua实现二叉查找树并进行各种遍历
-- author : coder_zhang-- date : 2014-6-25 root = nil function insert_node(number) if root == nil th ...
- 消息中间件-技术专区-RocketMQ架构原理
RocketMQ是阿里开源的分布式消息中间件,跟其它中间件相比,RocketMQ的特点是纯JAVA实现:集群和HA实现相对简单:在发生宕机和其它故障时消息丢失率更低. 一.RocketMQ专业术语 P ...
- pytest--命令行参数
使用pytest --help可以查看全部选项 -v:pytest -v 说明:可以输出用例更加详细的执行信息,比如用例所在的文件及用例名称等 -q(--quiet) 该选项的作用与-v/--ve ...