日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

一個開源MCU級的命令行交互組件

jf_pJlTbmA9 ? 來源:維護:Nrusher ? 作者:維護:Nrusher ? 2023-10-17 16:26 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1、nr_micro_shell介紹

在進行調(diào)試和維護時,常常需要與單片機進行交互,獲取、設(shè)置某些參數(shù)或執(zhí)行某些操作,nr_micro_shell正是為滿足這一需求,針對資源較少的MCU編寫的基本命令行工具。雖然RT_Thread組件中已經(jīng)提供了強大的finsh命令行交互工具,但對于ROM、RAM資源較少的單片機,finsh還是略顯的龐大,在這些平臺上,若仍想保留基本的命令行交互功能,nr_micro_shell是一個不錯的選擇。

nr_micro_shell具有以下優(yōu)點

1.占用資源少,使用簡單,靈活方便。使用過程只涉及兩個shell_init()和shell()兩個函數(shù),無論是使用RTOS還是裸機都可以方便的應(yīng)用該工具,不需要額外的編碼工作。

2.交互體驗好。完全類似于linux shell命令行,當串口終端支持ANSI(如Hypertrm終端)時,其不僅支持基本的命令行交互,還提供Tab鍵命令補全,查詢歷史命令,方向鍵移動光標修改功能。

3.擴展性好。nr_micro_shell為用戶提供自定義命令的標準函數(shù)原型,只需要按照命令編寫命令函數(shù),并注冊命令函數(shù),即可使用命令。

nr_micro_shell和相同配置下的finsh (finsh不使用msh)占用資源對比

wKgZomUD6LyACC8CAAA_iWGFbWE152.png

兩者配置都為

最多3條歷史命令。

支持Tab補全 。

命令行最大長度為100。

最多10個命令參數(shù)。

命令行線程堆棧為512字節(jié)。

nr_micro_shell演示效果如下

wKgaomUD6L6AH7MJAAj12eu6YWo543.gif
wKgaomUD6MCAf9uYAAYQ5gkcWX4476.gif

1.1 目錄結(jié)構(gòu)

wKgZomUD6MGALN-oAABnkJblsnk087.png

1.2 許可證

nr_micro_shell package 遵循 MIT 許可,詳見 LICENSE 文件。

1.3 依賴

無依賴

2、Rt_Thread下ENV工具使用nr_micro_shell

RT_Thread 使用 nr_micro_shell package package 需要在 RT-Thread 的包管理器中選擇它,具體路徑如下:

RT-Thread online packages
    tools packages ---> 
        [*] nr_micro_shell:Lightweight command line interaction tool. --->

相關(guān)的設(shè)置在按下sapce鍵選中后,按enter可進行相關(guān)參數(shù)配置。然后讓 RT-Thread 的包管理器自動更新,或者使用 pkgs --update 命令更新包到 BSP 中。

若您需要運行示例,請保證RT_Thread配置中的Using console for kt_printf.選項是被打開的,kt_printf可以正常工作,且Use components automatically initialization.選項打開。編譯直接下載或仿真便可以使用nr_micro_shell。命令行空白時按Tab,可顯示所有支持的命令,測試示例命令可見doc/pic下的使用示例動圖。自定義命令過程,參照下文3. 裸機下使用nr_micro_shell package中的方法。

3、裸機下使用nr_micro_shell package

3.1 配置:

所有配置工作都可以在 nr_micro_shell_config.h 中完成。有關(guān)詳細信息,請參見文件中的注釋。

3.2 用法:

確保所有文件都已添加到項目中。

確保nr_micro_shell_config.h中的宏函數(shù)"shell_printf(),ansi_show_char()"可以在項目中正常使用。

使用示例如下

#include "nr_micro_shell.h"

int main(void)
{
    /* 初始化 */
    shell_init();

    while(1)
    {
        if(USART GET A CHAR 'c')
        {
            /* nr_micro_shell接收字符 */
            shell(c);
        }
    }
}

建議直接使用硬件輸入前,建議使用如下代碼(確??梢哉4蛴⌒畔?,驗證nr_micro_shell是否可以正常運行

#include "nr_micro_shell.h"

int main(void)
{
    unsigned int i = 0;
    //匹配好結(jié)束符配置 NR_SHELL_END_OF_LINE 0
    char test_line[] = "test 1 2 3n"
    /* 初始化 */
    shell_init();
    
    /* 初步測試代碼 */
    for(i = 0; i < sizeof(test_line)-1; i++)
    {
        shell(test_line[i]);
    }

    /* 正式工作代碼 */
    while(1)
    {
        if(USART GET A CHAR 'c')
        {
            /* nr_micro_shell接收字符 */
            shell(c);
        }
    }
}

3.3 添加自己的命令

STEP1:

您需要在nr_micro_shell_commands.c*中實現(xiàn)一個命令函數(shù)。命令函數(shù)的原型如下

void your_command_funtion(char argc, char *argv)
{
    .....
}

argc是參數(shù)的數(shù)目。argv存儲每個參數(shù)的起始地址和內(nèi)容。如果輸入字符串是

test -a 1

則argc為3,argv的內(nèi)容為

-------------------------------------------------------------
0x03|0x08|0x0b|'t'|'e'|'s'|'t'|''|'-'|'a'|''|'1'|''|
-------------------------------------------------------------

如果想知道第一個或第二個參數(shù)的內(nèi)容,應(yīng)該使用

/* "-a" */
printf(argv[argv[1]])
/* "1" */
printf(argv[argv[2]])

STEP2: 在使用命令前需要注冊命令,共有兩種方法注冊命令

1.當配置文件中NR_SHELL_USING_EXPORT_CMD未被定義,在 static_cmd[] 表中寫入

const static_cmd_st static_cmd[] =
{
   .....
   {"your_command_name",your_command_funtion},
   .....
   {"",NULL}
};

注意:不要刪除{"",NULL}!

2.當配置文件中NR_SHELL_USING_EXPORT_CMD被定義,且NR_SHELL_CMD_EXPORT()支持使用的編譯器時,可以使用以下方式注冊命令

NR_SHELL_CMD_EXPORT(your_command_name,your_command_funtion);

4、Linux下使用nr_micro_shell仿真

在工程./examples/simulator/目錄下存放著nr_micro_shell仿真代碼,仍在./examples/nr_micro_shell_commands.c文件中按上述方式添加自定義命令,添加完成后可以使用make命令編譯源碼,生產(chǎn)的可執(zhí)行文件為./examples/simulator/out/nr_micro_shell或./examples/simulator/out/nr_micro_shell_db??墒褂玫膍ake命令如下

# 編譯可執(zhí)行文件
make
# 編譯可仿真執(zhí)行文件
make debug
# 清除編譯生成文件
make clean

5、注意事項

根據(jù)你的使用習慣使用NR_SHELL_USING_EXPORT_CMD選擇命令注冊方式。

使用注冊表注冊命令時,確保您的工程中存在注冊表

const static_cmd_st static_cmd[] =
{
   .....
   {"",NULL}
};

使用NR_SHELL_CMD_EXPORT()時確保,NR_SHELL_CMD_EXPORT()支持使用的編譯器,否則會報錯。

nr_micro_shell 不支持ESC鍵等控制鍵(控制符)。

直接來源:最后一個bug
原文來源:維護:Nrusher
免責聲明:本文為轉(zhuǎn)載文章,轉(zhuǎn)載此文目的在于傳遞更多信息,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問題,請聯(lián)系小編進行處理

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    147

    文章

    19160

    瀏覽量

    404721
  • 開源
    +關(guān)注

    關(guān)注

    3

    文章

    4368

    瀏覽量

    46463
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    雅特力AT-Link Commander,拓展自動化開發(fā)調(diào)試“芯”體驗

    與腳本化控制,開發(fā)者可通過PC端USB接口連接AT-Link,實現(xiàn)對雅特力全系列MCU的調(diào)試與分析,簡化開發(fā)流程。AT-LinkCommander是款基于命令行的應(yīng)
    的頭像 發(fā)表于 04-29 11:35 ?267次閱讀
    雅特力AT-Link Commander,拓展自動化開發(fā)調(diào)試“芯”體驗

    ROC rk3588s PC的uboot命令行的啟動

    到了 Ubuntu 啟動流程。根據(jù)您的 Wiki 指導(dǎo),我曾嘗試在啟動時通過串口終端反復(fù)按下 Ctrl+C、空格等按鍵,但始終無法進入 U-Boot 命令行。我懷疑是 U-Boot 環(huán)境變量中的 bootdelay
    發(fā)表于 04-06 21:40

    涂鴉CLI正式開源:讓AI Agent命令管理3000+品類智能設(shè)備

    最近,CLI(命令行工具)正在成為AIAgent時代的基礎(chǔ)設(shè)施。飛書、企業(yè)微信、釘釘?shù)榷嗉抑髁鬓k公協(xié)作平臺,相繼開源了各自的CLI工具,將消息、文檔、日程等產(chǎn)品能力封裝為命令行接口,供開發(fā)者
    的頭像 發(fā)表于 04-02 18:10 ?373次閱讀
    涂鴉CLI正式<b class='flag-5'>開源</b>:讓AI Agent<b class='flag-5'>一</b>行<b class='flag-5'>命令</b>管理3000+品類智能設(shè)備

    運維工程師必須掌握的10系統(tǒng)命令

    系統(tǒng)命令是運維工程師與服務(wù)器交互的基礎(chǔ)工具。雖然現(xiàn)代運維工作有大量的自動化工具和平臺,但掌握核心系統(tǒng)命令仍然必要。命令行工具響應(yīng)速度快、不依賴圖形界面、可以組合使用應(yīng)對復(fù)雜場景。在服務(wù)
    的頭像 發(fā)表于 03-23 10:28 ?229次閱讀

    Kubernetes kubectl命令行工具詳解

    kubectl是Kubernetes官方提供的命令行工具,作為與Kubernetes集群交互的主要接口,它通過調(diào)用Kubernetes API Server實現(xiàn)對集群資源的全面管理。在生產(chǎn)環(huán)境中,運維工程師需要熟練掌握kubectl命令
    的頭像 發(fā)表于 02-02 16:40 ?623次閱讀

    命令行阿里千問搭建過程

    克隆千問倉庫,安裝依賴; 下載模型權(quán)重; 命令行執(zhí)行啟動腳本,配置參數(shù)后運行推理。
    發(fā)表于 12-24 10:35

    使用AT組件命令行可以發(fā)送成功,但是在程序里發(fā)送總是超時,怎么解決?

    是AT說明里的例程,按照例程把發(fā)送命令加入到控制臺,輸入命令是可以正確響應(yīng)的。 但是我在程序里寫是類似的代碼,就提示超時。 在提示超時后,又會顯示正確的響應(yīng)結(jié)果,這是為了啥?! 下面是我的程序 int
    發(fā)表于 09-23 07:14

    所見即所得——Luban-Lite VS Code插件讓開發(fā)實現(xiàn)“命令行自由”

    NEWS所見即所得!Luban-LiteVSCode插件指南親愛的開發(fā)者朋友們,你是否還在為嵌入式開發(fā)中頻繁切換命令行而抓狂?配置環(huán)境參數(shù)如“走迷宮”,編譯燒錄還需切換AiBurn?今天,匠芯創(chuàng)為您
    的頭像 發(fā)表于 08-07 15:38 ?1261次閱讀
    所見即所得——Luban-Lite VS Code插件讓開發(fā)實現(xiàn)“<b class='flag-5'>命令行</b>自由”

    解析K8S實用命令

    前言: 作為運維工程師,掌握 Kubernetes 命令行工具是日常工作的核心技能。本文將深入解析 K8S 最實用的命令,從基礎(chǔ)操作到高級技巧,助你成為容器化集群管理專家。
    的頭像 發(fā)表于 07-24 14:07 ?1020次閱讀

    已收藏!你需要知道的57常用樹莓派命令

    初次使用樹莓派并不總是那么容易,因為你可能還沒有使用命令行的習慣。然而,終端命令是必不可少的,而且通常比通過圖形用戶界面(GUI)操作更高效。那么,有哪些重要的命令是你應(yīng)該知道的呢?有相當多的
    的頭像 發(fā)表于 07-23 18:36 ?1311次閱讀
    已收藏!你需要知道的57<b class='flag-5'>個</b>常用樹莓派<b class='flag-5'>命令</b>!

    USB串行配置實用程序是否有可用的命令行版本?

    USB串行配置實用程序是否有可用的命令行版本?
    發(fā)表于 07-22 08:09

    【RA-Eco-RA6M4開發(fā)板評測】移植shell實現(xiàn)命令交互

    /XLmbJn0SKoDT1aLdxHDrbg 超級精簡高可移植的shell命令行C實現(xiàn)二. 移植移植參考上述文章,很簡單只需要實現(xiàn)輸入輸出接口 即可。代碼見shell.c/h shell_func.c/h 接口
    發(fā)表于 07-19 22:47

    淺談wsl --update` 命令行選項無效的解決方案

    PS C:\Users\Administrator> wsl --update >> 命令行選項無效: --update
    的頭像 發(fā)表于 06-27 10:28 ?1.2w次閱讀

    2025科大訊飛智能交互產(chǎn)品升級發(fā)布會定檔

    命令行到圖形界面,從觸屏操作到語音助手,技術(shù)浪潮重新定義人機交互的邊界。當大模型的智慧涌現(xiàn),機器從“能聽會說”真正走向“能理解會思考”,那么未來交互的新范式將是什么?
    的頭像 發(fā)表于 06-11 17:12 ?1393次閱讀

    飛凌嵌入式ElfBoard ELF 1板卡-Uboot常用命令之查看命令

    上電后,在uboot倒計時結(jié)束前按下空格,輸入9進入uboot命令行:進入uboot命令行之后,可以通過輸入“?”或者help可以查看uboot全部命令。如圖(圖未截全):每一個
    發(fā)表于 05-22 11:26
    沈丘县| 枣强县| 怀远县| 伊通| 盐池县| 雷山县| 贞丰县| 永定县| 安达市| 稷山县| 西畴县| 永安市| 延庆县| 孟津县| 平遥县| 镇雄县| 定西市| 恭城| 锡林浩特市| 延川县| 监利县| 浠水县| 邻水| 新绛县| 荃湾区| 云林县| 黄陵县| 台江县| 长汀县| 和平区| 新源县| 修文县| 长垣县| 龙口市| 芮城县| 耒阳市| 陈巴尔虎旗| 北川| 神池县| 江山市| 临猗县|