我們在處理命令字協議的時候例如以下協議,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 功...