完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
ESP8266设置为station+ap模式,手机可以连接AP,但是PC连接AP时连接不上,通过串口输出的信息看应该是PC反复连接,断开AP(ESP8266),请问是哪里出现问题?
我的代码如下: #include "esp_common.h" #include "uart.h" #include "freertos/FreeRTOS.h" #include "freertos/task.h" extern void vTask_ap( void * pvParameters ); extern void vTask_station( void * pvParameters ); void user_init(void) { xTaskHandle xHandle = NULL; uart_init_new(); printf("SDK version:%sn", system_get_sdk_version()); if(wifi_set_opmode_current(0x03) == 0) { printf("wifi set mode 0x03 failed!rn"); while(1); } printf("wifi set mode 0x03 success!rn"); xTaskCreate( vTask_ap, /* Function that implements the task. */ "ap_task", /* Text name for the task. */ 512, /* Stack size in words, not bytes. */ NULL, /* Parameter passed into the task. */ 1,/* Priority at which the task is created. */ &xHandle ); /* Used to pass out the created task's handle. */ xTaskCreate( vTask_station, /* Function that implements the task. */ "station_task", /* Text name for the task. */ 512, /* Stack size in words, not bytes. */ NULL, /* Parameter passed into the task. */ 1,/* Priority at which the task is created. */ &xHandle ); /* Used to pass out the created task's handle. */ } void vTask_station( void * pvParameters ) { while(1) { //printf("task_stationrn"); vTaskDelay(2); } } void wifi_handle_event_cb(System_Event_t *evt) { printf("event %xn", evt->event_id); switch (evt->event_id) { case EVENT_STAMODE_CONNECTED: printf("connect to ssid %s, channel %dn", evt->event_info.connected.ssid, evt->event_info.connected.channel); break; case EVENT_STAMODE_DISCONNECTED: printf("disconnect from ssid %s, reason %dn", evt->event_info.disconnected.ssid, evt->event_info.disconnected.reason); break; case EVENT_STAMODE_AUTHMODE_CHANGE: printf("mode: %d -> %dn", evt->event_info.auth_change.old_mode, evt->event_info.auth_change.new_mode); break; case EVENT_STAMODE_GOT_IP: printf("ip:" IPSTR ",mask:" IPSTR ",gw:" IPSTR, IP2STR(&evt->event_info.got_ip.ip), IP2STR(&evt->event_info.got_ip.mask), IP2STR(&evt->event_info.got_ip.gw)); printf("n"); break; case EVENT_SOFTAPMODE_STACONNECTED: printf("station: " MACSTR "join, AID = %dn", MAC2STR(evt->event_info.sta_connected.mac), evt->event_info.sta_connected.aid); break; case EVENT_SOFTAPMODE_STADISCONNECTED: printf("station: " MACSTR "leave, AID = %dn", MAC2STR(evt->event_info.sta_disconnected.mac), evt->event_info.sta_disconnected.aid); break; default: break; } } void vTask_ap( void * pvParameters ) { struct station_info * station; struct softap_config *config = (struct softap_config *)zalloc(sizeof(struct softap_config)); // initialization wifi_set_event_handler_cb(wifi_handle_event_cb); wifi_softap_get_config(config); // Get soft-AP config first. sprintf(config->ssid, "test"); sprintf(config->password, "11111111"); config->authmode = AUTH_WPA_WPA2_PSK; config->ssid_len = 0; // or its actual SSID length config->max_connection = 2; wifi_softap_set_config(config); // Set ESP8266 soft-AP config free(config); while(1) { //station = wifi_softap_get_station_info(); //while(station) //{ //printf("bssid:%srnip:%srn",MAC2STR(station->bssid), IP2STR(&station->ip)); //station = STAILQ_NEXT(station, next); //} //wifi_softap_free_station_info(); // Free it by calling functions //printf("task_aprn"); vTaskDelay(2); } } 输出调试信息如下: SDK version:1.4.0(c599790) wifi set mode 0x03 success! mode : sta(5c:cf:7f:12:67:b1) + softAP(5e:cf:7f:12:67:b1) add if0 dhcp server start:(ip:192.168.4.1,mask:255.255.255.0,gw:192.168.4.1) add if1 bcn 100 event 8 event 8 event 8 event 8 event 8 event 8 event 8 add 1 aid 1 station: 3c:46:d8:3a:6d:16 join, AID = 1 event 6 station: 3c:46:d8:3a:6d:16join, AID = 1 station: 3c:46:d8:3a:6d:16 leave, AID = 1 rm 1 event 7 station: 3c:46:d8:3a:6d:16leave, AID = 1 add 1 aid 1 station: 3c:46:d8:3a:6d:16 join, AID = 1 event 6 station: 3c:46:d8:3a:6d:16join, AID = 1 event 8 event 8 station: 3c:46:d8:3a:6d:16 leave, AID = 1 rm 1 event 7 station: 3c:46:d8:3a:6d:16leave, AID = 1 add 1 aid 1 station: 3c:46:d8:3a:6d:16 join, AID = 1 event 6 station: 3c:46:d8:3a:6d:16join, AID = 1 event 8 station: 3c:46:d8:3a:6d:16 leave, AID = 1 rm 1 event 7 station: 3c:46:d8:3a:6d:16leave, AID = 1 add 1 aid 1 station: 3c:46:d8:3a:6d:16 join, AID = 1 event 6 station: 3c:46:d8:3a:6d:16join, AID = 1 |
|
相关推荐
1个回答
|
|
从你提供的信息来看,你的ESP8266已经成功设置为station+ap模式,并且手机可以正常连接AP。但是PC连接AP时出现问题。这可能是由以下几个原因导致的:
1. **信道问题**:ESP8266使用的信道可能与PC不兼容。你可以尝试更改ESP8266的信道设置,使其与PC的信道设置相匹配。 2. **加密方式**:ESP8266的加密方式可能与PC不兼容。你可以尝试更改ESP8266的加密方式,例如使用WPA2加密。 3. **功率问题**:ESP8266的发射功率可能不足以覆盖PC所在的区域。你可以尝试增加ESP8266的发射功率。 4. **固件问题**:ESP8266的固件可能存在问题。你可以尝试重新刷写固件。 5. **PC设置问题**:PC的无线网卡可能存在问题。你可以尝试更新PC的无线网卡驱动,或者在PC上手动设置无线连接参数。 6. **代码问题**:你的代码可能存在问题。你可以尝试检查代码,确保ESP8266的AP模式和station模式都能正常工作。 由于你没有提供完整的代码,我无法确定具体的问题所在。但是,你可以尝试以下步骤来解决问题: 1. **检查信道设置**:确保ESP8266的信道设置与PC的信道设置相匹配。 2. **检查加密方式**:确保ESP8266的加密方式与PC的加密方式相匹配。 3. **增加发射功率**:尝试增加ESP8266的发射功率,以提高信号覆盖范围。 4. **重新刷写固件**:尝试重新刷写ESP8266的固件,以排除固件问题。 5. **更新PC驱动**:尝试更新PC的无线网卡驱动,以排除驱动问题。 6. **检查代码**:仔细检查你的代码,确保ESP8266的AP模式和station模式都能正常工作。 希望这些建议能帮助你解决问题。如果你需要更详细的帮助,请提供完整的代码和更多的错误信息。 |
|
|
|
只有小组成员才能发言,加入小组>>
598 浏览 1 评论
552浏览 6评论
461浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
443浏览 5评论
445浏览 4评论
415浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-24 06:13 , Processed in 0.880395 second(s), Total 82, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号