Arduino 显示器 Ethernet.localIP()
Arduino Display Ethernet.localIP()
我正在尝试将设备的 IP 地址分配给字符串变量。当我使用 Serial.println(Ethernet.localIP())
进行测试时,它以八位字节显示 IP 地址。如果我使用 String(Ethernet.localIP());
然后它显示为小数。
有没有办法将八位字节格式分配给变量?
String MyIpAddress;
void StartNetwork()
{
Print("Initializing Network");
if (Ethernet.begin(mac) == 0) {
while (1) {
Print("Failed to configure Ethernet using DHCP");
delay(10000);
}
}
Serial.println(Ethernet.localIP()); //displays: 192.168.80.134
MyIpAddress = String(Ethernet.localIP());
Serial.println(MyIpAddress); //displays: 2253433024
}
原来 IPAddress 属性 是一个数组。一种显示 IP 地址的简单方法如下:
String DisplayAddress(IPAddress address)
{
return String(address[0]) + "." +
String(address[1]) + "." +
String(address[2]) + "." +
String(address[3]);
}
一种更轻量级的方法是:
char* ip2CharArray(IPAddress ip) {
static char a[16];
sprintf(a, "%d.%d.%d.%d", ip[0], ip[1], ip[2], ip[3]);
return a;
}
一个IP地址最长为15个字符,所以16个字符的缓冲区就足够了。让它 static
确保内存寿命,所以你可以 return 它安全。
另一种方法:字符缓冲区可以由调用者提供:
void ip2CharArray(IPAddress ip, char* buf) {
sprintf(buf, "%d.%d.%d.%d", ip[0], ip[1], ip[2], ip[3]);
}
只需使用 toString()
display.drawString(0, 30, WiFi.localIP().toString());
我正在尝试将设备的 IP 地址分配给字符串变量。当我使用 Serial.println(Ethernet.localIP())
进行测试时,它以八位字节显示 IP 地址。如果我使用 String(Ethernet.localIP());
然后它显示为小数。
有没有办法将八位字节格式分配给变量?
String MyIpAddress;
void StartNetwork()
{
Print("Initializing Network");
if (Ethernet.begin(mac) == 0) {
while (1) {
Print("Failed to configure Ethernet using DHCP");
delay(10000);
}
}
Serial.println(Ethernet.localIP()); //displays: 192.168.80.134
MyIpAddress = String(Ethernet.localIP());
Serial.println(MyIpAddress); //displays: 2253433024
}
原来 IPAddress 属性 是一个数组。一种显示 IP 地址的简单方法如下:
String DisplayAddress(IPAddress address)
{
return String(address[0]) + "." +
String(address[1]) + "." +
String(address[2]) + "." +
String(address[3]);
}
一种更轻量级的方法是:
char* ip2CharArray(IPAddress ip) {
static char a[16];
sprintf(a, "%d.%d.%d.%d", ip[0], ip[1], ip[2], ip[3]);
return a;
}
一个IP地址最长为15个字符,所以16个字符的缓冲区就足够了。让它 static
确保内存寿命,所以你可以 return 它安全。
另一种方法:字符缓冲区可以由调用者提供:
void ip2CharArray(IPAddress ip, char* buf) {
sprintf(buf, "%d.%d.%d.%d", ip[0], ip[1], ip[2], ip[3]);
}
只需使用 toString()
display.drawString(0, 30, WiFi.localIP().toString());