为你的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: # ...
随机推荐
- 牛客网暑期ACM多校训练营(第五场) F - take —— 期望+树状数组+逆元
看到一篇好的博客特意转出来观摩大佬:转:https://blog.csdn.net/greybtfly/article/details/81413526 题目大意:给n个箱子排成一排,从头到尾按顺序依 ...
- 台哥原创:java 俄罗斯方块源码
大四的时候,用java开发,耗时一周 界面参照当时用的联想手机里的俄罗斯方块 这里的级别,标识难度,1是初级,方块下降速度很慢,5是最高级,下降速度最快 得分:每消除一行,会给10分,同时消除 ...
- python 数字系列-无穷大与NaN
无穷大与NaN 问题 你想创建或测试正无穷.负无穷或NaN(非数字)的浮点数. 解决方案 Python并没有特殊的语法来表示这些特殊的浮点值,但是可以使用 float() 来创建它们.比如: > ...
- spring-cloud zuul网关
API Gateway 是随着微服务(Microservice)这个概念一起兴起的一种架构模式,它用于解决微服务过于分散,没有一个统一的出入口进行流量管理的问题. 使用 Zuul 实现 API Gat ...
- 由length、length()、size()引发的挖掘
在java中可能会经常用到这几个属性或者方法, 那么今天就来仔细研究一下 length——数组的属性: length()——String的方法: size()——集合的方法: 1.数组.length属 ...
- 学习HTML5 全局属性 accesskey-title
属性classcontextmenu指定一个元素的上下文菜单.当用户右击该元素,出现上下文菜单dirdropzone指定是否将数据复制,移动,或链接,或删除idspellcheck检测元素是否拼写错误 ...
- Recurrent Neural Network(2):BPTT and Long-term Dependencies
在RNN(1)中,我们将带有Reccurent Connection的node依照时间维度展开成了如下的形式: 在每个时刻t=0,1,2,3,...,神经网络的输出都会产生error:E0,E1,E2 ...
- C#静态变量总结
1.初始化 全局static变量的初始化在编译的时候进行,并且只初始化一次 . 函数static变量在函数中有效,第一次进入函数初始化.以后进入函数将沿用上一次的值. 2.生命期 全局static变 ...
- [Linux] 015 用户管理命令
1. 用户管理命令:useradd 命令名称:useradd 命令所在路径:/bin/sbin/useradd 执行权限:root 语法:useradd 用户名 功能描述:添加新用户 范例: $use ...
- [未解决]报错: crawlab启动失败
拉取镜像 docker pull tikazyq/crawlab:latest 一键启动 docker-compose up 报错提示: