重工电子论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 404|回复: 3

串口命令行移植

[复制链接]
回帖奖励 1 金钱 回复本帖可获得 1 金钱奖励! 每人限 1 次(中奖概率 50%)

16

主题

73

帖子

841

积分

版主

Rank: 7Rank: 7Rank: 7

积分
841
QQ
发表于 2018-11-21 11:49:39 | 显示全部楼层 |阅读模式
本帖最后由 程浥 于 2019-4-19 17:00 编辑

本程序由FreeRTOS操作系统移植到裸机的串口上使用。

先来看一下效果:
20181121_114209.gif

命令文件构成:
snipaste_20181121_120258.png


移植注意点:
1、接收不定长串口数据,给命令行处理,demo中采用队列完成;
2、命令行内部会发送,
3、命令由链表管理,需要对其初始化

命令的格式:
cmd <param> <param> ... <param>  (param的个数需要指定)
[] syntaxhighlighter_viewsource syntaxhighlighter_copycode
const CLI_Command_Definition_t xTest =
{
    "test", /* The command string to type. */
    "test:test <cmd> \r\n\    /* The help of the cmd. */
        'version' list the software vesion.\r\n\
        'reboot' reboot now.\r\n",
    prvTestCommand, /* The function to run. */
    1 /* The num of param. */
};


参数的使用:
解析相应的参数,以字符串相比较。
例如解析第一个参数,该参数等于“version”,就输出当前软件的版本信息。
使用的时候注意参数检测,非法参数做报错处理。
[] syntaxhighlighter_viewsource syntaxhighlighter_copycode
    /* Obtain the parameter string. */
    pcParameter = FreeRTOS_CLIGetParameter  \
                    (
                        pcCommandString,        /* The command string itself. */
                        1,                        /* Return the first parameter. */
                        &lParameterStringLength    /* Store the parameter string length. */
                    );

    /* Sanity check something was returned. */
    configASSERT( pcParameter );


    if( strncmp( pcParameter, "version", strlen( "version" ) ) == 0 )
    {
        printf("%s\r\n",versions_tab);
    }
    else if( strncmp( pcParameter, "reboot", strlen( "reboot" ) ) == 0 )
    {
        printf("reboot now.\r\n");
        HAL_NVIC_SystemReset();
    }
    else
    {
        sprintf( pcWriteBuffer," '%s' Is Not a Valid parameters\r\n",pcParameter);
    }


附件:
cmd.zip (11.69 KB, 下载次数: 3)
回复

使用道具 举报

12

主题

66

帖子

536

积分

高级会员

Rank: 4

积分
536
QQ
发表于 2018-12-20 14:25:50 | 显示全部楼层
不明觉厉,,,,,哈哈哈哈哈
回复 支持 反对

使用道具 举报

16

主题

73

帖子

841

积分

版主

Rank: 7Rank: 7Rank: 7

积分
841
QQ
 楼主| 发表于 2018-12-28 17:40:34 | 显示全部楼层
张金权-11级电子 发表于 2018-12-20 14:25
不明觉厉,,,,,哈哈哈哈哈

不明觉厉 是什么意思
回复 支持 反对

使用道具 举报

16

主题

73

帖子

841

积分

版主

Rank: 7Rank: 7Rank: 7

积分
841
QQ
 楼主| 发表于 2019-4-19 16:59:26 | 显示全部楼层
更新:https://github.com/redocCheng/cmd
又增加了一个可选择模块。
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|cqutlab ( 渝ICP备15004556号

GMT+8, 2019-7-16 20:03 , Processed in 0.107045 second(s), 35 queries .

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表