10、ESP8266 AP_UDP_Server

API

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

網絡連接結構體

espconn

struct espconn {
    /** type of the espconn (TCP, UDP) */
    enum espconn_type type; // 網絡連接類型(TCP、UDP)
    /** current state of the espconn */
    enum espconn_state state; //網絡連接的狀態
    union {                   //使用TCP、UDP的結構體指針
        esp_tcp *tcp;
        esp_udp *udp;
    } proto;
    /** A callback function that is informed about events for this espconn */
    espconn_recv_callback recv_callback;//接收回調函數
    espconn_sent_callback sent_callback; //發送回調函數
    uint8 link_cnt;
    void *reverse;
};


typedef struct _esp_udp {
    int remote_port; //遠端端口號
    int local_port; //本機(8266)端口號
    uint8 local_ip[4]; //本機(8266)IP
	uint8 remote_ip[4];//遠端IP
} esp_udp;

初始化網絡連接(UDP通信)

	// ①:定義espconn型結構體(網絡連接結構體
	struct espconn ST_NetCon;	// 注:必須定義爲全局變量,內核將會使用此變量(內存)
	// ②:結構體賦值
	ST_NetCon.type = ESPCONN_UDP;		// 通信協議:UDP
	
	// ST_NetCon.proto.udp只是一個指針,不是真正的esp_udp型結構體變量
	ST_NetCon.proto.udp = (esp_udp *)os_zalloc(sizeof(esp_udp));	// 申請內存(參考下圖)
	/* 這樣也可以
	//esp_udp ST_UDP;	// UDP通信結構體
	//ST_NetCon.proto.udp = &ST_UDP;
	*/
	// 此處無需設置目標IP/端口(ESP8266作爲Server,不需要預先知道Client的IP/端口)
	ST_NetCon.proto.udp->local_port  = 8266 ;		// 設置本地端口
	//ST_NetCon.proto.udp->local_port  = espconn_port();	// 也可使用espconn_port獲取8266可用端口
	// ③:註冊/定義回調函數
	espconn_regist_sentcb(&ST_NetCon,ESP8266_WIFI_Send_Cb_JX);	// 註冊網絡數據發送成功的回調函數
	espconn_regist_recvcb(&ST_NetCon,ESP8266_WIFI_Recv_Cb_JX);	// 註冊網絡數據接收成功的回調函數
	// ④:調用UDP初始化API
	espconn_create(&ST_NetCon);	// 初始化UDP通信

在這裏插入圖片描述

發送數據回調函數

在這裏插入圖片描述

接收數據回調函數在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章