色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

分享一個開源輕量級單片機命令行交互組件

嵌入式情報局 ? 來源:gitee.com ? 2023-01-29 10:43 ? 次閱讀

1、介紹

在進行調試和維護時,常常需要與單片機進行交互,獲取、設置某些參數或執行某些操作,nr_micro_shell正是為滿足這一需求,針對資源較少的MCU編寫的基本命令行工具。

雖然RT_Thread組件中已經提供了強大的finsh命令行交互工具,但對于ROMRAM資源較少的單片機,finsh還是略顯的龐大,在這些平臺上,若仍想保留基本的命令行交互功能,nr_micro_shell是一個不錯的選擇。

項目地址:github.com/Nrusher/nr_micro_shell

nr_micro_shell具有以下優點

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

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

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

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

原始工程 添加nr_micro_shell增加量 添加finsh增加量
ROM 63660 +3832 +26908
RAM 4696 +1104 +1304

兩者配置都為

最多3條歷史命令。

支持Tab補全 。

命令行最大長度為100。

最多10個命令參數。

命令行線程堆棧為512字節。

nr_micro_shell演示效果如下

52d11bf2-9f08-11ed-bfe3-dac502259ad0.gif

52e28e28-9f08-11ed-bfe3-dac502259ad0.gif

1.1 目錄結構

名稱 說明
docs 文檔目錄,包含演示的GIF圖片等
examples 例子目錄,包括命令函數示例:nr_micro_shell_commands.c 和RT_Thread下使用示例 nr_micro_shell_thread.c
inc 頭文件目錄
src 源代碼目錄

1.2 許可證

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

1.3 依賴

無依賴

2、RT_Thread 下 ENV 工具使用

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

RT-Threadonlinepackages
toolspackages--->
[*]nr_micro_shell:Lightweightcommandlineinteractiontool.--->

相關的設置在按下sapce鍵選中后,按enter可進行相關參數配置。然后讓 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、裸機下使用

3.1 配置:

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

3.2 用法:

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

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

使用示例如下

#include"nr_micro_shell.h"

intmain(void)
{
/*初始化*/
shell_init();

while(1)
{
if(USARTGETACHAR'c')
{
/*nr_micro_shell接收字符*/
shell(c);
}
}
}

建議直接使用硬件輸入前,建議使用如下代碼(確保可以正常打印信息),驗證nr_micro_shell是否可以正常運行

#include"nr_micro_shell.h"

intmain(void)
{
unsignedinti=0;
//匹配好結束符配置NR_SHELL_END_OF_LINE0
chartest_line[]="test123
"
/*初始化*/
shell_init();

/*初步測試代碼*/
for(i=0;i

3.3 添加自己的命令

STEP1:

您需要在nr_micro_shell_commands.c*中實現一個命令函數。命令函數的原型如下

voidyour_command_funtion(charargc,char*argv)
{
.....
}

argc是參數的數目。argv存儲每個參數的起始地址和內容。如果輸入字符串是

test-a1

argc為3,argv的內容為

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

如果想知道第一個或第二個參數的內容,應該使用

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

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

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

conststatic_cmd_ststatic_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命令編譯源碼,生產的可執行文件為./examples/simulator/out/nr_micro_shell或./examples/simulator/out/nr_micro_shell_db。可使用的make命令如下

#編譯可執行文件
make
#編譯可仿真執行文件
makedebug
#清除編譯生成文件
makeclean

5、注意事項

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

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

conststatic_cmd_ststatic_cmd[]=
{
.....
{"?",NULL}
};

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

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

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6035

    文章

    44554

    瀏覽量

    634682
  • mcu
    mcu
    +關注

    關注

    146

    文章

    17127

    瀏覽量

    350997
  • Linux
    +關注

    關注

    87

    文章

    11294

    瀏覽量

    209341
  • 開源
    +關注

    關注

    3

    文章

    3316

    瀏覽量

    42473
  • 命令行
    +關注

    關注

    0

    文章

    77

    瀏覽量

    10387

原文標題:分享一個開源輕量級單片機命令行交互組件

文章出處:【微信號:嵌入式情報局,微信公眾號:嵌入式情報局】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    在STM32實現命令行

    工作中的開發環境都是基于linux命令行交互,作為命令行的重度使用者,玩單片機也要使用命令行工具,百度了
    發表于 12-09 11:32 ?2384次閱讀

    單片機上實現shell命令行交互的方法

    文章發表于我的個人微信公眾號:嵌入式軟件那些事公眾號會定期分享些嵌入式軟件開發相關的技術經驗,涉及嵌入式Linux、STM32、RTOS等,希望對大家有所幫助!如何在單片機上實現shell命令行
    發表于 01-12 07:33

    caxa命令行中的應用

    caxa命令行中的應用 命令行對于大多用戶來說往往只是輸入數據的作用,但是其中的奧妙還有很多,下面就給大家
    發表于 10-18 18:18 ?2294次閱讀

    CMD的命令行高級教程

    CMD的命令行高級教程
    發表于 10-24 08:31 ?30次下載
    CMD的<b class='flag-5'>命令行</b>高級教程

    mini shell命令行調試工具(單片機、c語言)

    @mini shell命令行調試工具介紹Mini shell 命令行調試工具(單片機、c語言)Mini shell是特別適合低內存的
    發表于 11-29 10:21 ?9次下載
    mini shell<b class='flag-5'>命令行</b>調試工具(<b class='flag-5'>單片機</b>、c語言)

    Shell命令行解釋器簡介

    Shell 是命令行解釋器,Shell 為用戶提供了與設備進行命令行交互的方式,用戶通過串口、以太網、無線等方式將
    的頭像 發表于 08-19 17:20 ?3217次閱讀

    Golang基于flag庫實現命令行工具

    Golang 標準庫中的 flag 庫提供了解析命令行選項的能力,我們可以基于此來開發命令行工具。
    的頭像 發表于 10-28 09:26 ?1290次閱讀

    新的開源命令行工具west

    電子發燒友網站提供《新的開源命令行工具west.zip》資料免費下載
    發表于 11-11 09:25 ?0次下載
    新的<b class='flag-5'>開源</b><b class='flag-5'>命令行</b>工具west

    針對單片機開發的輕量級OTA組件

    今天為大家分享開源的,專為單片機開發的輕量級 OTA 組件:mOTA。
    的頭像 發表于 12-26 09:36 ?1380次閱讀

    基于Go語言、輕量級開源的可視化路由追蹤命令行工具——NextTrace

    它基于 nexttrace 命令通過命令行顯示類似于 traceroute 清晰的路由信息。當執行完條追蹤的路由信息時,會自動生成 MapTrace URL 也就是
    的頭像 發表于 04-17 14:16 ?3383次閱讀

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

    開源MCU級命令行交互組件~
    的頭像 發表于 10-17 16:26 ?423次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>個</b><b class='flag-5'>開源</b>MCU級的<b class='flag-5'>命令行</b><b class='flag-5'>交互</b><b class='flag-5'>組件</b>

    如何在單片機中實現命令交互

    在進行調試和維護時,常常需要與單片機進行交互,獲取、設置某些參數或執行某些操作,nr_micro_shell正是為滿足這需求,針對資源較少的MCU編寫的基本命令行工具。
    發表于 09-27 09:31 ?1155次閱讀
    如何在<b class='flag-5'>單片機</b>中實現<b class='flag-5'>命令</b><b class='flag-5'>交互</b>

    單片機上如何做shell命令行交互

    做個shell命令行交互?答案當然是可以的,在網上類似的文章和代碼籮筐, 基本原理: 監測用戶的輸入,然后到
    的頭像 發表于 11-01 15:16 ?1361次閱讀

    linux虛擬怎么調出命令行

    在Linux虛擬中調出命令行界面,可以通過以下步驟實現: 打開虛擬,進入到Linux系統。 在桌面或應用菜單中找到終端或命令行圖標,點擊打開。 輸入
    的頭像 發表于 11-08 11:28 ?3103次閱讀

    linux虛擬怎么調出命令行

    命令行的方式可以因不同的虛擬軟件而異,下面將介紹幾種常用的虛擬軟件以及它們調出命令行的方法。 VMware虛擬 VMware是
    的頭像 發表于 11-17 09:55 ?3745次閱讀
    主站蜘蛛池模板: 国产午夜视频在线| 美女动态图真人后进式| 欧美高清vivoesosexo10| 亚洲精品91| 菠萝视频高清版在线观看| 精选国产AV精选一区二区三区| 日本一区精品久久久久影院| 真实的强视频免费网站| 国产乱辈通伦影片在线播放亚洲| 欧美 另类 美腿 亚洲 无码| 一个人免费完整在线观看影院| 国产精品久久高潮呻吟无码| 啪啪漫画无遮挡全彩h同人| 中国少妇内射XXXX狠干| 国模啪啪久久久久久久| 色屁屁影院| xxxxhdvideos动漫| 快播金瓶梅| 亚洲午夜精品A片久久WWW软件| 国产精品热久久高潮AV袁孑怡| 彭丹吃奶门| 10分钟免费观看视频| 国模孕妇模特季玥之粉红| 无人区乱码区1卡2卡三卡在线| xxxjapanese丰满奶水| 男人到天堂a在538线| 在线精品视频成人网| 交换:年轻夫妇-HD中文字幕| 小货SAO边洗澡边CAO你动漫| 国产av久久免费观看| 日本特黄网站| www.国产精品视频| 嫩草亚洲国产精品| 91羞羞视频| 麻花传媒XK在线观看| 正在播放国产尾随丝袜美女| 精品亚洲国产熟女福利自在线| 亚洲精品自在在线观看| 国产亚洲精品高清视频免费| 校园女教师之禁区| 国产亚洲精品久久777777|