加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

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
};
并利用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擦写有所理解。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有