第20章 无线网络
第二十章 无线网络
1. 连接WIFI
1.1 STA模式
STA模式(Station):庐山派作为客户端连接到现有无线网络
network.WLAN(network.STA_IF): 初始化一个 WLAN 对象,并设置为STA 模式。(站模式,可以连接到外部 WiFi 接入点)sta.active(bool): 激活或关闭 STA 模式。当传入True时激活,传入False时关闭。如果不带参数调用,则返回当前激活状态。sta.status(): 返回 STA 的当前状态,如是否已连接到 AP。当不传参数时,返回详细的连接信息,Sta模式时,返回rssi: 连接信号质量和ap: 连接的热点名称sta.connect(ssid, password): 尝试连接到指定的 SSID 和密码的 AP。此方法不返回是否连接成功的直接结果,但可以通过检查sta.status()或sta.isconnected()来获取连接状态。sta.ifconfig(): 返回 STA 的 IP 配置信息,如 IP 地址、子网掩码、网关和 DNS 服务器等。sta.isconnected(): 返回True,表示已经成功连接到Wi-Fi;返回False,表示未连接。sta.disconnect(): 断开与当前Wi-Fi接入点的连接。
1.2 基础示例
import network, time
SSID = "iqoo"
PASSWORD = "12345678"
def sta_test():
sta = network.WLAN(network.STA_IF) # 初始化STA模式
if not sta.active():
sta.active(True) # 使能STA模式
print("WIFI模块激活状态:", sta.active())
print("连接状态:", sta.status())
# 扫描周围WiFi
wifi_list = sta.scan()
for wifi in wifi_list:
ssid = wifi.ssid
rssi = wifi.rssi
print(f"SSID: {ssid}, 信号强度: {rssi}dBm")
print(f"正在连接到 {SSID}....")
sta.connect(SSID, PASSWORD) # 连接到指定的WiFi
max_wait = 5
while max_wait > 5:
if sta.isconnected():
break
max_wait -= 1
time.sleep(1)
sta.connect(SSID, PASSWORD) # 连接到指定的WiFi
print("剩余等待次数:", max_wait, "次")
while sta.ifconfig()[0] == '0.0.0.0':
pass
if sta.isconnected():
print("WIFI连接成功!")
# 打印信息
ip_info = sta.ifconfig()
print(f"IP地址: {ip_info[0]}")
print(f"子网掩码: {ip_info[1]}")
print(f"网关: {ip_info[2]}")
print(f"DNS: {ip_info[3]}")
else:
print("WIFI连接失败!")
sta_test()
while True:
time.sleep(0.5)
2. 创建热点
2.1 AP模式
AP模式(Access Point):庐山派作为热点供其他设备连接,不过庐山派自己也没有连接如网络,所以其他设备连入庐山派的热点也无法上网,但是可以和庐山派互相通讯。
network.WLAN(network.AP_IF): 初始化一个 WLAN 对象,并设置为 AP 模式。ap.active(bool): 激活或关闭 AP 模式。当传入True时激活,传入False时关闭。如果不带参数调用,则返回当前激活状态。ap.config(ssid=None, key=None ...): 配置 AP 的参数,如 SSID、密码、频道等。如果不带任何参数调用,则返回当前配置。ap.status(): 返回 AP 的当前状态。
2.2 基础示例
import network, time
AP_SSID = "K230_AP"
AP_KEY = "12345678"
def ap_test():
ap = network.WLAN(network.AP_IF)
if not ap.active():
ap.active(True)
print("AP模块激活状态:", ap.active())
ap.config(ssid=AP_SSID, key=AP_KEY)
print("\n热点已经创建:")
print(f"SSID: {AP_SSID}")
print(f"Channel: {AP_KEY}")
time.sleep(3)
ip_info = ap.ifconfig()
print(f"IP地址: {ip_info[0]}")
print(f"子网掩码: {ip_info[1]}")
print(f"网关: {ip_info[2]}")
print(f"DNS: {ip_info[3]}")
while True:
# 获取当前连接的客户端数量
clients = ap.status('stations')
print(f"\n当前连接的客户端数量: {len(clients)}")
time.sleep(0.5)
ap_test()

浙公网安备 33010602011771号