• <noscript id="yywya"><kbd id="yywya"></kbd></noscript>
  • 發布時間:2020-10-05 18:07 原文鏈接: AWorks編程:Shell交互界面(四)

    3.1注冊Shell命令

    以LED外設為例,注冊三個控制LED的Shell命令:led_on、led_off和led_toggle。

    1、首先定義led shell命令表,命令表實際是一個結構體數組,數組中每個元素就是一個shell命令對象,它包含命令名稱、命令描述,和命令要執行的函數。如程序清單 6。

    程序清單6 定義led shell命令表

    2、定義 led shell 命令對應的功能函數 __shell_led_on、__shell_led_off和__shell_led_toggle。這三個函數定義基本相同,本文僅列出__shell_led_on函數定義如程序清單 7,其他兩個函數定義將程序清單 7中的 aw_led_on() API 替換即可。

    程序清單7 __shell_led_on函數定義

    __shell_led_on 函數類型和 aw_shell_printf () API 說明請查閱 aw_shell.h。aw_led_on API說明請查閱 aw_led.h。該函數執行過程中需要匹配一個參數,所以 led shell命令使用時,要攜帶LED編號參數:"LED_RUN" 或者 "LED_ERR"。

    3、 注冊Shell命令。

    程序清單8 注冊led shell命令

    AW_SHELL_REGISTER_CMDS 是注冊shell 命令的宏函數,此過程將led shell命令插入總的shell 命令鏈表中。

    打開shell Serial命令終端,建立連接。編譯、燒寫并啟動程序,按下Tab鍵,可見 led shell命令已經注冊成功如圖5LED 命令。

    圖5 LED 命令

    led_on

    命令描述:點亮LED燈。

    使用實例:

    led_off

    命令描述:關閉LED燈。

    使用實例:

    led_toggle

    命令描述:翻轉LED燈。

    使用實例:

    3.2注冊Shell命令集

    本文自定義一個demo shell命令集,在demo 命令集下包含func1、func2和func3三個命令。

    1、定義命令集對象,命令集對象必須包括進入命令集名稱、退出命令集名名稱和命令集描述,其他屬性為可選項,如程序清單 9。

    程序清單9 shell命令集對象

    2、定義demo shell命令集包含的命令表,如程序清單10。

    程序清單10 demo shell命令集包含的命令表

    3、定義命令表中 func1和func2命令對應的功能函數__demo_func1和__demo_func2,如程序清單 11和如程序清單 12。

    程序清單11 __demo_func1函數定義

    程序清單12 __demo_func2函數定義

    4、定義命令表中 func3 命令對應的功能函數__demo_func3,如程序清單 13。

    程序清單 13 __demo_func3函數定義

    該函數定義較為復雜,執行過程中需要匹配選項 '-w'、'-r'、'-d',各個選項后必須攜帶固定數量的參數。

    5、注冊demo shell命令集。

    程序清單14 注冊shell命令集

    AW_SHELL_REGISTER_CMDSET是注冊命令集的宏函數,此過程將 .demo 命令集插入shell命令總鏈表中。

    6、打開 Shell Serial 命令終端,建立連接。編譯、燒寫并啟動程序,按下Tab鍵,可見 demo shell命令集已經注冊成功如圖 6。

    圖6 demo命令集

    進入 .demo 命令集

    按下Tab鍵,顯示 .demo命令集包含的命令表,如圖 7。

    圖7 demo命令集包含的命令表

    func1命令

    命令描述:打印輸出。

    使用實例:

    func2命令

    命令描述:打印輸出。

    使用實例:

    func3命令

    命令描述:打印輸出

    使用實例:

    .exit

    命令描述:退出 .demo 命令集。

    使用實例:

    本文使用的硬件平臺為M1052_EV_Board開發板,購買可咨詢ZLG銷售人員;軟件平臺為 aworks_m105x_sdk_1.0.4-alpha軟件包。


  • <noscript id="yywya"><kbd id="yywya"></kbd></noscript>
  • 东京热 下载