1 Star 0 Fork 0

llllllllllll / Commandline-system-for-esp8266-rtos-sdk

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

#Commandline system for esp8266 rtos sdk

一个小巧的命令行系统,类似AT命令,可以通过串口输入命令,然后执行相应程序 可以自定义命令 也可以应用于其他无操作系统和有操作系统的嵌入式系统中一获得人机交互能力 系统任务就是:接受来自外部的命令字符串--->解析命令 在用户自定义的命中,可以获得解析出来的命令参数,然后在根据参数执行其他程序 文件列表中只有sta.c和sta.h与esp8826-rtos-sdk有关,其他的都无关 主要是以下几个文件 cmd.c cmd.h tools.c tools.h type_def.h allcmd.c

先解释下命令行的组成:


命令行:cmd -a,a1,a2,a3 aa1 aa2 aa3 -b,b1,b2 bb1 bb2

命令行组成:


cmd --- 命令名


-a,a1,a2,a3 aa1 aa2 aa3 -b,b1,b2 bb1 bb2 ---- 命令行的参数


a,a1,a2,a3 aa1 aa2 aa3 --- 命令行的第一个参数
a,a1,a2,a3 ---- 第一个参数的选项
a: --选项的第一个子选项
a1: --选项的第二个子选项
a2: --选项的第三个子选项
a3: --选项的第四个子选项


aa1 aa2 aa3---- 第一个参数的所有子参数
aa1: --第一个参数的第一个子参数
aa2: --第一个参数的第二个子参数
aa2: --第一个参数的第三个子参数


b,b1,b2 bb1 bb2 --- 命令行的第二个参数
b,b1,b2 --- 第二个参数的选项
bb1 bb2--- 第二个参数的子参数


以此类推......


命令和参数之间以 ' ' 隔开
参数之间以 '-' 开头
子选项之间用 ',' 隔开,不能有其他字符(包括空格)
子参数之间以 ' ' 隔开
子参数和子选项之间以' '隔开
命令行以回车结尾

ctrl+s 启用或禁用命令系统


命令行中参数的最大个数由cmd.h中的宏 MAX_PARA 决定
命令行中参数的子选项的最大个数由cmd.h中的宏 MAX_SUB_OPT 决定
命令行中参数的子参数的最大个数由cmd.h中的宏 MAX_SUB_PARA 决定
接收命令的命令缓冲区最大大小由cmd.h中的宏 MAX_CMDL_BUF_SIZE 决定
自定义命令的最大个数由cmd.h中的宏 MAX_INNER_CMD_COUNT 决定


命令系统工作方式:

系统提供了2个函数
1,initCmdSys():----系统初始化函数
2,copyCmdCharToBuf():--- 从串口中接受一个字符,可以在一个大循环中调用,也可以在中断中调用


如何新建一个命令:


1,新建一个源文件
2,包含cmd.h文件
3,写命令执行函数,如:aaCmd(),在命令函数执行完之前务必调用endCmd()函数
4,在allcmd.c文件initCmdSys()中,加入语句addCmd("aa",aaCmd);aa为命令行输入的命令名
5, OK


在命令执行函数中如何解析参数:
一般形式如下:
int i,j;
ParaStr para;
for(i=0;i<PARA_COUNT;i++)
{
for(j=0;j<SUBOPT_COUNT(i);j++)
{
getSubOptStr(i,j,&para);
....
}
for(j=0;j<SUBOPT_COUNT(i);j++)
{
getSubParaStr(i,j, &para);
....
}
}


getSubOptStr(i,j,&para) -- 获得第i个参数的第j个子选项,结果保存在para中
getSubOptStr(i,j,&para) -- 获得第i个参数的第j个子参数,结果保存在para中
例如开始的那个示例命令行:
getSubOptStr(0,1,&para) -- 第0个参数的第1个子选项,即字符串 a1
para.addr 为a1的地址
para.len 为a1的长度,为2
getSubParaStr(1,2,&para) -- 第1个参数的第2个子参数,即字符串 bb2
para.addr 为bb2的地址
para.len 为bb2的长度,为3


文件列表中有一个sta命令的示例代码,可以用来扫描AP和连接AP

联系:xa7922@163.com

The MIT License (MIT) Copyright (c) 2016 oneleafpz Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

基于esp8266 rtos sdk的一个小型命令行系统 简单修改后也可以用于其他嵌入式系统 展开 收起
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/ludlee/Commandline-system-for-esp8266-rtos-sdk.git
git@gitee.com:ludlee/Commandline-system-for-esp8266-rtos-sdk.git
ludlee
Commandline-system-for-esp8266-rtos-sdk
Commandline-system-for-esp8266-rtos-sdk
master

搜索帮助