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。特別注意,該函數要求被轉換的字符串是按十進制數理解的。ui
AT指令框架設計思路
好的代碼應該具備良好的封裝和可讀性,AT指令解釋器的設計主要經過二級鏈表針對AT指令的特徵對指令進行分類,提升指令索引效率,經過回調函數實現代碼的良好封裝。其中一級數據結構以下所示:spa
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;