首页 理论教育 Ethernet库带来卓越表现

Ethernet库带来卓越表现

时间:2023-11-17 理论教育 版权反馈
【摘要】:Ethernet类库中定义了多个类,要想完成网络通信,需要多个类配合使用。1)Ethernet类该类用于完成以太网的初始化和进行相关的网络配置,其成员函数如下。4)EthernetClient类使用EthernetClient类可以创建一个客户端对象,用于连接到服务器,并发送或接收数据。

Ethernet库带来卓越表现

使用Ethernet类库需要包含该库的头文件Ethernet.h;由于MCU是通过SPI总线连接到以太网接口而实现网络功能的,所以也需要包含SPI.h头文件。Ethernet类库中定义了多个类,要想完成网络通信,需要多个类配合使用。EK-TM4C1294XL的MAC地址一般贴在板卡的背面。

1)Ethernet类

该类用于完成以太网的初始化和进行相关的网络配置,其成员函数如下。

图8-18 EK-TM4C1294XL引脚图

(1)begin()。

功能:初始化以太网并进行相关配置。可以在参数中配置MAC地址、IP地址、DNS地址、网关、子网掩码。支持DHCP,当只设置MAC地址时,设备会自动获取IP地址。

语法:Ethernet.begin(mac);

Ethernet.begin(mac,ip);

Ethernet.begin(mac,ip,dns);

Ethernet.begin(mac,ip,dns,gateway);

Ethernet.begin(mac,ip,dns,gateway,subnet)。

参数:mac,本设备的MAC地址;

ip,本设备的IP地址;

dns,DNS服务器地址;

gateway,网关IP地址,默认为IP地址最后一个字节为1的地址;

subnet,子网掩码,默认为255.255.255.0。

返回值:当使用Ethernet.begin(mac)函数进行DHCP连接时,连接成功返回1,失败返回0;如果指定了IP地址,则不返回任何数据。

(2)localIP()。

功能:获取设备的IP地址。当使用DHCP方式连接时,可以通过该函数获得IP地址的值。

语法:Ethernet.localIP()。

参数:无。

返回值:设备的IP地址。

(3)maintain()。

功能:更新DHCP租约。

语法:Ethernet.maintain()。

参数:无。

返回值:byte类型,可以为下列值。

①0为没有改变。

②1为更新失败。

③2为更新成功。

④3为重新绑定失败。

⑤4为重新绑定成功。

2)IPAddress类

IPAddress类只有一个构造函数,用于定义一个存储IP地址的对象。

功能:定义一个对象用于存储一个IP地址。

语法:IPAddress ip(address)。

参数:ip,用户自定义的一个存储IP地址的对象;

address,一个IP地址。例如:192.168.1.1。

返回值:无。

3)EthernetServer类

使用EthernetServer类可以创建一个服务器端对象,用于与客户端设备之间发送或接收数据,其成员函数如下。

(1)EthernetServer()。

功能:创建一个服务器对象,并指定监听端口。

语法:EthernetServer server(port)。

参数:server,一个EthernetServer类的对象;

port,监听端口。

返回值:无。

(2)begin()。

功能:服务器开始监听接入的连接。

语法:server.begin()。

参数:server,一个EthernetServer类的对象。

返回值:无。

(3)available()。

功能:获取一个连接到本服务器且可读数据的客户端对象。

语法:server.available()。

参数:server,一个EthernetServer类的对象。

返回值:一个客户端(EthernetClient类型)对象。

(4)write()。

功能:发送数据到所有连接到本服务器的客户端。

语法:server.write(data)。

参数:server,一个EthernetServer类的对象;

data,发送的数据,byte或char类型。

返回值:发送的字节数。

(5)print()。

功能:发送数据到所有连接到本服务器的客户端。数据以ASCII码的形式一个一个地发送。

语法:server.print(data);

server.print(data,BASE)。

参数:server,一个EthernetServer类的对象;

data,发送的数据,可以为byte、char、int、long、string类型;

BASE,指定数据以何种进制形式输出。

返回值:发送的字节数。

(6)println()。

功能:发送数据到所有连接到本服务器的客户端,最后再发送一个换行符。数据以ASCII码的形式一个一个地发送。

语法:server.println();

server.println(data);

server.println(data,BASE)。

参数:server,一个EthernetServer类的对象;

data,发送的数据,可以为byte、char、int、long、string类型;

BASE,指定数据以何种进制形式输出。

返回值:发送的字节数。

4)EthernetClient类

使用EthernetClient类可以创建一个客户端对象,用于连接到服务器,并发送或接收数据。其成员函数如下。

(1)EthernetClient()。

功能:创建一个客户端对象。

语法:EthernetClient client。

参数:client,一个EthernetClient类对象。

返回值:无。

(2)if(EthernetClient)。

功能:检查指定的客户端对象是否可用。

语法:if(client)。

参数:client,一个EthernetClient类对象。

返回值:boolean类型,为ture表示可用,为false表示不可用。

(3)connect()。

功能:连接到指定的IP地址和端口。

语法:client.connect();

client.connect(ip,port);

client.connect(URL,port)。

参数:client,一个EthernetClient类对象;

ip,client准备连接的服务器的IP地址,必须是一个4字节的数组变量

port,int类型,连接服务器的端口号

返回值为int类型,可以为下列值:

①1为没有改变;

②-1为连接超时;

③-2为无效的服务器;

④-3为被分段;

⑤-4为无效的响应。

(4)connected()。

功能:检查客户端是否已经连接。

语法:client.connected()。

参数:client,一个EthernetClient类对象。(www.xing528.com)

返回值:boolean类型,为ture表示已经连接,为false表示没有连接。

(5)write()。

功能:发送数据到已经连接的服务器上。

语法:client.write(data)。

参数:client,一个EthernetClient类对象;

data,发送的数据,byte或char类型。

返回值:发送的字节数。

(6)print()。

功能:发送数据到已经连接的服务器上。数据以ASCII码的形式一个一个地发送。

语法:client.print(data);

client.print(data,BASE)。

参数:client,一个EthernetClient类对象;

data,发送的数据,可以为byte、char、int、long、string类型;

BASE,指定数据以何种进制形式输出。

返回值:发送的字节数。

(7)println()。

功能:发送数据到已经连接的服务器上,最后再发送一个换行符。数据以ASCII码的形式一个一个地发送。

语法:client.println();

client.println(data);

client.println(data,BASE)。

参数:client,一个EthernetClient类对象;

data,发送的数据,可以为byte、char、int、long、string类型;

BASE,指定数据以何种进制形式输出。

返回值:发送的字节数。

(8)available()。

功能:获取可读字节数。可读数据为所连接的服务端发送来的数据。

语法:client.available()。

参数:client,一个EthernetClient类对象。

返回值:可读的字节数。如果没有可读数据,则返回-1。

(9)read()。

功能:读取接送到的数据。

语法:client.read()。

参数:client,一个EthernetClient类对象。

返回值:一个字节的数据。如果没有可读数据,则返回-1。

(10)flush()。

功能:清除已写入客户端但还没有被读取的数据。

语法:client.flush()。

参数:client,一个EthernetClient类对象。

返回值:无。

(11)stop()。

功能:断开与服务器的连接。

语法:client.stop()。

参数:client,一个EthernetClient类对象。

返回值:无。

5)Ethernet UDP类

使用Ethernet UDP类可以发送或接收UDP报文。其成员函数如下。

(1)Ethernet UDP()。

功能:Ethernet UDP类构造函数,完成Ethernet UDP类对象的初始化。

语法:Ethernet UDP Udp。

参数:Udp,定义一个Ethernet UDP类对象。

(2)begin()。

功能:初始化UDP库并进行相关的网络配置。

语法:Udp.begin(localPort)。

参数:Udp,一个Ethernet UDP类对象;

localPort,int类型,本地监听端口号。

返回值:boolean类型,为ture表示已经连接,为false表示没有连接。

(3)read()。

功能:从指定缓存区中读取接送到的UDP数据。在使用该函数之前必须前调用parsePacket函数。

语法:Udp.read();

Udp.read(packetBuffer,MaxSize)。

参数:Udp,一个Ethernet UDP类对象;

packetBuffer,用于接收数据包的缓存区(char);

MaxSize,缓存区的最大容量(int)。

返回值:char类型,表示从缓存区中读取到的字符数。

(4)write()。

功能:向UDP连接的对端发送UDP数据包。write()函数需要在beginPacket()和endPacket()函数之间调用。

语法:Udp.write(message);

Udp.write(buffer,size)。

参数:Udp,一个Ethernet UDP类对象;

message,准备发送的数据(char);

buffer,存放发送数据的数组(byte或者char);

size,buffer的长度

返回值:发送的字节数。

(5)beginPacket()。

功能:开始向远程设备发送UDP数据包。

语法:Udp.beginPacket(remoteIP,remotePort)。

参数:Udp,一个Ethernet UDP类对象;

remoteIP,远程连接对端的IP地址(4 bytes);

remotePort,远程连接对端的端口号(int)。

返回值:无。

(6)endPacket()。

功能:完成UDP数据包的发送。

语法:Udp.endPacket()。

参数:Udp,一个Ethernet UDP类对象。

返回值:无。

(7)parsePacket()。

功能:检测是否有DUP数据包可读取,如果有则返回其可读字节数。

语法:Udp.parsePacket()。

参数:Udp,一个Ethernet UDP类对象。

返回值:int类型,表示UDP数据包的大小。如果没有可读数据,则返回-1。

(8)available()。

功能:获取缓存区中可读字节数。首先要调用Udp.parsePacket(),然后available()函数才有效。

语法:Udp.available()。

参数:Udp,一个Ethernet UDP类对象。

返回值:可读的字节数。如果没有可读数据,则返回-1。

(9)stop()。

功能:终止Udp连接。

语法:Udp.stop()。

参数:Udp,一个Ethernet UDP类对象。

返回值:无。

(10)remoteIP()。

功能:获得远程设备的IP地址。

语法:Udp.remoteIP()。

参数:Udp,一个Ethernet UDP类对象。

返回值:4个字节的IP地址,UDP连接对端的IP地址。

(11)remotePort()。

功能:获得远程连接的端口号。

语法:Udp.remotePort()。

参数:Udp,一个Ethernet UDP类对象。

返回值:int类型,远程连接的端口号。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈