示例1 ConnectNoEncryption
来源:互联网 发布:bugfree windows 编辑:程序博客网 时间:2024/05/18 10:19
#include <WiFi.h>
char ssid[] = "yourNetwork"; // 千万记住把你的wifi网络改成你的wifi名字,并且不要加密
int status = WL_IDLE_STATUS; // 把板子wifi当前设置为空状态,即还没连到你的wifi网络
void setup() {
//初始化串口,等待端口打开:
Serial.begin(9600);
while (!Serial) {
; // 等待串口连接,这一步只对Leonardo有用,其他核心板不需要
}
// 检查你的wifi扩展板是不是连到了核心板上,如果没连,程序就停到这里不动了
if (WiFi.status() == WL_NO_SHIELD) {
Serial.println("WiFi shield not present");
// 程序就是停在这里,死循环
while(true);
}
// 如果上一步检查连接通过了,这一步就要检查你的wifi扩展板是不是成功连到了wifi网络,注意是没有加密的网络
while ( status != WL_CONNECTED) {
Serial.print("Attempting to connect to open SSID: ");
Serial.println(ssid);
status = WiFi.begin(ssid);
// 等个10秒,再看看能不能连上,不能连上的话就永远悲催地在这个循环尝试连接
delay(10000);
}
// 你的扩展板现在连到了wifi网络,需要打印些信息证明确实连上了
Serial.print("You're connected to the network");
printCurrentNet();
printWifiData();
}
char ssid[] = "yourNetwork"; // 千万记住把你的wifi网络改成你的wifi名字,并且不要加密
int status = WL_IDLE_STATUS; // 把板子wifi当前设置为空状态,即还没连到你的wifi网络
void setup() {
//初始化串口,等待端口打开:
Serial.begin(9600);
while (!Serial) {
; // 等待串口连接,这一步只对Leonardo有用,其他核心板不需要
}
// 检查你的wifi扩展板是不是连到了核心板上,如果没连,程序就停到这里不动了
if (WiFi.status() == WL_NO_SHIELD) {
Serial.println("WiFi shield not present");
// 程序就是停在这里,死循环
while(true);
}
// 如果上一步检查连接通过了,这一步就要检查你的wifi扩展板是不是成功连到了wifi网络,注意是没有加密的网络
while ( status != WL_CONNECTED) {
Serial.print("Attempting to connect to open SSID: ");
Serial.println(ssid);
status = WiFi.begin(ssid);
// 等个10秒,再看看能不能连上,不能连上的话就永远悲催地在这个循环尝试连接
delay(10000);
}
// 你的扩展板现在连到了wifi网络,需要打印些信息证明确实连上了
Serial.print("You're connected to the network");
printCurrentNet();
printWifiData();
}
// 无限循环,每隔10秒,检查一遍你的扩展板还是不是连到了wifi网络
void loop() {
delay(10000);
printCurrentNet();
}
void printWifiData() {
// 打印输出wifi扩展板的IP地址:
IPAddress ip = WiFi.localIP();
Serial.print("IP Address: ");
Serial.println(ip);
Serial.println(ip);
// 打印输出你的MAC地址:
void loop() {
delay(10000);
printCurrentNet();
}
void printWifiData() {
// 打印输出wifi扩展板的IP地址:
IPAddress ip = WiFi.localIP();
Serial.print("IP Address: ");
Serial.println(ip);
Serial.println(ip);
// 打印输出你的MAC地址:
byte mac[6]; // 定义六字节的数组用来存放MAC地址
WiFi.macAddress(mac);
Serial.print("MAC address: ");
Serial.print(mac[5],HEX);
Serial.print(":");
Serial.print(mac[4],HEX);
Serial.print(":");
Serial.print(mac[3],HEX);
Serial.print(":");
Serial.print(mac[2],HEX);
Serial.print(":");
Serial.print(mac[1],HEX);
Serial.print(":");
Serial.println(mac[0],HEX);
// 打印输出你的子网掩码:
IPAddress subnet = WiFi.subnetMask();
Serial.print("NetMask: ");
Serial.println(subnet);
// 打印输出你的网关地址:
WiFi.macAddress(mac);
Serial.print("MAC address: ");
Serial.print(mac[5],HEX);
Serial.print(":");
Serial.print(mac[4],HEX);
Serial.print(":");
Serial.print(mac[3],HEX);
Serial.print(":");
Serial.print(mac[2],HEX);
Serial.print(":");
Serial.print(mac[1],HEX);
Serial.print(":");
Serial.println(mac[0],HEX);
// 打印输出你的子网掩码:
IPAddress subnet = WiFi.subnetMask();
Serial.print("NetMask: ");
Serial.println(subnet);
// 打印输出你的网关地址:
IPAddress gateway = WiFi.gatewayIP();
Serial.print("Gateway: ");
Serial.println(gateway);
}
void printCurrentNet() {
// 打印输出你连接的wifi网络名称:
Serial.print("SSID: ");
Serial.println(WiFi.SSID());
// 打印输出你连接的路由器的MAC地址:
byte bssid[6];
WiFi.BSSID(bssid);
Serial.print("BSSID: ");
Serial.print(bssid[5],HEX);
Serial.print(":");
Serial.print(bssid[4],HEX);
Serial.print(":");
Serial.print(bssid[3],HEX);
Serial.print(":");
Serial.print(bssid[2],HEX);
Serial.print(":");
Serial.print(bssid[1],HEX);
Serial.print(":");
Serial.println(bssid[0],HEX);
// 打印输出接收信号的强度:
long rssi = WiFi.RSSI();
Serial.print("signal strength (RSSI):");
Serial.println(rssi);
// 打印输出当前网络的加密类型:
Serial.print("Gateway: ");
Serial.println(gateway);
}
void printCurrentNet() {
// 打印输出你连接的wifi网络名称:
Serial.print("SSID: ");
Serial.println(WiFi.SSID());
// 打印输出你连接的路由器的MAC地址:
byte bssid[6];
WiFi.BSSID(bssid);
Serial.print("BSSID: ");
Serial.print(bssid[5],HEX);
Serial.print(":");
Serial.print(bssid[4],HEX);
Serial.print(":");
Serial.print(bssid[3],HEX);
Serial.print(":");
Serial.print(bssid[2],HEX);
Serial.print(":");
Serial.print(bssid[1],HEX);
Serial.print(":");
Serial.println(bssid[0],HEX);
// 打印输出接收信号的强度:
long rssi = WiFi.RSSI();
Serial.print("signal strength (RSSI):");
Serial.println(rssi);
// 打印输出当前网络的加密类型:
byte encryption = WiFi.encryptionType();
Serial.print("Encryption Type:");
Serial.println(encryption,HEX);
}
Serial.print("Encryption Type:");
Serial.println(encryption,HEX);
}
库函数说明
WiFi.status()
函数用来返回连接状态,它可以返回的状态有以下几种:
WL_NO_SHIELD = 255,// 扩展板没连到核心板上,本节用到的状态
WL_IDLE_STATUS = 0,// 空状态,一般默认设置成这个状态WL_NO_SSID_AVAIL,// 当前输入的wifi名称是错的WL_SCAN_COMPLETED,// 扫描附近的wifi完成WL_CONNECTED,// 成功连到wifi,本节用到的状态WL_CONNECT_FAILED,// 连到wifi失败了WL_CONNECTION_LOST,// wifi掉线了WL_DISCONNECTED// wifi没连上
常用的是黑色加粗的状态,其他的状态可根据需要灵活使用
IPAddress ip = WiFi.localIP()
这个函数用来获取WiFi扩展板的本地IP地址,注意要获得IP地址,都需要用IPAddress这个数据类型来定义。
WiFi.macAddress(mac)
这个函数用来获取你WiFi扩展板的MAC地址,存放到mac数组中。
IPAddress subnet = WiFi.subnetMask()
这个函数用来获取WiFi扩展板的子网掩码,存放到IPAddress类型的变量中。
子网很好理解,就是一个大网络包含下的各个子网络,掩码字面意思就是屏蔽,子网掩码就是屏蔽掉右边1格子网的地址,只剩下左边3格主网的地址,屏蔽之后如果发现两台电脑左边3格都一样,那说明大家在一个网段,可以互相访问
IP地址中的前3个字节表示网络号,后一个字节既表明子网号,又说明主机号,还说明两个IP地址是否属于同一个网段。
如果属于同一网络区间,这两个地址间的信息交换就不通过路由器。如果不属同一网络区间,也就是子网号不同,两个地址的信息交换就要通过路由器进行。
IPAddress gateway = WiFi.gatewayIP()
这个函数用来获取网关的IP地址,并存放到IPAddress类型的变量中。
网关说白了就是你的路由器,专业一点的解释是两个不在同一网段的网络相互通信的关口,它本质上也是一个IP地址,实现数据包的转发功能,所以很简单,网关地址就是路由器的IP地址,一般都是192.168.1.1,如果你设置过路由器密码,就肯定知道这个地址,如果没设置过,那火速去试一把。
WiFi.SSID()
这个函数用来获取你的WiFi扩展板当前连接到的WiFi名称。
SSID一听好专业,好高大上啊,度娘一下才知道SSID不就是wifi的网络名称嘛,见下图,是不是很熟悉。
SSID是Service Set Identifier的缩写,译为:服务集标识。
WiFi.BSSID(bssid)
这个函数用来获取你路由器的MAC地址
它返回的是有6个元素的字节数组,也就是有48位比特,换算成十六进制就是有12位。
或者直接把你的路由器翻过来就可以看到路由器的MAC地址,如下图:
WiFi.RSSI()
这个函数用来获取你无线路由器的信号强度,RSSI是Received Signal Strength Indication的缩写,单位是dBm
WiFi.encryptionType()
这个函数用来获取当前网络的加密类型
它的返回值有下面几种:
TKIP (WPA) = 2
WEP = 5
CCMP (WPA) = 4
NONE = 7
AUTO = 8
名词解释:wifi加密类型
wifi加密类型常见有四种:
WEP
WPA-PSK [TKIP]
WPA2-PSK [AES]
WPA-PSK + WPA2-PSK
在你设置WiFi密码的时候肯定纠结过选哪种加密方式,我也没啥好建议,只要不用WEP加密就好了
Serial.print()
Serial.println()
这两个函数的功能和区别不用多说了吧,后者就是比前者增加了换行功能,其实我一直认为那个不是println,而是print/n,只不过特殊字符不能放到命名函数,所以就直接写成了ln
0 0
- 示例1 ConnectNoEncryption
- C#示例1
- SEH示例代码1
- 回溯法示例1
- [LzmTW].[String]示例1
- ruby入门示例1
- ruby入门示例1
- dotnetcharting使用示例(1)
- Makefile示例1
- 委托示例代码(1)
- python3代码示例1
- 命令模式示例1
- 示例程序1-2
- 示例程序1-3
- SQLLoader学习示例1
- PostgreSQL9.1 PITR示例
- HttpClient4.1 使用示例
- cmake 示例1
- asfsafasfsafasf
- Backbone.js
- 二分匹配模板
- Android Service组件
- Win7系统下使用CCS 5.2.1 进行软件仿真
- 示例1 ConnectNoEncryption
- safsafasfasfasfasf
- AndroidJNI 通过C++调用JAVA
- 多态,动态类型和动态绑定
- asfasfasfasfasfasf
- 大数阶乘
- qt 异常举例
- 示例2 ConnectWithWEP
- 54564564564556