2017年5月29日 星期一

DIY - ESP8266:ESP8266 SDK 回調函數(二十九)

DIY - ESP8266:ESP8266 SDK 回調函數(二十九):

使用 Espressif(樂鑫) ESP8266 的 SDK 編寫無線網路時,需要使用到註冊回調函數(Registered Callback Function)和回調函數(Callback Function),註冊回調函數用作無線網路的註冊或指定呼叫回調函數,回調函數則作為指定動作的事件處理,所以在初始化時註冊了回調函數,當事件發生時,便可以呼叫回調函數來處理事情。

回調函數(Callback Function)
註冊回調函數(Registered Callback Function): 
  1. espconn_regist_connectcb 
  2. espconn_regist_reconcb 
  3. espconn_regist_disconcb 
  4. espconn_regist_sentcb 
  5. espconn_regist_recvc
espconn_regist_connectcb
功能
註冊連接函數,成功連接時回調
函數定義
sint int8 espconn_regist_connectcb
(struct espconn *espconn, espconn_connect_callback connect_cb)
輸入參數
struct espconn *espconn - 相應連接的控制塊結構
espconn_connect_callback connect_cb - 註冊的回調函數
返回
0 - succeed#define ESPCONN_OK 0
0 - Erro,詳見 espconn.h

espconn_regist_reconcb
功能
註冊重連函數,出錯收到重連時回調
函數定義
s int int8 espconn_regist_reconcb
(struct espconn *espconn, espconn_connect_callback recon_cb)
輸入參數
struct espconn *espconn - 相應連接的控制塊結構
espconn_connect_callback recon_cb - 註冊的回調函數
返回
0 - succeed#define ESPCONN_OK 0
0 - Erro,詳見 espconn.h

espconn_regist_disconcb
功能
註冊斷開連接函數,斷開連接成功時回調
函數定義
s int int8 espconn_regist_disconcb
(struct espconn *espconn, espconn_connect_callback discon_cb)
輸入參數
struct espconn *espconn - 相應連接的控制塊結構
espconn_connect_callback discon_cb - 註冊的回調函數
返回
0 - succeed#define ESPCONN_OK 0
0 - Erro,詳見 espconn.h

espconn_regist_sentcb
功能
註冊數據資料發送函,數據發送成功後回調
函數定義
sint int8 espconn_regist_sentcb
(struct espconn *espconn, espconn_sent_callback sent_cb)
輸入參數
struct espconn *espconn - 相應連接的控制塊結構
espconn_sent_callback cb - 註冊的回調函數 註冊的回調函數
返回
0 - succeed#define ESPCONN_OK 0
0 - Erro,詳見 espconn.h

espconn_regist_recvcb
功能
註冊數據資料接收函數,收到數據時回調
函數定義
s int int8 espconn_regist_recvcb
(struct espconn *espconn, espconn_recv_callback recv_cb)
輸入參數
struct espconn *espconn - 相應連接的控制塊結構
espconn_recv_callback recv_cb - 註冊的回調函數
返回
0 - succeed#define ESPCONN_OK 0
0 - Erro,詳見 espconn.h

ESP8266 註冊回調函數程式:
espconn_regist_connectcb(pespconn, server_listen_cb); //註冊連接回調函數
espconn_regist_disconcb(pespconn, server_discon_cb); //註冊斷開連接回調函數
espconn_regist_sentcb(pespconn, server_sent-cb);   //註冊發送資料成功回調函數
espconn_regist_recvcb(pespconn, server_recv_cb);  //註冊接收資料回調函數
 


回調函數(Callback Function):
  1. espconn_connect_callback 
  2. espconn_sent_callback 
  3. espconn_recv_callback
espconn_connect_callback
功能
偵聽或連接成回調
函數定義
void espconn_connect_callback (void *arg)
輸入參數
void *arg - 回調函數參數
返回

espconn_sent_callback
功能
數據發送結束回調
函數定義
void espconn_sent_callback (void *arg)
輸入參數
void *arg - 回調函數參數
返回

espconn_recv_callback
功能
數據發送結束回調
函數定義
void espconn_recv_callback (void *arg, char *pdata, unsigned short len)
輸入參數
void *arg - 回調函數參數
char *pdata –接收數據入口參數
unsigned short len - 接收數據長度
返回

ESP8266回調函數程式:
// Callback for Reconnect
static void ICACHE_FLASH_ATTR
server_recon_cb(void *arg, sint8 err)
{}

// Callback for Disconnect
static void ICACHE_FLASH_ATTR
server_discon_cb(void *arg)
{}

// Callback for Sending Data Success
static void ICACHE_FLASH_ATTR
server _sent_cb(void *arg)
{}

// Callback for Receiving Data Success
static void ICACHE_FLASH_ATTR
server _recv_cb(void *arg, char *pdata, unsigned short len)
{}

沒有留言:

張貼留言