【MiCOKit试用体验】+ 如何扩展MICO中的cli命令 - 问答 - 电子技术论坛 - 最好最受欢迎电子论坛!

【MiCOKit试用体验】+ 如何扩展MICO中的cli命令

GalaIO ( 楼主 ) 2015-11-8 19:42:53  只看该作者 倒序浏览
       大家好~我又回来了,最近在学习TCP/IP协议栈所以时间拉下了,3288的板子研究进度比较慢,但是掌握简单的操作还是没问题的,现在我跟搭建分享下如何扩展MicoKit的命令,上一帖子我提到对于MicoKit的例子中,在配置文件里默认打开cli功能,可以让大家能使用命令来操作3288的板子,我们可以把常用功能加入其中,来简便我们的开发和测试。
/ U' X. v, o, b9 h9 W& s, \       幸好,在cli命令中,mico的工程师做了一个开源的命令工具,而且在分析源代码后,我也发现其实特别好给cli工具扩展命令,工程师早就留好了接口,我还以为需要自己写接口呢。
- U  E# [7 Z7 f) w        好了现在我们要进入正题了,说点干货,mico的cli工具存放在MicoKitSDK_MiCO_v2.3.0MICOsystemcommand_console相对目录下,有两个文件,一个是mico_cli.c,这个是源文件包含了cli的主线程、串口配置、IO捕获、命令解析,还有一些内建命令的定义,当然并不是所有功能和内容都在这,还有一些通过二进制链接库提供,估计是保全版权吧,给闭源了,在这里不多说了,大家要想仔细分析源码,学学技巧呢,自己研究哦。8 i$ q# |' e3 J

" d( @& P/ y& S$ q- U5 u' o& b5 L9 O4 C2 P  p" B  X7 V
       这里说一下cli的内置命令的注册过程,首先用户程序调用的mico_system_init()函数,执行了cli_init(),然后执行cli_register_commands()函数,传入内建命令列表,实现了列表的初始化,然后就不用担心了,其他的代码吧cli工具处理的很好咱们直接使用即可。
  n: o& U; W2 _$ K2 f . N3 ?3 G2 |9 J3 t& b
7 K3 k: U! r  i( X" Q3 N: N/ i
       所以我们添加新的命令也是需要类似注册的东东,然后呢我们在cli的接口中发现了这样的函数。) Y5 \/ P+ e' r# j' ]
$ ]; t/ O% s4 {1 K: \

  1. 8 J6 e5 t5 ~6 |5 D- l9 _0 ]+ d
/** Register a CLI command
*
* This function registers a command with the command-line interface.
*
* param[in] command The structure to register one CLI command
* return 0 on success
* return 1 on failure
*/
int cli_register_command(const struct cli_command *command);
复制代码
1 U) u% a. h7 E+ H2 E7 [

. W  \4 b  y4 I+ p4 ?- D8 Q( @4 f这个函数表示我们可以注册一个新的命令道cli中,但是必须的满足cli_command的接口格式。
9 _' [# }3 j/ j) c4 c. }4 Q& ?5 T
$ a& r# n! }1 y5 W, f( _- x
  1. 4 o8 g1 U5 k8 M& B2 p
/** Structure for registering CLI commands */
struct cli_command {
        /** The name of the CLI command */
        const char *name;
        /** The help text associated with the command */
        const char *help;
        /** The function that should be invoked for this command. */
        void (*function) (char *pcWriteBuffer, int xWriteBufferLen, int argc, char **argv);
};
复制代码
: z$ ]3 l1 {% f, M7 S. \* r# o# X- [5 F( Z  t9 ]3 o5 H
       就是这个,只要我们编写了一个正确的cli命令函数,然后创建一个cli_command的结构体,在你的程序中,注册他就可以了。就是这么简单,这是我注册了3个命令的结构。. H. e, Z/ s$ O( i2 w

  |  f2 M" m7 p& N% O& }3 ]* e1 }- F2 p6 @
      可以看到,最后的三个命令是我新添加的,在下一节中我会说明,这三个命令的实现原理。1 L! p8 H4 F0 l4 H( w( W+ A

1个回复

micolover 发表于 2015-11-9 11:43:05
感谢楼主的分享!
回复

举报 使用道具

您需要登录后才可以回帖 登录 | 注册

本版积分规则


关闭

站长推荐上一条 /9 下一条

小黑屋|手机版|Archiver|电子发烧友 ( 湘ICP备2023018690号 )

GMT+8, 2025-12-1 18:32 , Processed in 0.379016 second(s), Total 34, Slave 23 queries .

Powered by 电子发烧友网

© 2015 bbs.elecfans.com

微信扫描
快速回复 返回顶部 返回列表