当前位置: 首页 > news >正文

W5500-EVB-PICO主动PING主机IP检测连通性(十)

前言

        上一章我们用W5500_EVB_PICO 开发板做UDP组播数据回环测试,那么本章我们进行W5500_EVB_PICO Ping的测试。

什么是PING?

        Ping (Packet Internet Groper)是一种因特网包探索器,用于测试网络连接量的程序  。Ping是工作在 TCP/IP网络体系结构中应用层的一个服务命令, 主要是向特定的目的主机发送 ICMP(Internet Control Message Protocol 因特网报文控制协议)Echo 请求报文,测试目的站是否可达及了解其有关状态。

连接方式

使开发板和我们的电脑处于同一网段:

  • 开发板(设备)通过交叉线直连主机(PC)
  • 开发板和主机都接在路由器LAN口

测试工具

  • 串口调试工具(任意)

测试

1.相关代码

我们打开例程中库文件的w5500_ping.c文件我们先找到ping.c头文件下面看下,可以看到几个函数,我们需要用到如下所示几个函数:Ping_auto要我们传入一个socket端口号和需要Ping的对象IP信息;函数里面用一个Switch状态机,对socket端口状态轮询并进行相应的处理,当状态在SOCK_IPRAW,就开始Ping的工作,成功则返回Ping的信息,Ping失败则打印失败的信息

void ping_auto(uint8_t s, uint8_t *addr)
{uint8_t i;int32_t len = 0;uint8_t cnt=0;for(i = 0; i<=3;i++)                                                                        {sleep_ms(10); switch(getSn_SR(s))                                                                     {case SOCK_CLOSED:                                                                       close(s);IINCHIP_WRITE(Sn_PROTO(s), IPPROTO_ICMP);           if(socket(s,Sn_MR_IPRAW,3000,0)!=0)                                 { }while(getSn_SR(s)!=SOCK_IPRAW);sleep_ms(1000);                                                                         sleep_ms(1000);                                                                         break;case SOCK_IPRAW:                                                                        ping_request(s, addr);                                                          req++;while(1){if ( (len = getSn_RX_RSR(s) ) > 0){ping_reply(s, addr, len);                                               sleep_ms(50);                                                                   rep++;break;}else if(cnt > 200){printf( "Request Time out. \r\n");cnt = 0;break;}else{cnt++;sleep_ms(50);                                                                   /*wait 50ms*/}// wait_time for 2 seconds, Break on fail}break;default:break;}#ifdef PING_DEBUGif(rep!=0){printf("Ping Request = %d, PING_Reply = %d\r\n",req,rep);if(rep == req)printf( "PING SUCCESS\r\n " );elseprintf( "REPLY_ERROR\r\n " );}   else{}      #endif  }}

主函数还是和之前一样,先配置好网络信息,然后配置好所要Ping的IP,添加do_ping()函数来执行Ping_auto函数,并将do_ping放在while循环中运行。

#define SOCKET_ID 0
#define ETHERNET_BUF_MAX_SIZE (1024 * 2)void do_ping(void);
void network_init(void);
wiz_NetInfo net_info = {.mac = {0x00, 0x08, 0xdc, 0x16, 0xed, 0x2e},.ip = {192, 168, 1, 10},.sn = {255, 255, 255, 0},.gw = {192, 168, 1, 1},.dns = {8, 8, 8, 8},.dhcp = NETINFO_STATIC};
wiz_NetInfo get_info;
static uint8_t ethernet_buf[ETHERNET_BUF_MAX_SIZE] = {0,};
static uint8_t destip[4]={192, 168, 1, 1};
static uint16_t destport = 8080;
static uint16_t local_port =8000;
int main()                                                          
{   stdio_init_all();sleep_ms(2000);network_init();while(true){// loopback_udpc(SOCKET_ID, ethernet_buf, destip, destport);do_ping();if(req>=4){close(0);                                   break;}        }}void network_init(void)
{uint8_t temp;wizchip_initialize();printf("W5500 ping test.\r\n");sleep_ms(2000);wizchip_setnetinfo(&net_info);print_network_information(get_info);sleep_ms(2000);   
}
void do_ping(void)
{    printf("------------PING_TEST_START-----------------------\r\n");sleep_ms(1000); // wait 1000msping_auto(0,destip);
}

2.烧录现象

我们编译烧录后,打开串行监视器,按下复位键,会打印网络配置信息和所要Ping的ip当Ping成功后串口会打印Ping的信息,出现PING SUCCESS 表示Ping成功。

相关连接:

本章例程链接

相关文章:

W5500-EVB-PICO主动PING主机IP检测连通性(十)

前言 上一章我们用W5500_EVB_PICO 开发板做UDP组播数据回环测试&#xff0c;那么本章我们进行W5500_EVB_PICO Ping的测试。 什么是PING&#xff1f; Ping &#xff08;Packet Internet Groper&#xff09;是一种因特网包探索器&#xff0c;用于测试网络连接量的程序 。Ping是…...

解释基本的3D理论

推荐&#xff1a;使用 NSDT场景编辑器 快速搭建3D应用场景 坐标系 3D 本质上是关于 3D 空间中形状的表示&#xff0c;并使用坐标系来计算它们的位置。 WebGL 使用右侧坐标系 — 轴指向右侧&#xff0c;轴指向上方&#xff0c;轴指向屏幕外&#xff0c;如上图所示。xyz 对象 …...

C# 练习题

26. Enum(枚举) /*枚举是一组命名整型常量。枚举类型是使用 enum 关键字声明的。C# 枚举是值类型。换句话说&#xff0c;枚举包含自己的值&#xff0c;且不能继承或传递继承。 */using System;public class EnumTest {enum Day { Sun, Mon, Tue, Wed, Thu, Fri, Sat };static…...

解决Linux报错:Swap file “xxxxxx.swp“ already exists

出现问题 Swap file “.models_conf.yaml.swp” already exists! 在 Linux 下 vim 编辑过程中&#xff0c;由于某种原因异常退出正在编辑的文件&#xff0c;再次编辑该文件时&#xff0c;会出现如下提示&#xff1a; 一个文件出现了带有.swp的副本文件的时候&#xff0c;会出现…...

基于飞桨图学习框架的空间异配性感知图神经网络

本期文章将为大家分享飞桨社区开发者肖淙曦、周景博发表于数据挖掘顶会KDD2023的论文《Spatial Heterophily Aware Graph Neural Networks》。 肖淙曦 肖淙曦&#xff0c;百度研究院商业智能实验室研究实习生&#xff0c;中国科学技术大学在读博士生&#xff0c;主要从事时空…...

Springboot整合JWT

1. 应用场景 前后端分离项目保持登录状态。 问题&#xff1a;ajax请求如何跨域&#xff0c;将无法携带jsessionid&#xff0c;这样会导致服务器端的session不可用。如何解决&#xff1f; 后端&#xff1a; 登录接口在验证过用户密码后&#xff0c;将用户的身份信息转换成…...

如何使用Python和正则表达式处理XML表单数据

在日常的Web开发中&#xff0c;处理表单数据是一个常见的任务。而XML是一种常用的数据格式&#xff0c;用于在不同的系统之间传递和存储数据。本文通过阐述一个技术问题并给出解答的方式&#xff0c;介绍如何使用Python和正则表达式处理XML表单数据。我们将探讨整体设计、编写思…...

LA@方阵相似@相似矩阵的性质

文章目录 相似矩阵引言相似矩阵定义相似变换相似变换矩阵相似矩阵的矩阵多项式和特征值相同推论:与对角阵相似的矩阵性质定理 相似矩阵性质相似矩阵的乘方性质相似矩阵和矩阵多项式相似对角阵 对角阵多项式的展开小结 相似矩阵 引言 对角阵是矩阵中最简单的一类矩阵 对角阵相…...

ZLMediaKit 各种推拉流

1 用ffmpeg 推音视频流 ./ffmpeg -f dshow -i video"HP Wide Vision HD Camera" -f dshow -i audio"麦克风阵列 (Realtek High Definition Audio)" -rtbufsize 100M -max_delay 100 -pix_fmt yuv420p -tune zerolatency -c:v libx264 -crf 18 -s 1280x720…...

行业追踪,2023-08-29

自动复盘 2023-08-29 凡所有相&#xff0c;皆是虚妄。若见诸相非相&#xff0c;即见如来。 k 线图是最好的老师&#xff0c;每天持续发布板块的rps排名&#xff0c;追踪板块&#xff0c;板块来开仓&#xff0c;板块去清仓&#xff0c;丢弃自以为是的想法&#xff0c;板块去留让…...

【简单】228. 汇总区间

原题链接&#xff1a;https://leetcode.cn/problems/summary-ranges/description/ 228. 汇总区间 给定一个 无重复元素 的 有序 整数数组 nums 。 返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表 。也就是说&#xff0c;nums 的每个元素都恰好被某个区间范围所覆盖&…...

Mysql高级语句

高级语句 1.按关键字排序 SELECT column1, column2, ... FROM table_name ORDER BY column1, column2, ... ASC|DESC ASC 是按照升序进行排序的&#xff0c;是默认的排序方式&#xff0c;即 ASC 可以省略。 SELECT 语句中如果没有指定具体的排序方式&#xff0c;则默认按 ASC…...

Python中 re.compile 函数的使用

前言 嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 以下介绍在python的re模块中怎样应用正则表达式 &#x1f447; &#x1f447; &#x1f447; 更多精彩机密、教程&#xff0c;尽在下方&#xff0c;赶紧点击了解吧~ python源码、视频教程、插件安装教程、资料我都准备…...

【分布式搜索引擎es】

文章目录 数据搜索DSL实现查询文档搜索结果处理 RestClient实现 elasticsearch最擅长的是 搜索和 数据分析。 数据搜索 DSL实现 查询文档 常见的查询类型包括&#xff1a; 查询所有&#xff1a;查询出所有数据&#xff0c;一般测试用。例如&#xff1a;match_all全文检索…...

单片机的ADC

如何理解ADC。ADC就是将模拟量转换成数字量的过程&#xff0c;就是转换为计算机所能存储的0和1序列&#xff0c;比如将模拟量转换为一个字节&#xff0c;所以这个字节的大小要能反应模拟量的大小&#xff0c;比如一个0-5V的电压测量量&#xff08;外部输入电压最小0V,最大为5V&…...

如何把pdf文件合并?分享最新pdf合并方法

在所有文档格式中&#xff0c;pdf应该是最常用的&#xff0c;像产品介绍、商务合同、法律文书等等&#xff0c;这些都是pdf格式的。有时候出于工作需要&#xff0c;我们要把两份或者多份pdf文件合并在一起&#xff0c;那么问题来了&#xff0c;如何把pdf文件合并呢?小编最近发…...

笙默考试管理系统-MyExamTest----codemirror(11)

笙默考试管理系统-MyExamTest----codemirror&#xff08;11&#xff09; 目录 笙默考试管理系统-MyExamTest----codemirror&#xff08;11&#xff09; 一、 笙默考试管理系统-MyExamTest----codemirror 二、 笙默考试管理系统-MyExamTest----codemirror 三、 笙默考试管…...

Spring MVC 五 - Spring MVC的配置和DispatcherServlet初始化过程

今天的内容是SpringMVC的初始化过程&#xff0c;其实也就是DispatcherServilet的初始化过程。 Special Bean Types DispatcherServlet委托如下一些特殊的bean来处理请求、并渲染正确的返回。这些特殊的bean是Spring MVC框架管理的bean、按照Spring框架的约定处理相关请求&…...

Ramp 有点意思的题目

粗一看都不知道这个要干什么&#xff0c;这 B 装得不错。 IyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwoKJycnCktlZXAgdXMgb3V0IG9mIGdvb2dsZSBzZWFyY2ggcmVzdWx0cy4uCgokIG9kIC1kIC9kZXYvdXJhbmRvbSB8IGhlYWQKMDAwMDAwMCAgICAgNjAyMTUgICAyODc3OCAgIDI5MjI3ICAgMjg1NDggICA2MjY4NiAgIDQ1MT…...

算法通关村14关 | 堆在数组中找第k大的元素应用

1. 在数组中找第k大元素 题目 LeetCode215&#xff1a;给定整数数组nums和整数k&#xff0c;请返回数组中第k个最大的元素&#xff0c; 思路 解题思路用三个&#xff0c;选择法&#xff0c;堆查找和快速排序。 我们选择用大堆小堆解决问题&#xff0c;“找最大用小堆&#xff…...

Unity 顶点vertices,uv,与图片贴图,与mesh

mesh就是组成3d物体的三角形们。 mesh由顶点组成的三角形组成&#xff0c;三角形的大小 并不 需要一样&#xff0c;由顶点之间的位置决定。 mesh可以是一个或者多个面。 贴图的原点在左下角&#xff0c;uv是贴图的坐标&#xff0c;数量和顶点数一样&#xff08;不是100%确定…...

Shell编程之函数

目录 基本概念 自定义函数 系统函数 1.read 2.basename 3.dirname 基本概念 将一段代码组合封装在一起实现某个特定的功能或返回某个特定的值&#xff0c;然后给这段代码取个名字&#xff0c;也就是函数名&#xff0c;在需要实现某个特定功能的时候直接调用函数名即可。 函…...

10.物联网LWIP之TCP状态转变

一。TCP状态机 1.青粗线&#xff1a;理想TCP状态转变&#xff08;服务器视角下&#xff09; 2.虚线&#xff1a;被动TCP状态转变&#xff08;服务器视角下&#xff09; 3.细实线&#xff1a;不经常出现的TCP状态转变&#xff08;类似于边界处理&#xff09; 1.青粗线解释--》服…...

Img标签的src地址自动拼接本地域名(localhost:8080)导致图片不显示问题

摘要&#xff1a;做Vueelement ui项目的时候&#xff0c;发现使用element ui的upload上传图片时&#xff0c;不显示的问题。我项目的图片是上传到七牛云&#xff0c;长传成功后返回存储在七牛云中的地址。后面发现是因为返回的地址是外部地址&#xff0c;需要完整的URL&#xf…...

数据结构入门 — 栈

本文属于数据结构专栏文章&#xff0c;适合数据结构入门者学习&#xff0c;涵盖数据结构基础的知识和内容体系&#xff0c;文章在介绍数据结构时会配合上动图演示&#xff0c;方便初学者在学习数据结构时理解和学习&#xff0c;了解数据结构系列专栏点击下方链接。 博客主页&am…...

Unity Android 之 在Unity 中引入 OkHttp的操作注意(OKHttp4.xx- kotlin 的包)简单记录

Unity Android 之 在Unity 中引入 OkHttp的操作注意(OKHttp4.xx- kotlin 的包)简单记录 目录 Unity Android 之 在Unity 中引入 OkHttp的操作注意(OKHttp4.xx- kotlin 的包)简单记录 一、简单介绍 二、OKHttp 4.xx 的 SDK 封装 aar 给 Unity 的使用注意 三、附录 OKHttp 的…...

内嵌功能强大、低功耗STM32WB55CEU7、STM32WB55CGU7 射频微控制器 - MCU, 48-UFQFN

一、概述&#xff1a; STM32WB55xx多协议无线和超低功耗器件内嵌功能强大的超低功耗无线电模块&#xff08;符合蓝牙 低功耗SIG规范5.0和IEEE 802.15.4-2011标准&#xff09;。该器件内含专用的Arm Cortex -M0&#xff0c;用于执行所有的底层实时操作。这些器件基于高性能Arm …...

【测试】笔试03

文章目录 1. 哪种测试模型把测试过程作为需求分析、概要设计、详细设计及编码之后的阶段&#xff08; &#xff09;2. 在下面所列举的逻辑测试覆盖中&#xff0c;测试覆盖最强的是&#xff1f;3. 网络管理员编写了shell程序prog1.sh,测试时程序死循环无法结束,可以通过下列方式…...

JavaScript的while和for循环

一、循环语句 1.认识循环 在开发中我们经常需要做各种各样的循环操作&#xff1a; 比如把一个列表中的商品、歌曲、视频依次输出进行展示&#xff1b;比如对一个列表进行累加计算&#xff1b;比如运行相同的代码将数字 1 到 10 逐个输出&#xff1b; 循环 是一种重复运行同…...

mqtt安卓客户端

1.MQTT&#xff08;消息队列遥测传输协议&#xff09;&#xff0c;是一种基于 发布/订阅 &#xff08;publish/subscribe&#xff09;模式的"轻量级"通讯协议&#xff0c; 该协议构建于TCP/IP协议上 。MQTT最大优点在于&#xff0c;可以以极少的代码和有限的带宽&…...