Arduino中以太网Udp通信

目录

1、测试硬件

2、程序

(0)头文件添加

(1)变量定义

(2)初始化程序

(3)循环执行程序

3、程序下载

(1)开发板控制器和端口号选择

(2)程序编译和下载

4、测试

(1)打开测试软件

(2)网络测试助手给单片机Udp发送字符串

5、程序和测试软件下载连接


1、测试硬件

Arduino开发板,Mega系列。

W5500网口模块

2、程序

(0)头文件添加

#include <Ethernet.h>
#include <EthernetUdp.h>

(1)变量定义

EthernetUDP Udp;
char packetBuffer[UDP_TX_PACKET_MAX_SIZE];  // 用于保存读取的Udp数据包的缓冲区
char ReplyBuffer[] = "Received,Over";        // 本机Udp给发送信息的Udp发送字符串//定义单片机本地Mac、IP地址和端口号
byte localMac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
IPAddress localIp(192, 168, 1, 177);
unsigned int localPort = 9999;

(2)初始化程序

// 初始化程序,执行一次
void setup() 
{    Ethernet.begin(localMac, localIp);// 打开串口Serial.begin(9600);while (!Serial) {; //等待串口连接。仅本机USB口使用。}// 检查以太网硬件情况if (Ethernet.hardwareStatus() == EthernetNoHardware)  //检查W5500模块是否存在{Serial.println("Ethernet shield was not found.  Sorry, can't run without hardware. :(");while (true) {delay(1); // do nothing, no point running without Ethernet hardware}}    if (Ethernet.linkStatus() == LinkOFF)                 //检查网口是否连接{Serial.println("Ethernet cable is not connected.");}  // 启动UDPUdp.begin(localPort);}

(3)循环执行程序

//循环运行程序
void loop() 
{int packetSize = Udp.parsePacket();   //Udp接收到的数据长度if(packetSize>0){Serial.print("Received packet of size ");       Serial.println(packetSize);                     //串口打印,Udp接收到的数据长度Serial.print("From ");IPAddress remote = Udp.remoteIP();              //串口打印,发送消息Udp的ip地址、端口号for (int i=0; i < 4; i++)                       //ip地址{Serial.print(remote[i], DEC);if (i < 3) {Serial.print(".");}}Serial.print(", port ");      Serial.println(Udp.remotePort());               //端口号// 将Udp接收到的消息,通过串口打印出来Udp.read(packetBuffer, UDP_TX_PACKET_MAX_SIZE); //Udp接收到的字符串消息Serial.println("Contents:");Serial.println(packetBuffer);//本机给发送消息的Udp机器发送消息Udp.beginPacket(Udp.remoteIP(), Udp.remotePort());Udp.write(ReplyBuffer);Udp.endPacket();       }delay(10);  
}

3、程序下载

(1)开发板控制器和端口号选择

(2)程序编译和下载

4、测试

使用串口和网络调试助手软件测试。

(1)打开测试软件

创建计算机本地Udp,测试软件串口连接单片机

(2)网络测试助手给单片机Udp发送字符串

根据单片机中设置的ip地址和端口号,进行udp发送测试。

5、程序和测试软件下载连接

https://download.csdn.net/download/panjinliang066333/88622368

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/225988.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pycharm某个xxx.sh文件显示问号,无法编辑

文章目录 pycharm某个xxx.sh文件显示问号,无法编辑其他参考 pycharm某个xxx.sh文件显示问号,无法编辑 问题描述&#xff1a;pycharm某个xxx.sh文件显示问号,无法编辑 问题分析&#xff1a; pycharm无法识别文件类型。 问题解决&#xff1a; 在pycharm中选中该文件&#xff0…

BugKu-Web-滑稽

题目环境 持续的动态图片 F12审查元素 拿下flag&#xff1a;flag{595d994a34342417bfc3a3c3a23e0a48}

synchronized关键字的使用和原理

synchronized关键字的使用和原理 synchronized&#xff1a;对象锁&#xff0c;保证了临界区内代码的原子性&#xff0c;采用互斥的方式让同一时刻至多只有一个线程能持有对象锁&#xff0c;其它线程获取这个对象锁时会阻塞&#xff0c;保证拥有锁的线程可以安全的执行临界区内…

【Android】MVC与MVP的区别,MVP网络请求实践

一、MVC模式 目录 一、MVC模式二、MVP模式 1、MVP的简单应用 1.1 导入相关依赖包并设置权限1.2 实现Model1.2 实现Presenter1.3 实现View1.4分析项目结构和绑定过程1.5效果展示 2、MVP结合RxJava 一、MVC模式 MVC&#xff08;Model(模型)——View(视图)——Controller(控制…

设计模式-状态(State)模式

目录 开发过程中的一些场景 状态模式的简单介绍 状态模式UML类图 类图讲解 适用场景 Java中的例子 案例讲解 什么是状态机 如何实现状态机 SpringBoot状态自动机 优点 缺点 与其他模式的区别 小结 开发过程中的一些场景 我们在平时的开发过程中&#xff0c;经常会…

【Android】在Android上使用mlKit构建人脸检测程序

在Android上构建人脸检测程序 目录 1、导入mlKit依赖包2、配置人脸检测器并且获取人脸检测器3、加载图片资源4、调用人脸检测器5、绘制矩形边框6、完整代码7、效果展示 1、导入mlKit依赖包 dependencies {// ...// Use this dependency to bundle the model with your appi…

清除某条会话的未读消息用engine.clearUnreadCount清除成功 code 是0 的情况下,重新拉取会话,还是未被清除的状态

确认调用清除未读数是否有传入时间戳 确认时间戳是否为 0 &#xff0c;传入时间不可为 0 确认清除时间是否大于最新时间&#xff0c; 不可传入大于当前时间的时间戳 确认传入的时间是否大于要被清除的时间的 senttime 确认传入的时间是否是毫秒单位 如果需要传入最新时间可以获…

SQL连续

SQL连续 1、连续概述2、SQL连续及应用2.1、静态连续2.2、动态连续1、连续概述 连续问题是实际数据开发中比较常见的场景。例如,统计用户连续活跃天数等 SQL如何解决连续问题?本文主要介绍连续性问题,重点以常见的连续活跃场景为例,抽象出通用的连续问题解决方案。连续问题…

CSS盒子的浮动与网页布局(重点,有电影页面案例)

浮动适用于那种盒子的并列布局 CSS 提供了三种传统布局方式(简单说,就是盒子如何进行排列顺序)&#xff1a;  普通流&#xff08;标准流&#xff09;  浮动  定位 标准流&#xff08;普通流/文档流&#xff09; 所谓的标准流: 就是标签按照规定好默认方式排列. 1. 块级…

带下雪背景的登陆注册页面

创建带有下雪背景的登录注册页面涉及HTML、CSS和JavaScript。以下是一个简单的示例&#xff0c;其中使用了HTML和CSS来设置基本的登录和注册表单&#xff0c;并使用JavaScript来创建下雪的效果。请注意&#xff0c;此示例中的雪花效果是通过CSS和JavaScript组合实现的。 HTML&…

abap 如何debug 更新进程

今天在测试环境做一个外向交货单过账的时候&#xff0c;每次都会dump ST22中看到报错如下&#xff1a;DBSQL_DUPLICATE_KEY_ERROR 接着我就去SM13去看下在哪个跟新里面失败了 双击错误条目可以看到 那么我就想说去debug看看当时的变量到底是啥&#xff0c;为啥会主键重复&…

数据库的三大范式

第一范式&#xff1a; 属性不可分割&#xff1a;每个属性都是不可分割的原子项&#xff08;实体的属性就是表中的列&#xff09; 在上表中contact应该分为phone和adress两列 第二范式&#xff1a; 在满足第一范式的情况下&#xff0c;表中不存在部分依赖&#xff0c;非主键列…

2.91【random模块】

random模块 模块导入 import random基本用法 【1】random.random()生成随机浮点数 a random.random() print(a) # 0.07785349807479613【2】uniform(a,b)用于返回a,b之间的随机浮点数 a random.uniform(10, 51) print(a) # 25.71555099886598【3】randint()返回a,b之间的…

压缩包文件暴力破解 -Server2005(解析)

任务五十一: 压缩包文件暴力破解 任务环境说明:Server2005 1. 通过本地PC中渗透测试平台Kali使用Nmap扫描目标靶机服务版本信息,将 Telnet 版本信息字符串 作为 Flag 提交; flag:Microsoft Windows XP telnetd 2. 通过本地PC中渗透测试平台Kali对服务器场景Windows进行渗透测…

云演CTF Blog

1、啥也搞不了&#xff0c;扫目录。出来个console 2、有显示锁掉了 3、抓包&#xff0c;改返回包 改成true&#xff0c;放包 不好意思&#xff0c;不会了&#xff0c;哈哈哈哈哈哈哈哈哈 你会的话&#xff0c;请告诉我&#xff0c;大佬

C++:命名空间

从今天正式开始对C的学习&#xff0c;这里只学习C对C的拓展&#xff0c;和C相同的部分在C语言专栏中都可以找到&#xff0c;我们先看一段C代码 #include<iostream> using namespace std; int main() {cout<<"hello world<<endl;return 0; } 同样也是打…

数学公式推导中 “:=“和“:=“的区别

A:B 将A定义为&#xff08;记为&#xff0c;令为&#xff09;B A:B 将B定义为&#xff08;记为&#xff0c;令为&#xff09;A

redis的hash实现

hash实现 redis的hash数据结构和java的HashMap虽然不同&#xff0c;但是有异曲同工之妙&#xff0c;value是键值对&#xff0c;相当于HashMap&#xff0c;对于hash碰撞也是采用的类似于HashMap的处理方式&#xff0c;数组链表&#xff0c;更适合存储对象&#xff0c;将一个对象…

YOLOv8-Seg改进:轻量化卷积设计 | DualConv双卷积魔改v8结构

🚀🚀🚀本文改进: DualConv双卷积魔改v8结构,达到轻量化的同时并能够实现小幅涨点 🚀🚀🚀YOLOv8-seg创新专栏:http://t.csdnimg.cn/KLSdv 学姐带你学习YOLOv8,从入门到创新,轻轻松松搞定科研; 1)手把手教你如何训练YOLOv8-seg; 2)模型创新,提升分割性能…

​【EI会议征稿中】#先投稿,先送审#第三届网络安全、人工智能与数字经济国际学术会议(CSAIDE 2024)​

#先投稿&#xff0c;先送审# 第三届网络安全、人工智能与数字经济国际学术会议&#xff08;CSAIDE 2024&#xff09; 2024 3rd International Conference on Cyber Security, Artificial Intelligence and Digital Economy 2024年3月1日-3日 | 中国南京 会议官网&#xff1a…