AT指令框架的實現

qingfeng_96發表於2018-11-22

AT指令概述

AT指令是應用於終端裝置與PC應用之間的連線與通訊的指令。AT 即Attention。每個AT命令列中只能包含一條AT指令;對於AT指令的傳送,除AT兩個字元外,最多可以接收1056個字元的長度。

AT指令的格式

命令格式如下所示:

AT[+CMD][=KEY]

CMD:命令;
KEY:引數的值,如果是?表示請求該引數的值,此處可有多個引數組成;

用到的API函式簡介

char *strtok(char s[], const char *delim);

分解字串為一組字串。s為要分解的字元,delim為分隔符字元(如果傳入字串,則傳入的字串中每個字元均為分割符)。首次呼叫時,s指向要分解的字串,之後再次呼叫要把s設成NULL。

int atoi(const char *nptr);

atoi (表示 ascii to integer)是把字串轉換成整型數的一個函式,應用在計算機程式和辦公軟體中。int atoi(const char *nptr) 函式會掃描引數 nptr字串,跳過前面的空白字元(例如空格,tab縮排)等,可以通過isspace( )函式來檢測),直到遇上數字或正負符號才開始做轉換,而在遇到非數字或字串結束符('\0')才結束轉換,並將結果返回。如果 nptr不能轉換成 int 或者 nptr為空字串,那麼將返回 0。特別注意,該函式要求被轉換的字串是按十進位制數理解的。

AT指令框架設計思路

好的程式碼應該具有良好的封裝和可讀性,AT指令直譯器的設計主要通過二級連結串列針對AT指令的特徵對指令進行分類,提高指令索引效率,通過回撥函式實現程式碼的良好封裝。其中一級資料結構如下所示:


typedef  struct MemShell_t {//指令成員
    char *Map;//指令儲存區域
    uint16_t MapLength;//Map的長度
    uint8_t begin;//指令的首地址
    uint8_t end;//指令的結束地址
    void(*CallBack)(char *,uint16_t);//回撥函式
    struct MemShell_t *Next;//下一個節點
}MemShell_t, *MemShell_pt;

 

轉載---http://www.cnblogs.com/memorypro/p/9512129.html

相關文章