/**********************************************************************
项目名称/Project : 零基础入门学用物联网
程序名称/Program name : ESP8266WiFiUdp_10
团队/Team : 太极创客团队 / Taichi-Maker (www.taichi-maker.com)
作者/Author : 小凯
日期/Date(YYYYMMDD) : 20200319
程序目的/Purpose :
用于演示ESP8266WiFiUdp库中parseInt函数
-----------------------------------------------------------------------
本示例程序为太极创客团队制作的《零基础入门学用物联网》中示例程序。
该教程为对物联网开发感兴趣的朋友所设计和制作。如需了解更多该教程的信息,请参考以下网页:
http://www.taichi-maker.com/homepage/esp8266-nodemcu-iot/iot-c/esp8266-nodemcu-web-client/http-request/
***********************************************************************/
#include <ESP8266WiFi.h>
#include <WiFiUdp.h>
#define ssid "TaichiMaker_WIFI" //这里改成你的设备当前环境下WIFI名字
#define password "xxxxxxx" //这里改成你的设备当前环境下WIFI密码
WiFiUDP Udp;//实例化WiFiUDP对象
unsigned int localUdpPort = 1234; // 自定义本地监听端口
unsigned int remoteUdpPort = 4321; // 自定义远程监听端口
char replyPacket[] = "Hi, this is esp8266\n"; //发送的消息,仅支持英文
void setup()
{
Serial.begin(115200);//打开串口
Serial.println();
Serial.printf("正在连接 %s ", ssid);
WiFi.begin(ssid, password);//连接到wifi
while (WiFi.status() != WL_CONNECTED)//等待连接
{
delay(500);
Serial.print(".");
}
Serial.println("连接成功");
if(Udp.begin(localUdpPort)){//启动Udp监听服务
Serial.println("监听成功");
//打印本地的ip地址,在UDP工具中会使用到
//WiFi.localIP().toString().c_str()用于将获取的本地IP地址转化为字符串
Serial.printf("现在收听IP:%s, UDP端口:%d\n", WiFi.localIP().toString().c_str(), localUdpPort);
}else{
Serial.println("监听失败");
}
}
void loop()
{
//解析Udp数据包
int packetSize = Udp.parsePacket();//获得解析包
if (packetSize)//解析包不为空
{
//收到Udp数据包
//Udp.remoteIP().toString().c_str()用于将获取的远端IP地址转化为字符串
Serial.printf("收到来自远程IP:%s(远程端口:%d)的数据包字节数:%d\n", Udp.remoteIP().toString().c_str(), Udp.remotePort(), packetSize);
// 解析UDP数据包中的整数
int udpIntVal = Udp.parseInt();
// 然后向串口打印UDP数据包中的整数
Serial.print("开发板接收到UDP数据中的整数数值"); Serial.println(udpIntVal);
//向udp工具发送消息
Udp.beginPacket(Udp.remoteIP(), remoteUdpPort);//配置远端ip地址和端口
Udp.write(replyPacket);//把数据写入发送缓冲区
Udp.endPacket();//发送数据
}
}