注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
我爱下载的个人空间 https://home.eeworld.com.cn/space-uid-101026.html [收藏] [复制] [分享] [RSS]
日志

【得捷电子Follow me第4期】基础任务一(续):ping通互联网站点

已有 403 次阅读2024-2-22 18:48 |个人分类:产品评测

【得捷电子Follow me4期】基础任务一(续):ping通互联网站点

软件实现

通过circuitpython实现ping比较困难,所以采用pico-sdk为基础,利用官方提供的w5500-evb-pico程序框架,实现dns域名解析和ping的功能。

Dns域名解析

配置系统运行与静态IP地址模式下,同时指定DNS解析地址。利用w5500官方提供的dns源码。
访问的互联网地址:www.baidu.com
int dns_test(void)
{
    int ret;
    printf("\r\n===== DNS Client Example =====\r\n");
    printf("> DNS 1st: %d.%d.%d.%d\r\n",net_info.dns[0],net_info.dns[1],net_info.dns[2],net_info.dns[3]);
    printf("> DNS 2nd: %d.%d.%d.%d\r\n",DNS_2nd[0],DNS_2nd[1],DNS_2nd[2],DNS_2nd[3]);
    printf("==============================\r\n");
    printf("> Example Domain Name : %s\r\n",Domain_name);
    if((ret = DNS_run(net_info.dns, Domain_name, destip)) > 0)
    {
        printf("> 1st DNS Reponsed\r\n");
    }
    else if((ret != -1) && ((ret = DNS_run(DNS_2nd, Domain_name, destip)) > 0))
    {
        printf("> 2nd DNS Responsed\r\n");
    }
    else if(ret == -1)
    {
        printf("> MAX_DOMAIN_NAME is too small. Should be redefined it. \r\n");
    }
    else
    {
        printf("> DNS Failed\r\n");
    }
    if(ret > 0)
    {
        printf("> Translated %s to %d.%d.%d.%d\r\n",Domain_name,destip[0],destip[1],destip[2],destip[3]);
        return 1;
    }
    return 0;
}

 

Ping的实现

W5500官方给处理ping的实现例程。
基于前一步dns获取的域名ip后,实现针对互联网站点的ping解析。

运行输出

测试代码

    stdio_init_all();
    sleep_ms(2000);
    printf("lcd init\n\r");
    lcd_SharpMem_io_init();    //init spi cs
    // SharpMem_clearDisplay();
    u8g2_Setup_ls013b7dh05_144x168_f(&u8g2, U8G2_R0, sharpmem_byte_3wire_hw_spi, sharpmem_gpio_and_delay_cb);
    u8g2_InitDisplay(&u8g2);        // 根据所选的芯片进行初始化工作,初始化完成后,显示器处于关闭状态
    u8g2_SetPowerSave(&u8g2, 0);    // 打开显示器
    u8g2_SetDrawColor(&u8g2, 0);  //设置绘制颜色(反色)
    u8g2_ClearDisplay(&u8g2); // 清除显示数据及屏幕
    u8g2_ClearBuffer(&u8g2);//清空缓冲区的内容
    u8g2_SetFont(&u8g2,u8g2_font_10x20_mr);//设置英文字体
    u8g2_DrawStr(&u8g2,20,15,"PING TEST");//输出固定不变的字符串
    u8g2_SetFont(&u8g2,u8g2_font_7x14_mr);//设置英文字体
    u8g2_DrawStr(&u8g2,0,40,"DNS:218.203.59.116");//输出固定不变的字符串
    u8g2_DrawStr(&u8g2,0,60,"Ping Domain Name:");//输出固定不变的字符串
    u8g2_DrawStr(&u8g2,20,80,"www.baidu.com");//输出固定不变的字符串
    u8g2_SendBuffer(&u8g2);//绘制缓冲区的内容    
//      SharpMem_clearDisplayBuffer();
//      SharpMem_refresh() ;
    network_init();
    DNS_init(0,ethernet_buf);
    add_repeating_timer_ms(1000, repeating_timer_callback, NULL, &timer);
    dns_test();
    do_ping();
    u8g2_DrawStr(&u8g2,0,100,"DNS GetIP:");//输出固定不变的字符串
    sprintf(cstr_buf,"%d.%d.%d.%d",destip[0],destip[1],destip[2],destip[3]);
    u8g2_DrawStr(&u8g2,20,120,cstr_buf);//输出固定不变的字符串
    u8g2_DrawStr(&u8g2,0,140,"PING SUCCESS!");//输出固定不变的字符串
    u8g2_SendBuffer(&u8g2);//绘制缓冲区的内容    

 

模块运行状态

液晶显示信息
串口输出信息

 

 

本文来自论坛,点击查看完整帖子内容。

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章