WLAN - 无线局域网

无线局域网络英文全名:Wireless Local Area Networks;简写为: WLAN。它是相当便利的数据传输系统,它利用射频(Radio Frequency; RF)的技术,使用电磁波,取代旧式碍手碍脚的双绞铜线(Coaxial)所构成的局域网络,在空中进行通信连接,使得无线局域网络能利用简单的存取架构让用户透过它,达到“信息随身化、便利走天下”的理想境界。WLAN的实现协议有很多,其中最为著名也是应用最为广泛的当属无线保真技术--Wi-Fi,它实际上提供了一种能够将各种终端都使用无线进行互联的技术,为用户屏蔽了各种终端之间的差异性。具体可参考https://baike.baidu.com/item/%E6%97%A0%E7%BA%BF%E5%B1%80%E5%9F%9F%E7%BD%91?fromtitle=WLAN&fromid=612199或https://baike.sogou.com/v8603.htm?fromTitle=WLAN。

Java包

tijos.framework.platform.wlan

WiFi设置 - TiWiFi

TiWiFi中包含了所有与WIFI相关的操作和设置, 支持Station和Station + softAP两种模式, 当打开softAP模式时,允许其它WLAN设备连接到此AP, 一般用于设备设置等功能。

TiWiFi为单例,在操作网络时可通过getInstance获得实例并调用相应的方法。

主要方法如下:

方法 说明
TiWiFi getInstance() 获取WiFi实例
void startup(int timeout) 启动WiFi并连接AP, timeout以秒为单位
void shutdown() 关闭WiFi
void startupSoftAP(boolean hidden) 启动WiFi SoftAP功能,WiFi必须已经开启, hidden为true时, SSID将不广播
void shutdownSoftAP() 关闭WiFi SoftAP
void changeSSID(String SSID) 更改WiFi的SSID,更改后重新启动WiFi生效
void changeSoftAPSSID(String SSID) 更新softAP的SSID,更改后重新启动SoftAP生效
String getSSID() 获取WiFi将连接的SSID名称
String getSoftAPSSID() 获取SoftAP广播的SSID名称
void changePassword(String password) 更改WiFi的Password,更改后重启WiFi生效
void changeSoftAPPassword(String password) 更改SoftAP密码,更改后重启SoftAP生效
void setStaticAddress(String localAddress, String gateWayAddress, int subnetPrefix) 设置WiFi的静态地址,设置后重启生效, 如果任何一个参数为null将使用DHCP动态IP地址,默认为DHCP动态IP
void setSoftAPStaticAddress(String localAddress, String gateWayAddress, int subnetPrefix) 设置SoftAP的静态地址, 如果任何一个参数为null将使用默认IP地址
String getAddress() 获取当前IP地址
String getSoftAPAddress() 获取SoftAP当前IP地址
void smartConfig() 启动WIFI Smart Config, 可通过手机来进行无线WIFI快速设置

TiWiFi类中他方法的技术说明请参考TiJOS Framework说明文档。

WiFi设置例程

WIFI设置支持手动设置和自动设置, 手动设置可通过TiDevManager工具进行设置, 自动设置则需要通过SmartConfig的方式进行, SmartConfig一种WiFi快连技术,可通过手机APP对WIFI设备直接进行IP地址配置,具体细节请搜索SmartConfig相关资料

自动配置

现在的智能硬件产品,以WiFi品类居多,这些WiFi硬件没有人机交互界面,但设备要上网肯定要配置SSID等相关信息,于是WiFi快连应运而生, SmartConfig就是目前使用最广泛的WIFI快连技术。 在TiJOS中可通过TiWiFi类中的smartConfig接口来完成相应的配置, 在实际使用时,可接合外部触发来启动SmartConfig, 如按键,等等。

在使用自动配置时,需要在手机端安装相应的APP, 请从以下路径安装相应的APP - https://github.com/EspressifApp/EsptouchForAndroid 自动配置成功后, 下次启动时会自动连接该WIFI路由, 因此只需设置一次即可。

...
 //请从手机打开SmartConfig软件,
  //启动smartConfig, 超时30秒, 出错或超时会抛出相应的异常
  TiWiFi.getInstance().smartConfig(30);
  System.out.println(" SSID: " + TiWiFi.getInstance().getSSID());
  System.out.println(" Password: " + TiWiFi.getInstance().getPassword());

...

手动配置

WiFi连接目标AP,WiFi相关设置也可从TiDevManager中设置,这样就无需在代码设置WiFi连接参数

...
//更改AP的SSID和密码,设置一次即可,也可通过TiDeviceManager工具设置,本设置掉电不丢失
TiWiFi.getInstance().changeSSID("TPLink-123");
TiWiFi.getInstance().changePassword("12345678");
...
//启动WLAN,连接目标AP,超时10秒
int status = TiWiFi.getInstance().startup(10);
if(status == -1) {
    System.out.println("connect timeout.");
    return ;
}
if(status == -2) {
    System.out.println("connect fail.");
    return ;    
}
System.out.println("connect success.");
...

WiFi连接目标AP,IP地址静态设置。

...
//更改AP的SSID和密码,设置一次即可,也可通过TiDeviceManager工具设置,本设置掉电不丢失
...
TiWiFi.getInstance().changeSSID("TPLink-123");
TiWiFi.getInstance().changePassword("12345678");

//设置静态IP,网关,子网掩码
TiWiFi.getInstance().setStaticAddress("192.168.1.100", "192.168.1.1", 24);
...
//启动WiFi,连接目标AP,超时10秒
try{
  TiWiFi.getInstance().startup(10);
}
catch(IOException ex) {
    ex.printStackTrace(); //connect fail 
}

System.out.println("connect success.");
...

WiFi连接目标AP,IP地址动态分配,同时启动SoftAP。

...
//更改AP的SSID和密码,设置一次即可,也可通过TiDeviceManager工具设置,本设置掉电不丢失
...
TiWiFi.getInstance().changeSSID("TPLink-123");
TiWiFi.getInstance().changePassword("12345678");

//更改SoftAP的SSID和密码,设置一次即可,本设置掉电不丢失
TiWiFi.getInstance().changeSoftAPSSID("TiJOS-SoftAP");
TiWiFi.getInstance().changeSoftAPPassword("12345678", true);
...
try{
  //启动WLAN,连接目标AP,超时10秒
  TiWiFi.getInstance().startup(10);
  //不论目标AP是否连接成功,都启动SoftAP, SSID不隐藏
  TiWiFi.getInstance().startupSoftAP(false);
}
catch(IOException ex){
  ex.printStackTrace(); //connect fail 
}  
System.out.println("connect success.");