#include "driver/uart.h"
#include "espconn.h" void ICACHE_FLASH_ATTR
user_rf_pre_init(void){} struct espconn user_udp_espconn; ETSTimer connect_timer;
ETSTimer test_timer; //udp发送函数
void ICACHE_FLASH_ATTR user_udp_send(void *data)
{
char yladdr[6] = {0};
char DeviceBuffer[40] = {0};//将获取的MAC地址格式化输出到一个buffer里面 os_printf("正在发送...\r\n"); wifi_get_macaddr(STATION_IF, yladdr);//查询MAC地址
os_sprintf(DeviceBuffer,"设备地址为:"MACSTR"\r\n", MAC2STR(yladdr));//格式化MAC地址
espconn_sent(&user_udp_espconn, DeviceBuffer, os_strlen(DeviceBuffer));
} //udp发送回调
void ICACHE_FLASH_ATTR user_udp_sent_cb(void *arg)
{
os_timer_disarm(&test_timer);
os_timer_setfn(&test_timer, user_udp_send, NULL);
os_timer_arm(&test_timer, 1000, 0);//1秒钟发送一次
} //udp接收回调
void ICACHE_FLASH_ATTR user_udp_recv_cb(void *arg,
char *pdata,
unsigned short len)
{
os_printf("UDP已经接收数据:%s", pdata);
} //创建UDP连接
void ICACHE_FLASH_ATTR wifi_conned(void *arg)
{
uint8 status = 0;
static uint8 count = 0; count++;
os_timer_disarm(&connect_timer); status = wifi_station_get_connect_status();
if(status == STATION_GOT_IP)
{
wifi_set_broadcast_if(STATIONAP_MODE); //设置UDP广播的发送接口
user_udp_espconn.type = ESPCONN_UDP;
user_udp_espconn.proto.udp = (esp_udp*)os_zalloc(sizeof(esp_udp));
user_udp_espconn.proto.udp->local_port = 2525;
user_udp_espconn.proto.udp->remote_port = 1112; const char udp_remote_ip[] = {255,255,255,255}; //用于存放远程IP地址
os_memcpy(&user_udp_espconn.proto.udp->remote_ip, udp_remote_ip, sizeof(udp_remote_ip)); espconn_regist_recvcb(&user_udp_espconn, user_udp_recv_cb); //接收回调函数
espconn_regist_sentcb(&user_udp_espconn, user_udp_sent_cb); //发送回调函数
espconn_create(&user_udp_espconn); //创建UDP连接
user_udp_send(NULL); return;
}
else
{
if(count >= 7)
{
os_printf("wifi连接失败!");
return;
}
} os_timer_arm(&connect_timer, 2000, 0);
} //加入当前可用wiff
void ICACHE_FLASH_ATTR scan_done(void *arg, STATUS status)
{
char ssid[] = "Feixun_1003";
char password[] = "12345678";
struct station_config stationConf = {0}; if (status == OK)
{
os_memcpy(&stationConf.ssid, ssid, os_strlen(ssid)); //加入当前可用wiff
os_memcpy(&stationConf.password, password, os_strlen(password)); //密码
wifi_station_set_config_current(&stationConf);
wifi_station_connect();
os_timer_setfn(&connect_timer, wifi_conned, NULL);
os_timer_arm(&connect_timer, 2000, 0);
}
} void to_scan(void)
{
wifi_station_scan(NULL, scan_done); return;
} //配置ESP8266
void user_init()
{
struct softap_config config = {0};
char ssid[] = "ESP8266";
char password[] = "12345678"; uart_init(BIT_RATE_115200, BIT_RATE_115200);
os_delay_us(60000); wifi_set_opmode(STATIONAP_MODE); wifi_softap_get_config(&config); config.ssid_len = os_strlen(ssid);
os_memset(config.ssid, 0, sizeof(config.ssid));
os_memcpy(config.ssid, ssid, config.ssid_len);
os_memset(config.password, 0, sizeof(config.password));
os_memcpy(config.password, password, os_strlen(password)); wifi_softap_set_config(&config); system_init_done_cb(to_scan); return;
}



ESP8266 UDP通信的更多相关文章

  1. 高性能 TCP & UDP 通信框架 HP-Socket v3.5.3

    HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Del ...

  2. 高性能 TCP & UDP 通信框架 HP-Socket v3.5.2

    HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Del ...

  3. 高性能 TCP & UDP 通信框架 HP-Socket v3.5.1

    HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Del ...

  4. 高性能 TCP & UDP 通信框架 HP-Socket v3.4.1

    HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Del ...

  5. 高性能 TCP & UDP 通信框架 HP-Socket v3.3.1

    HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Del ...

  6. HP-SOCKET TCP/UDP通信框架库解析

    项目概述: HP-SOCKET是一套通用TCP/UDP通信框架,包括服务器.客户端.Agent组件:其目标是提供高性能.通用性.简易性.可扩展.可定制: 鉴于此,其仅实现基本的通用框架通信.数据收发功 ...

  7. .Net开发笔记(十四) 基于“泵”的UDP通信(接上篇)

    上一篇中说到了“泵”在编程中的作用以及一些具体用处,但没有实际demo,可能不好理解,这篇文章我分享一个UDP通信的demo,大概实现了类似“飞鸽传书”在局域网中文本消息和文件传输的功能.功能不全也不 ...

  8. 高性能 TCP & UDP 通信框架 HP-Socket v3.2.3

    HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Del ...

  9. 高性能 TCP & UDP 通信框架 HP-Socket v3.2.2 正式发布

    HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Del ...

随机推荐

  1. TensorFlow Object Detection API —— 制作自己的模型

    https://blog.csdn.net/qq_24474463/article/details/81530900 (t20190518) luo@luo-All-Series:~/MyFile/T ...

  2. jpa基于按annotation的hibernate主键生成策略

    JPA注解持久化类很方便,需要jar包:ejb3-persistence.jar下载 一.JPA通用策略生成器 通过annotation来映射hibernate实体的,基于annotation的hib ...

  3. sequelize 字段无法操作

    sequelize 操作的字段都必须先  define ,不然无法操作

  4. [Python]编译错误:编码错误问题(SyntaxError: (unicode error) )

    1 错误信息 python文件 1 #coding:utf-8 2 3 class Clz: 4 def func(filePath): 5 """ 6 func 7 - ...

  5. jmeter解决乱码

    在jmeter.properties 这个文件里面 找到sampleresult.default.encoding=xx 后面xx改成utf-8,然后取消注释 解决jmeterbody里面中文显示不出 ...

  6. css解决fixed布局不会出现滚动条问题

    需求是页面移动到一定高度时,顶部出现固定的导航栏,并导航栏带滚动条. CSS很好实现,但是导航栏飘浮顶部后,滚动条怎么也不显示,搜了一些资料终于解决了,现做下笔记. <div class=&qu ...

  7. JavaScript中new运算符的实现

    废话不多说直接进入正题,首先我们需要先知道new运算符到底做了哪些事情,再来模拟它实现这一功能. 1. 建立一个空的Object对象: 2. 把这个空对象用__proto__链接到原型 3. 用app ...

  8. LIBS+=(20191017)

    1.方式一:(ZC:"LIBPATH"中写路径,"LIBS"中写lib文件名[不带后缀]) LIBPATH += F:/ZC_IDE/VC_3rd/libxml ...

  9. 自学电脑游戏第三天(Swing组件)

    Swing组件 1.按钮(Jbutton) 示例:选择用户所喜欢的城市. import java.awt.*; import java.awt.event.*; import javax.swing. ...

  10. 《剑指offer》查找二维数组内元素 c++

    在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序. 请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. cl ...