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 ...
随机推荐
- wm_concat()函数
转: Oracle wm_concat()函数 oracle wm_concat(column)函数使我们经常会使用到的,下面就教您如何使用oraclewm_concat(column)函数实现字段合 ...
- [ML] Linear Discriminant Analysis
虽然名字里有discriminat这个字,但却是生成模型,有点意思. 判别式 pk 生成式 阅读:生成方法 vs 判别方法 + 生成模型 vs 判别模型 举例: 判别式模型举例:要确定一个羊是山羊还是 ...
- 总是访问到tomcat首页解决
部署代码后总是访问到tomcat首页解决 没有把路径写全 访问:养成带上绝对路径的习惯,否则总是访问到tomcat的首页 http://114.116.65.232:8085/ssoserver/
- antd二级联动异步加载
/** * Created by Admin on 2016/9/19. * 批量导入 */ import React, {Component, PropTypes} from "react ...
- 【ABAP系列】SAP ABAP替代校验全解析
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP替代校验全解析 ...
- flask蓝图blueprint是什么
蓝图 blueprint 简单的说,就是帮助我们对flask程序进行目录结构的划分:django项目创建时,是自动生成项目目录,而在flask这里,需要我们自己来规划,这就需要blueprint来将整 ...
- mybatis ibatis 使用时出现 语法错误
最近在使用mybatis的时候遇到一个问题,在执行数据库分页查询的时候报语法错误,但是检查sql之后并没有发现语法错误.在反复查询各种资料后(百度搜索‘mybatis分页’),最后发现是sql语句参数 ...
- 删除kubernetes-dashboard
kubectl get secret,sa,role,rolebinding,services,deployments --namespace=kube-system | grep dashboard ...
- Arduino基础入门篇-进入Arduino的世界
写在前面,首先是发现有网友对Arduino做了介绍,而且介绍比较清晰到位,就引用过来了. 文章出处:https://blog.csdn.net/TonyIOT/article/details/8091 ...
- spring中的ApplicationListener监听器
监听器在使用过程中可以监听到某一事件的发生,进而对事件做出相应的处理. 首先自定义一个监听器myListener实现ApplicationListener接口 @Repository public c ...