ESP8266 UDP通信
#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通信的更多相关文章
- 高性能 TCP & UDP 通信框架 HP-Socket v3.5.3
HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Del ...
- 高性能 TCP & UDP 通信框架 HP-Socket v3.5.2
HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Del ...
- 高性能 TCP & UDP 通信框架 HP-Socket v3.5.1
HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Del ...
- 高性能 TCP & UDP 通信框架 HP-Socket v3.4.1
HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Del ...
- 高性能 TCP & UDP 通信框架 HP-Socket v3.3.1
HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Del ...
- HP-SOCKET TCP/UDP通信框架库解析
项目概述: HP-SOCKET是一套通用TCP/UDP通信框架,包括服务器.客户端.Agent组件:其目标是提供高性能.通用性.简易性.可扩展.可定制: 鉴于此,其仅实现基本的通用框架通信.数据收发功 ...
- .Net开发笔记(十四) 基于“泵”的UDP通信(接上篇)
上一篇中说到了“泵”在编程中的作用以及一些具体用处,但没有实际demo,可能不好理解,这篇文章我分享一个UDP通信的demo,大概实现了类似“飞鸽传书”在局域网中文本消息和文件传输的功能.功能不全也不 ...
- 高性能 TCP & UDP 通信框架 HP-Socket v3.2.3
HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Del ...
- 高性能 TCP & UDP 通信框架 HP-Socket v3.2.2 正式发布
HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Del ...
随机推荐
- 关于在Vue中,只要单个列表显示模态框的做法。
1.在后台返回的数组对象中,添加一个自定义属性,这个属性用于控制模态框的显示.2.在事件中传入该列表的索引参数,然后在事件方法中找到数组相对应的下标,更改自定义属性便可
- ASP.NET MVC 3 Razor 多国语言参考解决方案
http://www.cnblogs.com/think8848/archive/2011/03/20/1989376.html
- Qt编写自定义控件20-自定义饼图
前言 上次在写可视化数据大屏电子看板项目的时候,为了逐步移除对QChart的依赖(主要是因为QChart真的太垃圾了,是所有Qt的模块中源码最烂的一个,看过源码的人没有一个不吐槽,不仅不支持10W级别 ...
- MIGO 收货
ls_code-gm_code = '01'. 01 - MB01 - Goods Receipts for Purchase Order 02 - MB31 - Goods Receipts for ...
- Java中get()方法和set()方法如何使用?
在java中,为了保证数据的安全性,我们会把数据定义为private等(私有.封装),如果想要调用就会用到set()方法与get方法或者构造函数方法.这里说的是第一种方法,set()与get(),既然 ...
- 01.04 linux命令(2
======================Linux下的用户管理==============用户信息保存/etc/passwd ,一般用户都有读的权限真正的用户:修改密码,可以登录伪用户:应用程序在 ...
- go语言简单介绍,增强了解
1. Go语言没有类和继承的概念,所以它和 Java 或 C++ 看起来并不相同.但是它通过接口(interface)的概念来实现多态性.Go语言有一个清晰易懂的轻量级类型系统,在类型之间也没有层级之 ...
- elasticsearch 映射 dynamic用法
- C语言I博客作业12—学期总结
一.我学到的内容 二.我的收获(包括我完成的所有作业的链接+收获)不能只有作业链接,没有收获 作业次数 作业链接 第一次 C语言I博客作业01 第二次 C语言I博客作业02 第三次 C语言I博客作业0 ...
- HDFS 读/写数据流程
1. HDFS 写数据流程 客户端通过 Distributed FileSystem 模块向 NameNode 请求上传文件, NameNode 检查目标文件是否已存在,父目录是否存在: NameNo ...