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。特別注意,該函數要求被轉換的字符串是按十進制數理解的。

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;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM