使用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类型,远程连接的端口号。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。