首页 理论教育 使用WiFi类库开启互联网连接

使用WiFi类库开启互联网连接

时间:2023-11-17 理论教育 版权反馈
【摘要】:图8-28CC3100 WiFi BoosterPack引脚图RedBear Lab WiFi Mini。CC3200 WiFi LaunchPad本身自带WiFi模块。3)WiFi类库使用WiFi类库可以把LaunchPad接到互联网上,该库支持WEP和个人WPA2加密方式。该类用于完成WiFi的初始化和进行相关的网络配置,其成员函数如下。语法:WiFi.begin();WiFi.begin;WiFi.begin;图8-29ReaBear Lab WiFi Mini引脚图图8-30CC3200 WiFi LaunchPad引脚图WiFi.begin。

使用WiFi类库开启互联网连接

1)原理

无线网络上网可以简单地理解为无线上网,几乎所有智能手机平板电脑笔记本电脑都支持WiFi上网,是当今使用最广的一种无线网络传输技术。实际上就是把有线网络信号转换成无线信号,以前通过网线连接电脑,而WiFi则是通过无线电波来联网;常见的就是通过一个无线路由器,那么在这个无线路由器的电波覆盖的有效范围都可以采用WiFi连接方式进行联网。

2)相关硬件

使用WiFi需要相应的硬件支持。以下是TI公司提供的3种支持WiFi功能的硬件。

(1)CC3100 Wi-Fi BoosterPack(见图8-28)。TI提供了WiFi扩展板CC3100 Wi-Fi BoosterPack,它可以直接插在LaunchPad板卡上面。

图8-28 CC3100 WiFi BoosterPack引脚图

(2)RedBear Lab WiFi Mini。RedBear Lab WiFi Mini是一个特殊的WiFi扩展板,只能插在RedBear Lab CC3200开发板上(见图8-29)。

(3)CC3200 WiFi LaunchPad(见图8-30)。CC3200 WiFi LaunchPad本身自带WiFi模块。

3)WiFi类库

使用WiFi类库可以把LaunchPad接到互联网上,该库支持WEP和个人WPA2加密方式。使用WiFi类库需要包含该库的头文件WiFi.h;由于MCU是通过SPI总线连接到WiFi接口而实现网络功能的,所以也需要包含SPI.h头文件。WiFi类库和Ethernet类库十分相似,许多函数的调用都是一样的。

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

①begin()。

功能:初始化网络设置。begin()函数自动使用DHCP配置网络地址信息。

语法:WiFi.begin();

WiFi.begin(ssid);

WiFi.begin(ssid,pass);

图8-29 ReaBear Lab WiFi Mini引脚图

图8-30 CC3200 WiFi LaunchPad引脚图

WiFi.begin(ssid,keyIndex,key)。

参数:ssid,准备接入的WiFi网络的SSID;

pass,字符串类型,WPA加密网络所设置的密码;

keyIndex,WEP加密网络可以设置4个不同的key,选择使用key的索引

key,十六进制的串,WEP加密网的密码。

返回值:当连接到一个网络,返回WL_CONNECTED;当没有连接到一个网络,返回WL_IDLE_STATUS。

②disconnect()。

功能:断开当前连接的WiFi网络。

语法:WiFi.disconnect()。

参数:无。

返回值:无。

③config()。

功能:初始化以太网并进行相关配置。可以在参数中配置静态IP地址、DNS地址、网关、子网掩码

语法:WiFi.config(ip);

WiFi.begin(ip,dns);

WiFi.begin(ip,dns,gateway);

WiFi.begin(ip,dns,gateway,subnet)。

参数:ip,本设备的IP地址;

dns,DNS服务器地址;

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

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

返回值:无。

④setDNS()。

功能:配置DNS服务器。

语法:WiFi.setDNS(dns_server1);

WiFi.setDNS(dns_server1,dns_server2)。

参数:dns_server1,首要DNS的IP地址;

dns_server2,次要DNS的IP地址。

返回值:无。

⑤SSID()。

功能:获取当前网络的SSID。

语法:WiFi.SSID();

WiFi.SSID(wifiAccessPoint)。

参数:wifiAccessPoint,指定特定wifi AccessPoint。

返回值:当前网络的SSID。

⑥BSSID()。

功能:获取当前网络路由器的MAC地址。

语法:WiFi.BSSID(bssid)。

参数:6字节数组,用于存放路由器的MAC地址。

返回值:无。

⑦RSSI()。

功能:获取当前网络的信号强度。

语法:WiFi.RSSI();

WiFi.RSSI(wifiAccessPoint)。

参数:wifiAccessPoint,指定特定wifi AccessPoint。

返回值:当前网络的信号强度,单位dBm。

⑧encryption Type()。

功能:获取当前网络的加密方式。

语法:WiFi.encryption Type();

WiFi.encryption Type(wifiAccessPoint)。

参数:wifiAccessPoint,指定特定wifi AccessPoint。

返回值为byte类型,当前网络的加密方式,可取值如下:

a.TKIP(WAP)=2;

b.WEP=5;

c.CCMP(WPA)=4;

d.NONE=7;

e.AUTO=8。

⑨scan Networks()。

功能:搜索可接入的WiFi网络并返回发现网络的数量。

语法:WiFi.scanNetworks()。

参数:无。

返回值:发现网络的数量。

⑩getSocket()。

功能:获取第一个可使用的socket。

语法:WiFi.getSocket()。

参数:无。

返回值:第一个可使用的socket。

⑪mac Address()。

功能:获取WiFi设备的MAC地址。

语法:WiFi.macAddress(mac)。

参数:mac,存放MAC地址的6字节数组。

返回值:无。

(2)IPAddress类。

①localIP()。

功能:获取设备的IP地址。

语法:WiFi.localIP()。

参数:无。

返回值:设备的IP地址。

②subnet()。

功能:获取WiFi网络的子网掩码。

语法:WiFi.subnet()。

参数:无。

返回值:网络的子网掩码。

③gatewayIP()。

功能:获取WiFi网络的网管IP地址。

语法:WiFi.gatewayIP()。

参数:无

返回值:WiFi网络的网管IP地址。

(3)WiFiServer类。

①WiFiServer()。

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

语法:WiFiServer server(port)。

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

port,监听端口。

返回值:无。

②begin()。

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

语法:server.begin()。

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

返回值:无。

③available()。

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

语法:server.available()。

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

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

④write()。

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

语法:server.write(data)。

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

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

返回值:发送的字节数。

⑤print()。

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

语法:server.print(data);

server.print(data,BASE)。

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

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

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

返回值:发送的字节数。

⑥println()。

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

语法:server.println();

server.println(data);

server.println(data,BASE)。

参数:server,一个WiFiServer类的对象;(www.xing528.com)

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

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

返回值:发送的字节数。

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

①WiFiClient()。

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

语法:WiFiClient client。

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

返回值:无。

②connect()。

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

语法:client.connect(ip,port);

client.connect(URL,port)。

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

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

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

返回值:boolean类型,如果连接成功,取值true,否则取值false。

③connected()。

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

语法:client.connected()。

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

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

④write()。

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

语法:client.write(data)。

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

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

返回值:发送的字节数。

⑤print()。

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

语法:client.print(data);

client.print(data,BASE)。

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

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

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

返回值:发送的字节数。

⑥println()。

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

语法:client.println();

client.println(data);

client.println(data,BASE)。

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

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

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

返回值:发送的字节数。

⑦available()。

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

语法:client.available()。

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

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

⑧read()。

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

语法:client.read()。

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

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

⑨flush()。

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

语法:client.flush()。

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

返回值:无。

⑩stop()。

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

语法:client.stop()。

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

返回值:无。

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

①WiFiUDP()。

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

语法:WiFiUDP Udp。

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

②begin()。

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

语法:Udp.begin(localPort)。

参数:Udp,一个WiFiUDP类对象;

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

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

③available()。

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

语法:Udp.available()。

参数:Udp,一个WiFiUDP类对象。

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

④beginPacket()。

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

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

参数:Udp,一个WiFiUDP类对象;

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

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

返回值:无。

⑤endPacket()。

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

语法:Udp.endPacket()。

参数:Udp,一个WiFiUDP类对象。

返回值:无。

⑥write()。

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

语法:Udp.write(message);

Udp.write(buffer,size)。

参数:Udp,一个WiFiUDP类对象;

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

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

size,buffer的长度

返回值:发送的字节数。

⑦parsePacket()。

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

语法:Udp.parsePacket()。

参数:Udp,一个WiFiUDP类对象。

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

⑧read()。

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

语法:Udp.read();

Udp.read(packetBuffer,MaxSize)。

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

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

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

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

⑨stop()。

功能:终止Udp连接。

语法:Udp.stop()。

参数:Udp,一个WiFiUDP类对象。

返回值:无。

⑩remoteIP()。

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

语法:Udp.remoteIP()。

参数:Udp,一个WiFiUDP类对象。

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

⑪remotePort()。

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

语法:Udp.remotePort()。

参数:Udp,一个WiFiUDP类对象。

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

4)WiFi Web服务器

菜单栏中打开“File”→“Examples”→“WiFi”→“SimpleWebServer WiFI”,这时在编辑窗口会出现程序,如表8-18所示。该示例将展示Energia环境下LaunchPad通过WiFi库建立一个简单的Web Server,用户可以通过浏览器连接到该服务器,打开网页点击按钮开关连接到LaunchPad第9号引脚的LED灯。

表8-18 WiFi应用示例程序清单

(续表)

(续表)

(续表)

(续表)

上载程序到CC3200 WiFi LaunchPad,打开串口监视器,观察输出。假设串口监视器最后一行输出的是http://192.168.1.177,用处于同一个网络的计算机打开浏览器,在地址栏输入http://192.168.1.177/H,观察LaunchPad上的RED_LED灯,该灯会亮起来;接着在地址栏输入http://192.168.1.177/L,再次观察LaunchPad上的RED_LED灯,该灯熄灭了。

【注释】

[1]lx,照度单位,指照射到单位面积上的光通量

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

我要反馈