ESP32 ping 其它设备

本文详细介绍了ESP32中Ping功能的实现方法,包括esp_ping_set_target函数的使用及参数设置,并提供了具体的代码示例,展示了如何通过设置目标IP地址、Ping次数、超时时间和Ping间隔来实现Ping功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、esp32 ping函数简单介绍

1、函数esp_ping_set_target

设置ping 的各种参数,传入的第一个参数如下enum,主要是 IP地址,IP地址个数(esp32只支持ping 一个IP),接收超时 ,ping之间的间隔 ,回调函数等,

typedef enum {

PING_TARGET_IP_ADDRESS = 50, /**< target IP address */

PING_TARGET_IP_ADDRESS_COUNT = 51, /**< target IP address total counter */

PING_TARGET_RCV_TIMEO = 52, /**< receive timeout in milliseconds */

PING_TARGET_DELAY_TIME = 53, /**< delay time in milliseconds */

PING_TARGET_ID = 54, /**< identifier */

PING_TARGET_RES_FN = 55, /**< ping result callback function */

PING_TARGET_RES_RESET = 56 /**< ping result statistic reset */

} ping_target_id_t;

2、函数ping_init()

ping的初始化函数

 

二、具体代码

esp_err_t pingResults(ping_target_id_t msgType, esp_ping_found * pf)
{
    printf("AvgTime:%.1fmS Sent:%d Rec:%d min(mS):%d max(mS):%d Resp(mS):%d Timeouts:%d Total Time:%d\n", (float)pf->total_time/pf->recv_count, pf->send_count, pf->recv_count,  pf->min_time, pf->max_time ,pf->resp_time, pf->timeout_count, pf->total_time);
 /*    printf("ping Send total_count %d \r\n", pf->send_count);
    printf("ping Recv total_count %d \r\n", pf->recv_count);
    printf("ping timeout_count %d \r\n",pf->timeout_count);
    printf("ping min_time %d \r\n", pf->min_time);
    printf("ping max_time %d \r\n", pf->max_time);
    printf("ping resp_time %d\r\n",pf->resp_time);*/
    return ESP_OK;
}
void Start_Ping_ESP32(void){

    uint32_t ip_pinG = ipaddr_addr("163.177.151.109");//百度IP地址
    uint32_t ping_count = 2000;//ping的次数
    uint32_t ping_timeout = 1000; //超时时间
    uint32_t ping_delay = 2000; //ping 的间隔
    ping_deinit();
    esp_ping_set_target(PING_TARGET_IP_ADDRESS_COUNT, &ping_count, sizeof(uint32_t));
    esp_ping_set_target(PING_TARGET_RCV_TIMEO, &ping_timeout, sizeof(uint32_t));
    esp_ping_set_target(PING_TARGET_DELAY_TIME, &ping_delay, sizeof(uint32_t));
    esp_ping_set_target(PING_TARGET_IP_ADDRESS, &ip_pinG, sizeof(uint32_t));
    esp_ping_set_target(PING_TARGET_RES_FN, &pingResults, sizeof(pingResults));
    
    uint8_t res = 0;
    res = ping_init();
    if(res == 0){
        printf("PING!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n");
    }else{
        printf("error:%d\n",res);
    }
}

三、测试结果 感觉还好,我用的是手机热点,ping的百度

 

 

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

做了不一定能实现但不做一定不会实现

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值