【得捷电子Follow me第4期】基础任务一:完成主控板W5500初始化
[复制链接]
初始化其本身是有例程的主要还是库的选择,我们在Arduino下选择库还需要注意。
最开始可能是这样的Ping库,这个还需要自己去修改了,很麻烦。
有老哥提供了一个可以ping的库,地址是:
如果看官方的里面,目前更新到了2.02版本。里面是没有这个库的。
有人提交了问题,但是目前好像没有回应。测试时候可以参考ICMP_PING这个库给的案例。
#include <SPI.h>
#include <Dns.h>
#include <Ethernet.h>
#include <EthernetICMP.h>
byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; // max address for ethernet shield
IPAddress ip(192,168,1,155); // ip address for ethernet shield
IPAddress pingAddr(192,168,1,3); // ip address to ping
DNSClient dnClient;
SOCKET pingSocket = 0;
EthernetICMPPing ping(pingSocket, (uint16_t)random(0, 255));
void ping_ip(const IPAddress &pingAddr1)
{
EthernetICMPEchoReply echoReply = ping(pingAddr1, 4);
char buffer [256];
if (echoReply.status == SUCCESS)
{
sprintf(buffer,
"Reply[%d] from: %d.%d.%d.%d: bytes=%d time=%ldms TTL=%d",
echoReply.data.seq,
echoReply.addr[0],
echoReply.addr[1],
echoReply.addr[2],
echoReply.addr[3],
REQ_DATASIZE,
millis() - echoReply.data.time,
echoReply.ttl);
}
else
{
sprintf(buffer, "Echo request failed; %d", echoReply.status);
}
Serial.println(buffer);
delay(500);
}
void ping_site() {
dnClient.begin(Ethernet.dnsServerIP());
const char domains[20] = { "www.baidu.com"};
IPAddress dstip;
if (dnClient.getHostByName(domains, dstip) == 1) {
Serial.print(domains);
Serial.print(" = ");
Serial.println(dstip);
ping_ip(dstip);
} else{
Serial.println(F("dns lookup failed"));
}
}
void setup()
{
Serial.begin(9600);
while (!Serial)
;
// You can use Ethernet.init(pin) to configure the CS pin
//Ethernet.init(10); // Most Arduino shields
//Ethernet.init(5); // MKR ETH shield
//Ethernet.init(0); // Teensy 2.0
//Ethernet.init(20); // Teensy++ 2.0
//Ethernet.init(15); // ESP8266 with Adafruit Featherwing Ethernet
//Ethernet.init(33); // ESP32 with Adafruit Featherwing Ethernet
Ethernet.init(17); // WIZnet W5100S-EVB-Pico W5500-EVB-Pico W6100-EVB-Pico
// start Ethernet
Ethernet.begin(mac, ip);
// Ethernet.begin(mac, ip, myDns, gateway, subnet);
}
void loop()
{
// ping_site();
ping_ip(pingAddr);
}
Ping网站的时候还是获取到网站的IP地址,然后进行PING的。
用wireshark看ping自己主机,就是这样的。
|