Arduino中以太网Udp通信

news/2024/5/18 13:38:27 标签: udp, 网络, Arduino, 单片机

目录

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.");
    }  

    // 启动UDP
    Udp.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.niftyadmin.cn/n/5258950.html

相关文章

美易官方:投资美股证券投资组合的优势及快速上手指南

投资美股证券投资组合的优势及快速上手指南 美股证券投资组合的优势 美国股市一直以来都是全球投资者的热门选择之一。与其他市场相比&#xff0c;美国股市具有诸多优势&#xff0c;如市场规模大、流动性好、信息透明度高等。投资者在美国股市中&#xff0c;可以选择各种不同类…

网络安全(黑客)—0基础自学手册

1.网络安全是什么 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 2.网络安全市场 一、是市场需求量高&#xff1b; 二、则是发展相对成熟…

SpringBoot-Swagger3

SpringBoot——2.7.3版本整合Swagger3-CSDN博客文章浏览阅读5.4k次&#xff0c;点赞6次&#xff0c;收藏17次。Swagger2&#xff08;基于openApi3&#xff09;已经在17年停止维护了&#xff0c;取而代之的是 sagger3&#xff08;基于openApi3&#xff09;&#xff0c;而国内几乎…

redis 三主三从高可用集群docker swarm

由于数据量过大&#xff0c;单个Master复制集难以承担&#xff0c;因此需要对多个复制集进行集群&#xff0c;形成水平扩展每个复制集只负责存储整个数据集的一部分&#xff0c;这就是Redis的集群&#xff0c;其作用是提供在多个Redis节点间共享数据的程序集。 官网介绍地址 re…

怎么去评估数据资产?一个典型的政务数据资产评估案例

据中国资产评估协会《数据资产评估指导意见》&#xff0c;数据资产评估主要是三个方法&#xff1a;市场法、成本法和收益法。之前小亿和大家分享了数据资产评估方法以及价值发挥的路径&#xff0c;今天结合一个案例来具体讲解一下怎么去评估数据资产。 这个案例是一个典型的一个…

react Hooks之useMemo、useCallback

一、useMemo 1、作用&#xff1a; 用于对值的计算进行缓存&#xff0c;以避免重复计算。它可以帮助优化性能&#xff0c;特别是在处理昂贵的计算操作时非常有用。如何可以对比的话&#xff0c;我猜应该和vue中的计算属性差不多吧。 2、用法&#xff1a; 在使用 useMemo 时&…

数据分享 I 全国市级商品房屋销售数据,shp/excel格式,2005-2020年数据

基本信息. 数据名称: 全国市级商品房屋销售数据 数据格式: Shp、excel 数据时间: 2005-2020年 数据几何类型: 面 数据坐标系: WGS84坐标系 数据来源&#xff1a;网络公开数据 数据字段&#xff1a; 序号字段名称字段说明1spxse商品房销售额&#xff08;亿元&#xf…

免费且好用的 MySQL 客户端

DBeaver 支持 Mac、Windows、Linux&#xff0c;提供 Eclipse 插件。社区版免费&#xff0c;支持主流的关系型数据库 官网地址&#xff1a;DBeaver Community | Free Universal Database Tool MySQL WorkBench MySQL WorkBench 是官方出品的客户端&#xff0c;支持 Mac、Windo…