为你的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: # ...
随机推荐
- HDU 5179 beautiful number (数位dp / 暴力打表 / dfs)
beautiful number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- Docker容器日常操作命令
在Docker的运用中,从下载镜像,启动容器,在容器中输入命令来运行程序,这些命令都是手工一条条往里输入的,无法重复利用,而且效率很低.所以就需要一 种文件或脚本,我们把想执行的操作以命令的方式写入其 ...
- day25—JavaScript实现文件拖拽上传案例实践
转行学开发,代码100天——2018-04-10 今天记录一个利用JavaScript实现文件拖拽上传到浏览器,后天将文件打开的小案例. 基本功能:1点击添加文件 2 文件拖拽添加 html: < ...
- Hugo - 安装、设置及使用
Hugo 官方主页:https://gohugo.io 待选主题: https://github.com/cdipaolo/gindoro https://github.com/oserz/hugo- ...
- 2019牛客暑期多校训练营(第三场)H Magic Line
原题链接:H Magic Line 题意简述: 给定n个点,要求画一条直线将n个点分成均有n / 2个点的两部分,不能有点在线上: 解题思路: 首先,先将所有的点进行以x为第一关键字,y为第二关键字 ...
- Logistic Regression Algorithm解决分类问题
在线性回归算法中,我们看到,在training set中,输入矩阵X与向量y的值都是连续的.所以在二维空间中,我们可以用一条直线去模拟X与y的变化关系,寻找参数向量theta的取值.如根据房屋面积预测 ...
- vuejs基础-style样式
在Vue中使用样式 使用class样式 数组 <h1 :class="['red', 'thin']">这是一个邪恶的H1</h1> 数组中使用三元表达式 ...
- JavaScript defineProperties
function defineProperties(obj, properties) { function convertToDescriptor(desc) { function h ...
- java序列化的相关介绍
1.什么是序列化?为什么要用序列化? 序列化就是将对象状态转换为可保持或传输的格式的过程.与序列化相对的就是反序列化,他将流转换成对象.这两个过程结合起来,可以轻松地存储和传输数据. 注意:对象序列化 ...
- for in 和for of的区别
for in 和for of的区别:https://www.jianshu.com/p/c43f418d6bf0 1 遍历数组通常用for循环 ES5的话也可以使用forEach,ES5具有遍历数组功 ...