Arduino 默认以太网库类包含一个IPAddress
变量类型。这是IPAddress
为了什么?为什么要使用它,为什么官方示例中的网关和子网 IP 不使用它?
powtac
问问题
4241 次
1 回答
3
就像你说的,它只是一种可以存储IP地址的变量(例如int
(整数))。使用整数,您不能.
在 IP 地址中添加所需的 s。此外,该库只接受整数,因为对于字符串,事情“可能会变得混乱”。例如,如果您有1
一个字符串,则不能将其与另一个数字相加。但是,如果您有值为 的整数变量类型1
,它会很容易添加。
我该如何使用它?:
在Arduino 的 EthernetIpAdress 页面上,有以下代码:
#include <Ethernet.h>
// network configuration. gateway and subnet are optional.
// the media access control (ethernet hardware) address for the shield:
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
// the router's gateway address:
byte gateway[] = { 10, 0, 0, 1 };
// the subnet:
byte subnet[] = { 255, 255, 0, 0 };
EthernetServer server = EthernetServer(23);
//the IP address is dependent on your network
IPAddress ip(192,168,1,1);
void setup()
{
// initialize the ethernet device
Ethernet.begin(mac, ip, gateway, subnet);
// start listening for clients
server.begin();
}
void loop()
{
//print out the IP address
Serial.println(myIPaddress);
}
在行上IPAddress ip(192,168,1,1);
,它创建一个保存 IP 地址的变量。在该行Ethernet.begin(mac, ip, gateway, subnet);
中查找变量并将其提供给Ethernet
库。除了试图阻止人们使用整数类型并使其看起来更干净之外,我不知道有什么好处。它可以查找自动发布的 IP 地址,然后将其存储以备后用,因此如果它进入“空闲模式”,它可以请求相同的 IP 地址,因此它几乎就像一个不会干扰其他设备的动态 IP并在按下重置按钮时重置。我确信它有一些用处,但我想不出一个。我只是想告诉你它是什么以及如何使用它。我认为虽然使用起来会更容易#define IPadress 192.168.1.1
或类似的东西,如果您希望它易于更改或更具用户可读性。
于 2013-04-16T00:47:14.147 回答