esp8266的station和softap模式
(2017-02-17 18:51:46)分类: MQTT |
基于esp8266的SDK实现station向softap的切换,主要有以下几个方面:
1.对softap_config结构体的赋值,它在user_interface.h中
struct softap_config {
uint8
ssid[32];
uint8
password[64];
uint8
ssid_len; //
Note: Recommend to set it according to your ssid
uint8
channel; //
Note: support 1 ~ 13
AUTH_MODE
authmode; //
Note: Don't support AUTH_WEP in softAP mode.
uint8
ssid_hidden;
// Note: default 0
uint8
max_connection;
// Note: default 4, max 4
uint16
beacon_interval;
// Note: support 100 ~ 60000 ms, default 100
};
并利用
1.对softap_config结构体的赋值,它在user_interface.h中
struct softap_config {
};
并利用
wifi_softap_set_config(),进行配置,如果不想逐一配置,可以调用
wifi_softap_get_config()获取默认配置,
主要是设置softap的ssid和password等,
具体配置过程参见论坛,
http://bbs.espressif.com/viewtopic.php?f=21&t=227&sid=352ff16f67ee80289e08145c0a5f281b
2.如果想与其他设备通信,还要建立tcp连接,这里要对espconn结构体赋值,它在espconn.h中
struct espconn {
enum
espconn_type type;
enum
espconn_state state;
union
{
esp_tcp *tcp;
esp_udp *udp;
}
proto;
espconn_recv_callback recv_callback;
espconn_sent_callback sent_callback;
uint8
link_cnt;
void
*reverse;
};
用于选择TCP连接,设置服务端口号等,esp_tcp结构体如下
typedef struct _esp_tcp {
int
remote_port;
int
local_port;
uint8
local_ip[4];
uint8
remote_ip[4];
espconn_connect_callback connect_callback;
espconn_reconnect_callback reconnect_callback;
espconn_connect_callback disconnect_callback;
espconn_connect_callback write_finish_fn;
} esp_tcp;
在对这个结构体初始化完成后要利用函数espconn_accept()创建TCP
server,建立侦听,同时利用espconn_regist_recvcb()注册一个数据接收函数,获取其他设备传过来的信息,如果要发送消息,则调用相应发送函数,这个可以参考http://www.cnblogs.com/CYP01/p/6336943.html,(
ESP8266开启server服务)当然,这一切的前提是使用wifi_set_opmode_current(SOFTAP_MODE);//set
wifi work mode
切换到softap模式。
另外关于esp8266
SDK中常见exception可以参考http://links2004.github.io/Arduino/dc/deb/md_esp8266_doc_exception_causes.html
关于esp8266的flash分配,参见博客http://blog.csdn.net/k7arm/article/details/51812021
如果研究过SDK中的mqtt例程,对#define
CFG_LOCATION
0x79
这个宏定义以及对应的flash擦写有所理解。
前一篇:对SDK中MQTT代码的理解
后一篇:ubuntu下UCI使用