AT指令框架 C語言

2022-09-02 11:36:08 字數 1881 閱讀 1754

本文件記錄設計的at指令框架,使用時只需要簡單增加修改指令和執行指令函式

一、指令結構

typedef enum

at_cmd;

typedef unsigned

char (*pfunc)(unsigned char *ptr, unsigned char

len);

typedef

struct

at_cmd_func;

/*at指令表

*/const at_cmd_func at_cmd_func =,,,

,,,,

,,,};

指令執行函式

/*

指令執行函式

*/unsigned

char at_cmd_test(unsigned char *p, unsigned char

len)

unsigned

char at_cmd_name(unsigned char *p, unsigned char

len)

else

return0;

}

二、指令解析

/*

查詢指令表中對應的指令

*/unsigned

char at_cmd_search(unsigned char *p, unsigned char

len)

}return

ret;}/*

at指令解析

*/unsigned

char at_cmd_parse(unsigned char *p, unsigned char

len)

else

if(p[2] == '+')

else

ret = at_err_fun_unused; /*

沒有可執行函式 */}

else}}

else

return

ret;

}

三、指令測試

/*

測試 */

int main(void

);

for(i=0; i)

return0;

}

結果如下

指令解析後返回資料定義

#define at_success         (0) /* 指令正常 */

#define at_err (1) /* 指令異常 */

#define at_err_uninvail (2) /* 沒有對應指令 */

#define at_err_fun_unused (3) /* 沒有可執行函式 */

/*返回值引數內容如上, p-指向解析的指令,len-解析指令長度

*/unsigned

char at_cmd_parse(unsigned char *p, unsigned char len);

注意:上面**中使用了2個類c庫函式 mstrlen, mstrncmp (與c庫中strlen, strncmp功能一致),主要是為了移植是脫離平台,編譯時使用**占用空間盡量少

unsigned int mstrlen(const

char *s)

int mstrncmp(const

char *s1, const

char *s2, int

n)

return

d;}

C語言相關指令

1 restrict 用於限定和約束指標,並表明指標是訪問乙個資料物件的唯一且初始的方式.即它告訴編譯器,所有修改該指標所指向記憶體中內容的操作都必須通過該指標來修改,而不能通過其它途徑 其它變數或指標 來修改。2 attribute attribute 可以設定函式屬性 變數屬性和型別屬性,也可以...

VUE 框架指令

被稱作大鬍子語法 雙花括號語法,在 vue 的使用中很常見 可以存放變數名,存放表示式 一些運算,只要最終的結果 h1 但是它有著自身的侷限性,只允許出現在內容區域,怎麼辦?我想改 class類名!想改id名!想改屬性名!為迎合屬性 類名,id,name 變化的需要,vue 提供了 指令 指令 di...

C語言預處理指令

一 預處理的由來 在c 的歷史發展中,有很多的語言特徵 特別是語言的晦澀之處 來自於c語言,預處理就是其中的乙個。c 從c語言那裡把c語言預處理器繼承過來 c語言預處理器,被bjarne博士簡稱為cpp,不知道是不是c program preprocessor的簡稱 二 常見的預處理功能 預處理器的...