在應(yīng)用代碼中我們實(shí)現(xiàn)如下功能: 當(dāng)應(yīng)用程序啟動(dòng)后會(huì)獲取命令行參數(shù)。如果命令行沒有參數(shù),LED 燈將循環(huán)閃爍;如果命令行帶有參數(shù),則根據(jù)傳輸?shù)膮?shù)控制 LED 燈的開啟或關(guān)閉。通過 HdfIoServiceBind 綁定 LED燈的 HDF 服務(wù),獲取 HDF 空間緩存區(qū),并向該緩沖區(qū)寫入控制數(shù)據(jù)。然后,通過 LED_WRITE 命令將數(shù)據(jù)發(fā)送到 HDF 驅(qū)動(dòng),從而控制 LED 燈的亮滅。在程序結(jié)束時(shí),會(huì)回收 HDF 空間緩沖區(qū)和 HDF 服務(wù)。 接下來編寫應(yīng)用測(cè)試文件 led_test.c,完整代碼如下所示。 ![]() 接下來編寫應(yīng)用 APP 的 GN 文件 BUILD.gn,代碼內(nèi)容如下所示: ![]() 上面的代碼用于構(gòu)建一個(gè)“l(fā)ed_test”的可執(zhí)行文件的構(gòu)建腳本,它使用了 GN(Generate Ninja)構(gòu)建系統(tǒng),這是一種元構(gòu)建系統(tǒng),用于生成 Ninja 構(gòu)建文件。 1-2 行定義了兩個(gè)變量 HDF_FRAMEWORKS 和 HDF_ADAPTER,它們分別指向 HDF(HardwareDriver Foundation,硬件驅(qū)動(dòng)框架)核心框架和適配器的路徑。這些路徑是相對(duì)于項(xiàng)目根目錄的。 4-5 行 使用 import 語句導(dǎo)入兩個(gè) GNI(GN Include)文件。GNI 文件是 GN 構(gòu)建系統(tǒng)用來包含變量定義、函數(shù)和模板的文件。這里導(dǎo)入的文件可能包含了一些預(yù)定義的變量、函數(shù)或構(gòu)建規(guī)則,用于支持構(gòu)建過程。//build/ohos.gni 可能包含了 OpenHarmony 特有的構(gòu)建配置,而$HDF_ADAPTER/uhdf2/uhdf.gni 可能包含了與 uHDF(Unified Hardware Driver Framework,統(tǒng)一硬件驅(qū)動(dòng)框架)相關(guān)的配置。 7 行 打印一條消息到控制臺(tái),表明正在編譯 led_test 示例。 9-40 行 定義一個(gè)名為 led_test 的 ohos_executable 目標(biāo),這是一個(gè)構(gòu)建規(guī)則,用于生成一 個(gè)可執(zhí)行文件。下面是該目標(biāo)的具體配置: sources:指定源文件列表,這里只有一個(gè)文件 led_test.c。 include_dirs:指定頭文件搜索路徑列表。這些路徑用于在編譯時(shí)查找包含的文件(#include指令引用的文件)。這些路徑包括了 HDF 框架、適配器的多個(gè)子目錄,以及一些第三方庫和內(nèi)部工具庫的頭文件路徑。 external_deps:指定外部依賴項(xiàng)列表。這些依賴項(xiàng)是在構(gòu)建過程中需要鏈接的庫。這里列出了幾個(gè)庫,如 c_utils:utils、hdf_core:libhdf_platform 等,這些庫提供了構(gòu)建 led_test 所需的功能。 cflags:指定傳遞給 C 編譯器的標(biāo)志列表。這里包括了一些常見的編譯選項(xiàng),如-Wall(打開所有警告)、-Wextra(打開額外警告)、-Werror(將所有警告視為錯(cuò)誤)、以及兩個(gè)用于關(guān)閉特定警告的選項(xiàng)。 part_name:指定構(gòu)建產(chǎn)物所屬的部件名稱,這里是 demos。 install_enable:設(shè)置為 true,表示構(gòu)建產(chǎn)物應(yīng)該被安裝。這可能意味著在構(gòu)建成功后,led_test可執(zhí)行文件會(huì)被復(fù)制到某個(gè)特定的目錄,以便于執(zhí)行或分發(fā)。 |