当前位置:网站首页>ESP8266 AP_UDP_Client
ESP8266 AP_UDP_Client
2022-07-26 22:44:00 【Paradise_Violet】
目录
在定时回调函数当中,查询AP模式下ESP8266的IP地址,成功获取到IP地址,则关闭定时器,初始化网络连接(UDP通信)
此处需要设置目标IP/端口(ESP8266作为Client,需要预先知道Server的IP/端口)
前言
我们将8266在ap模式加创建udp通信,并且8266在逻辑上作为客户端,网络调试助手作为服务器
void ICACHE_FLASH_ATTR user_init(void)
{
uart_init(115200,115200); // 初始化串口波特率
os_delay_us(10000); // 等待串口稳定
os_printf("\r\n=================================================\r\n");
os_printf("\t Project:\t%s\r\n", ProjectName);
os_printf("\t SDK version:\t%s", system_get_sdk_version());
os_printf("\r\n=================================================\r\n");
// OLED显示初始化
//--------------------------------------------------------
OLED_Init(); // OLED初始化
OLED_ShowString(0,0,"ESP8266 = AP"); // ESP8266模式
OLED_ShowString(0,2,"IP:"); // ESP8266_IP地址
OLED_ShowString(0,4,"Remote = STA"); // 远端主机模式
OLED_ShowString(0,6,"IP:"); // 远端主机IP地址
//--------------------------------------------------------
LED_Init_JX(); // LED初始化
ESP8266_AP_Init_JX(); // 初始化ESP8266_AP模式
OS_Timer_1_Init_JX(30000,0); // 30秒定时(一次)
}OS_Timer_1_Init_JX(30000,0); // 30秒定时(一次)
定时30s是为了给网络调试助手创建udp通信,并且为设置服务器预留时间
在定时回调函数当中,查询AP模式下ESP8266的IP地址,成功获取到IP地址,则关闭定时器,初始化网络连接(UDP通信)
void ICACHE_FLASH_ATTR OS_Timer_1_cb(void)
{
struct ip_info ST_ESP8266_IP; // IP信息结构体
u8 ESP8266_IP[4]; // 点分十进制形式保存IP
wifi_get_ip_info(SOFTAP_IF,&ST_ESP8266_IP); // 查询AP模式下ESP8266的IP地址
if(ST_ESP8266_IP.ip.addr != 0) // ESP8266成功获取到IP地址
{
ESP8266_IP[0] = ST_ESP8266_IP.ip.addr; // 点分十进制IP的第一个数 <==> addr低八位
ESP8266_IP[1] = ST_ESP8266_IP.ip.addr>>8; // 点分十进制IP的第二个数 <==> addr次低八位
ESP8266_IP[2] = ST_ESP8266_IP.ip.addr>>16; // 点分十进制IP的第三个数 <==> addr次高八位
ESP8266_IP[3] = ST_ESP8266_IP.ip.addr>>24; // 点分十进制IP的第四个数 <==> addr高八位
// 显示ESP8266的IP地址
//-----------------------------------------------------------------------------------------------
os_printf("ESP8266_IP = %d.%d.%d.%d\n",ESP8266_IP[0],ESP8266_IP[1],ESP8266_IP[2],ESP8266_IP[3]);
OLED_ShowIP(24,2,ESP8266_IP); // OLED显示ESP8266的IP地址
//-----------------------------------------------------------------------------------------------
os_timer_disarm(&OS_Timer_1); // 关闭定时器
ESP8266_NetCon_Init_JX(); // 初始化网络连接(UDP通信)
}
}此处需要设置目标IP/端口(ESP8266作为Client,需要预先知道Server的IP/端口)
// 初始化网络连接(UDP通信)
//=============================================================================================================
void ICACHE_FLASH_ATTR ESP8266_NetCon_Init_JX()
{
// 结构体赋值
//--------------------------------------------------------------------------
ST_NetCon.type = ESPCONN_UDP; // 设置通信协议为UDP
ST_NetCon.proto.udp = (esp_udp *)os_zalloc(sizeof(esp_udp)); // 开辟内存
// 此处需要设置目标IP/端口(ESP8266作为Client,需要预先知道Server的IP/端口)
//--------------------------------------------------------------------------
ST_NetCon.proto.udp->local_port = 8266 ; // 设置本地端口
ST_NetCon.proto.udp->remote_port = 8888; // 设置目标端口
ST_NetCon.proto.udp->remote_ip[0] = 192; // 设置目标IP地址
ST_NetCon.proto.udp->remote_ip[1] = 168;
ST_NetCon.proto.udp->remote_ip[2] = 4;
ST_NetCon.proto.udp->remote_ip[3] = 2;
//u8 remote_ip[4] = {192,168,4,2}; // 目标IP地址
//os_memcpy(ST_NetCon.proto.udp->remote_ip,remote_ip,4); // 拷贝内存
espconn_regist_sentcb(&ST_NetCon,ESP8266_WIFI_Send_Cb_JX); // 注册网络数据发送成功的回调函数
espconn_regist_recvcb(&ST_NetCon,ESP8266_WIFI_Recv_Cb_JX); // 注册网络数据接收成功的回调函数
espconn_create(&ST_NetCon); // 初始化UDP通信
espconn_send(&ST_NetCon,"Hello,I am ESP8266",os_strlen("Hello,I am ESP8266")); // 主动向Server发起通信
}也就是说当我们8266作为客户端的时候,需要预先赋值服务器的ip地址和端口号,才能主动的向服务器发送通信
边栏推荐
- VIS工作流 - PlantCV
- 快来:鼓励高校毕业生返乡创业就业,助力乡村振兴
- Play guest cloud with zerotier nanny level teaching to ensure learning waste
- Jenkins--基础--5.1--系统配置--插件管理
- Esp8266 connects to the IOT of Lexin cloud platform_ Demo
- Li Hongyi machine learning (2017 Edition)_ P13: deep learning
- 物联网平台介绍
- Unity 一个好用的UI灰度Shader
- 大四老学长的自我批评记录
- 6. 世界杯来了
猜你喜欢

随着5G越来越普及,我们的生活会受到哪些积极的影响

Li Hongyi machine learning (2017 Edition)_ P13: deep learning

c语言实现动态顺序表的增删查改

ks 怎么抓salt值?api,did?

VIS工作流 - PlantCV

Li Hongyi machine learning (2017 Edition)_ P3-4: Regression

Li Hongyi machine learning (2021 Edition)_ P5-6: small gradient processing

ESP8266-----SNTP获取网络时间

ESP8266 STA_Mode

Unity 使用NavMesh实现简易的摇杆功能
随机推荐
Play guest cloud brush machine 5.9
PlantCV中文文档
Come and help you understand the Internet of things in three minutes
Li Hongyi machine learning (2017 Edition)_ P14: back propagation
Naive Bayes Multiclass训练模型
4. 欧洲冠军联赛
数据库期中(一)
Database interim (I)
Keil开发环境的搭建送安装包
The setup of KEIL development environment is delivered to the installation package
Scoring system based on 485 bus
Li Hongyi machine learning (2017 Edition)_ P6-8: gradient descent
玩客云搭配zerotier保姆级教学,保证学废
Basic syntax of Verilog
Six ways for the Internet of things to improve our lives
ESP8266 STA_Server
非递归前中后序遍历二叉树
2. Wrong odometer
05 - attack and defense of phishing websites
Unity a user-friendly UI grayscale shader