network
— 网络配置¶
该模块提供网络驱动程序和路由配置。特定硬件的网络驱动程序可以在此模块中使用,并用于配置硬件网络接口。然后可通过socket模块使用配置的接口。要使用该模块,必须安装固件的网络构建。
例如:
# connect/ show IP config a specific network interface 配置一个特定的网络接口
# see below for examples of specific drivers 特定驱动示例见下
import network
import utime
nic = network.Driver(...)
if not nic.isconnected():
nic.connect()
print("Waiting for connection...")
while not nic.isconnected():
utime.sleep(1)
print(nic.ifconfig())
# now use usocket as usual 现在正常使用socket
import usocket as socket
addr = socket.getaddrinfo('micropython.org', 80)[0][-1]
s = socket.socket()
s.connect(addr)
s.send(b'GET / HTTP/1.1\r\nHost: micropython.org\r\n\r\n')
data = s.recv(1000)
s.close()
常见的网络适配器接口¶
本节描述针对不同硬件的MicroPython不同端口实现的所有网络接口类的一个(隐含的)抽象基类。
这也就意味着MicroPython实际上不会提供 AbstractNIC
类,但是正如以下部分中所述,任何实际的NIC类实现此处所述的方法。
-
class
network.
AbstractNIC
(id=None, ...)¶
将一个网络接口对象实例化。参数取决于网络接口。若同种类接口超过一个,则首个参数应为 id
。
-
AbstractNIC.
active
([is_active])¶ 若布尔值参数被传递,则激活(“up”)或禁用(“down”)网络接口。否则若未提供参数,则查询当前状态。 大多数其他方法需要一个激活接口(在未激活接口上的回调行为尚未定义)。
-
AbstractNIC.
connect
([service_id, key=None, *, ...])¶ 将接口连接到网络。该方法为可选的,且仅适用于不为“总是连接”的接口。若未给定任何参数, 则连接到默认设备(或唯一设备)。若给定一个参数,即为连接的设备的主要标识符。 可能附带一个访问该服务的密钥(密码)。根据网络介质类型和/或特定设备,可有更多任意关键字参数。 参数可用于:a)指定可选的服务标识符种类;b)提供额外的连接参数。对于不同媒介种类,有不同的预定义/推荐参数集,其中:
- WiFi: 由BSSID(MAC地址)连接的bssid密钥,而非访问点名称
-
AbstractNIC.
disconnect
()¶ 断开网络连接。
-
AbstractNIC.
isconnected
()¶ 若连接到网络,则返回
True
,否则返回False
。
-
AbstractNIC.
scan
(*, ...)¶ 扫描可用的网络设备/连接。返回一个发现的设备参数的元组列表。对于不同的网络媒介,有不同的预定义/推荐元组格式,其中:
- WiFi: (ssid, bssid, channel, RSSI, authmode, hidden). 可能有特定于某一设备的进一步的域。
该函数可能接受附加关键字参数以过滤扫描结果(例如:在特定通道上扫描某一种特定服务等), 并影响扫描持续时间和其他参数。在可能之处,参数名称应与connect()中的相匹配。
-
AbstractNIC.
status
([param])¶ 返回接口的具体状态,值取决于网络介质/技术。
-
AbstractNIC.
ifconfig
([(ip, subnet, gateway, dns)])¶ 获取/设置IP-层的网络接口参数:IP地址、子网掩码、网关。DNS服务器。当无参数调用时, 该方法返回一个包含上述信息的4元组。设置上述值,请使用所需信息传递一个4元组。例如:
nic.ifconfig(('192.168.0.4', '255.255.255.0', '192.168.0.1', '8.8.8.8'))
-
AbstractNIC.
config
('param')¶ -
AbstractNIC.
config
(param=value, ...) 获取或设置网络接口参数。这些方法允许处理标准IP配置(由
ifconfig()
处理)外的额外参数。 这些参数包括特定于网络和特定于硬件的参数以及状态值。设置参数,应使用关键字参数语法, 且多个参数应一次设置。查询时参数名称应作为一个字符串查询,且一次只能查询一个参数:# Set WiFi access point name (formally known as ESSID) and WiFi channel 设置WiFi访问点名称(常称为ESSID)和WiFi通道 ap.config(essid='My AP', channel=11) # Query params one by one 一个一个查询参数 print(ap.config('essid')) print(ap.config('channel'))
特定network网络类实现¶
下面的具体类实现了AbstractNIC接口,并提供了一种控制各种网络接口的方法。
WINC
类用于控制wifi扩展板。用法示例:
import network wlan = network.WINC() wlan.connect("SSID", "KEY") wlan.ifconfig()
- class
network.
WINC
([mode=MODE_STATION])¶创建一个WINC驱动对象,并连接使用I/O引脚P1, P2, P3, P6, P7,P8的wifi扩展板。
mode
控制WINC模块运行的模式:
network.WINC.MODE_STATION
模块作为客户端连接到访问点。这是默认模式。
network.WINC.MODE_AP
该模块将创建一个AP(访问点)并接受来自客户端的连接。
注解
设置AP模式后,必须调用start_ap()方法来配置AP。
此外,WINC1500的AP实现有一些限制:
- 一次只能连接一个客户端。
- 仅支持OPEN或WEP安全性。
- WiFi模块FW中存在一个错误,当客户端断开任何绑定套接字丢失时(它们只是停止工作)。 解决方法是,为服务器套接字设置超时以强制它引发异常,然后重新打开它(请参阅示例脚本)。
network.WINC.MODE_FIRMWARE:
此模式支持WiFi模块固件更新。
注解
除非您知道自己在做什么,否则不要使用,模块附带最新的固件更新,无需更新固件。
winc.
connect
(ssid[, key=None[, security=WPA_PSK]])¶使用带有安全性
security
的密钥key
连接到一个带有ssid
的wifi网络。 连接到网络后,使用 usocket – socket模块 模块来打开TCP/UDP端口,以发送与接收数据。注解
返回此方法需要一些时间。
winc.
start_ap
(ssid[, key=None[, security=OPEN[, channel=1]]])¶在AP模式下运行时,必须在创建WINC对象以配置和启动AP后调用此方法。
- ssid: AP SSID (必须设置).
- key: AP加密密钥。仅在安全性为WEP时才需要密钥。
- security: AP security mode (only OPEN or WEP are supported).
- channel: WiFi通道, 若有另外一个AP运行在此通道中,则改变此通道。
winc.
disconnect
()¶断开与wifi网络的连接。
winc.
isconnected
()¶若连接到访问点,并获取了一个IP地址,则返回True。
winc.
connected_sta
()¶此方法返回包含已连接客户端IP地址的列表。
winc.
wait_for_sta
(timeout)¶此方法阻止并等待客户端连接。 如果timeout为0,则将永久阻止。 此方法返回包含已连接客户端的IP地址的列表。
winc.
ifconfig
()¶Returns a list containing:
- [0]: RSSI - 接收信号强度指示器(int)
- [1]: 权限类型(见常量)
- [2]: 设置服务标识符字符串(SSID)
- [3]: MAC地址字符串 (XX:XX:XX:XX:XX:XX) (BSSID)
- [4]: IP地址字符串 (XXX.XXX.XXX.XXX)
当连接到网络。
winc.
scan
()¶返回包含的列表:
- [0]: 通道号(int)
- [1]: RSSI - 接收信号强度指示器 (int)
- [2]: 权限类型(见常量)
- [3]: MAC地址字符串 (XX:XX:XX:XX:XX:XX) (BSSID)
- [4]: 设置服务标识符字符串(SSID)
您无需连接即可调用。
winc.
rssi
()¶返回当前连接的网络的接收信号强度指示器(int)。
winc.
fw_version
()¶返回一个包含wifi扩展板固件版本数字的元组。
- [0]: 固件主版本号(int)
- [1]: 固件次版本号(int)
- [2]: 固件补丁版本号int)
- [3]: 驱动主版本号(int)
- [4]: 驱动次版本号 (int)
- [5]: 驱动补丁版本号 (int)
- [6]: 硬件版本号- 芯片ID (int)
winc.
fw_dump
(path)¶将wifi扩展板固件转储到
path
的二进制文件中。 您必须将模块置于固件模式才能使用它。
winc.
fw_update
(path)¶使用在
path
中找到的二进制图像编程wifi扩展板。 您必须将模块置于固件模式才能使用它。
winc.
OPEN
¶连接到一个开放的wifi网络。
winc.
WEP
¶连接到基于WEP的密码保护网络。
winc.
WPA_PSK
¶连接到基于WEP/PSK的密码保护网络。
winc.
MODE_STA
¶以station模式启动(即连接到网络)。
winc.
MODE_AP
¶从AP模式开始(即成为网络)。
-
winc.
MODE_FIRMWARE
¶ 在固件更新模式下设置。