AT指令框架的實現

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;
相關文章
相關標籤/搜索