493|0

337

帖子

2

TA的资源

纯净的硅(初级)

楼主
 

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

 
【得捷电子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);//绘制缓冲区的内容    

 

模块运行状态

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

 

 

点赞 关注
 
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表