日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

常用于单片机的接口适配器模式C语言实现

發(fā)布時間:2023/12/2 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 常用于单片机的接口适配器模式C语言实现 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一般實現(xiàn)

????在我們做項目的時候,一般的實現(xiàn),可能我們會這樣寫代碼

// FileName: test.c// 來源:公眾號【技術讓夢想更偉大】#include#include “ExternModule.h” int main(void){/*初始化*/ ?vAllInit(); ?while(1) ?{ ? ?/*項目邏輯*/ ? ?vLogicModule1(); ? ?vLogicModule2(); ?}}

????在其外部文件中,調(diào)用相對應的初始化函數(shù)以及邏輯函數(shù),但是當我們項目很復雜的時候,邏輯關系也層層覆蓋、交替的時候,這樣的寫法就有些不是很好看了。

接口適配器

????首先我們還是要來定義數(shù)據(jù)結構,一般這樣的項目分為這樣幾個步驟:

  • 初始化

  • 輸入

  • 處理

  • 輸出

  • ????我們把這四個步驟封裝起來,再定義數(shù)據(jù)結構如下:

    // FileName: test1.c // 來源:公眾號【技術讓夢想更偉大】 /* 適配器類型定義 */ struct?_ADAPTER? {void?(*Init????)(?void?);??//初始化函數(shù)? ? ? ? ? ? ? ? ?void?(*Input???)(?void?);??//輸入轉換函數(shù)????void?(*Process?)(?void?);??//處理函數(shù)????void?(*Output??)(?void?);??//輸出轉換函數(shù) }; typedef struct _ADAPTER ADAPTER ;

    ????那么初始化函數(shù),我們先來這樣定義

    // FileName: test1.c // 來源:公眾號【技術讓夢想更偉大】 /* 模塊初始化 */ void?moduleInit(?ADAPTER?*module?) {if(?module->Init?!=?NULL?) ? ?{??????module->Init(); ? ?}? }

    ????模塊的邏輯運行,我們可以這樣使用

    // FileName: test1.c// 來源:公眾號【技術讓夢想更偉大】/* 模塊邏輯運行 */void moduleRun( ADAPTER *module ){ ? ?// 模塊輸入適配接口不為空,則執(zhí)行輸入適配操作 ? ?if( module->Input != NULL ) ? ?{ ? ? ? ?module->Input(); ? ?}// 模塊處理接口不為空,則執(zhí)行處理操作 ? ? ?// 模塊輸出適配接口不為空,則執(zhí)行輸出適配操作}

    ????在定好了這些數(shù)據(jù)結構以及封裝之后,我們在每個子模塊中都只需要調(diào)用這個模式即可。例如有一個需求,需要點一個燈,我們建立獨立文件,在文件中申明

    // FileName: led.c // 來源:公眾號【技術讓夢想更偉大】 /*led燈運行 */ ADAPTER?LedModule?=?{?vLedInit,?NULL,?vLedRunModule,?NULL?};

    ????那么接下來只需要對初始化函數(shù),邏輯運行函數(shù)進行描述就可以了。同理,我們需要一個按鍵的功能,在另一個獨立文件申請

    // FileName: key.c // 來源:公眾號【技術讓夢想更偉大】 /*按鍵運行 */ ADAPTER?KeyModule?=?{?vKeyInit,?NULL,?vKeyRunModule,?NULL?};

    ????這樣的話就便于我們拆分需求,便于移植,同時程序也就模塊化了,最后我們在main文件中做的就是調(diào)用這些函數(shù)就行。我們需要這樣做。

    // FileName: main.c// 來源:公眾號【技術讓夢想更偉大】/*主函數(shù) */void main( void ){moduleInit(?&LedModule?????????);????moduleInit(?&keyModule?????????); ? ?while( 1 ) ? ?{????????moduleRun(?&LedModule????????);????????moduleRun(?&keyModule????????); ? ?} }

    最后

    ??? main函數(shù)就是這么簡單了,整個架構也是很清晰,體現(xiàn)出編程之美。

    聲明:

    本文于網(wǎng)絡整理,版權歸原作者所有,如來源信息有誤或侵犯權益,請聯(lián)系我們刪除或授權事宜。

    總結

    以上是生活随笔為你收集整理的常用于单片机的接口适配器模式C语言实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。