針對協議命令字處理函式

2021-07-23 22:24:44 字數 1062 閱讀 4664

我們在處理命令字協議的時候例如以下協議,aa tt  05 06 09 bb  其中aa tt是協議頭,05是命令字 ,06是資料長度,09是資料內容,bb是協議尾。

針對這種協議。我們一般在處理命令字的時候大多數使用的都是switch case進行命令字的處理。但是如果再處理非常多的命令字的時候我們就不得不

建立更多的case語句進行處理。

下面的程式是使用的類似於註冊命令字的形式,當一條協議傳送過來後,通過查詢相應的命令字來處理不同的任務。

下面的程式已經在linux上進行測試過

#include #include #define max_cmd_num     (50)

#if 1//兩種定義方式都可以

enum;

#else

#define first (0x01)

#define two (0x02)

#endif

typedef struct studentstudent, *studentinfo;

//命令字處理函式

typedef int (*fcmd_proc)(studentinfo std); //自己定義多少個引數和引數型別eg(studentinfo std,int i, int h);

struct process_cmdproc_cmd;

//註冊命令字處理函式

static void reg_cmd_proc(unsigned char command, fcmd_proc fproc)

static int proc_first_cmd(studentinfo std)

static int proc_two_cmd(studentinfo std)

//所有的命令字在這裡註冊

void register_all_command(void)

//查詢並處理命令

int process_command(studentinfo std)

}}int main(int argc,char *argv)

return 0;

}

C C 數字處理函式總結

1.絕對值 標頭檔案 函式原型 int abs int x long abs long x double abs double x long double abs long double x float abs float abs 返回 x的絕對值 2.浮點數絕對值 標頭檔案 函式原型 double...

oracle函式大全 數字處理函式

oracle函式大全 數字處理函式 f.3 數字函式 函式接受number型別的引數並返回number型別的數值.超越函式和三角函式的返回值精確到36位.acos asin atan atan2的結果精確到36位.l abs 語法 abs x 功能 得到x的絕對值.使用位置 過程性語言和sql語句。...

oracle函式大全 數字處理函式

f.3 數字函式 函式接受number型別的引數並返回number型別的數值.超越函式和三角函式的返回值精確到36位.acos asin atan atan2的結果精確到36位.l abs 語法 abs x 功能 得到x的絕對值.使用位置 過程性語言和sql語句。l acos 語法 acos x 功...