人若无名 便可潜心练剑.|

hazy1k

园龄:7个月粉丝:14关注:0

2025-02-23 10:39阅读: 5评论: 0推荐: 0

第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()

本文作者:hazy1k

本文链接:https://www.cnblogs.com/hazy1k/p/18731894

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   hazy1k  阅读(5)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起