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
。
network.
active
([is_active])¶若布尔值参数被传递,则激活(“up”)或禁用(“down”)网络接口。否则若未提供参数,则查询当前状态。 大多数其他方法需要一个激活接口(在未激活接口上的回调行为尚未定义)。
network.
connect
([service_id, key=None, *, ...])¶将接口连接到网络。该方法为可选的,且仅适用于不为“总是连接”的接口。若未给定任何参数, 则连接到默认设备(或唯一设备)。若给定一个参数,即为连接的设备的主要标识符。 可能附带一个访问该服务的密钥(密码)。根据网络介质类型和/或特定设备,可有更多任意关键字参数。 参数可用于:a)指定可选的服务标识符种类;b)提供额外的连接参数。对于不同媒介种类,有不同的预定义/推荐参数集,其中:
- WiFi: 由BSSID(MAC地址)连接的bssid密钥,而非访问点名称
network.
disconnect
()¶断开网络连接。
network.
isconnected
()¶若连接到网络,则返回
True
,否则返回False
。
network.
scan
(*, ...)¶扫描可用的网络设备/连接。返回一个发现的设备参数的元组列表。对于不同的网络媒介,有不同的预定义/推荐元组格式,其中:
- WiFi: (ssid, bssid, channel, RSSI, authmode, hidden). 可能有特定于某一设备的进一步的域。
该函数可能接受附加关键字参数以过滤扫描结果(例如:在特定通道上扫描某一种特定服务等), 并影响扫描持续时间和其他参数。在可能之处,参数名称应与connect()中的相匹配。
network.
status
()¶返回接口的具体状态,值取决于网络介质/技术。
network.
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'))
network.
config
('param')¶network.
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')) # Extended status information also available this way 扩展状态信息也用此方式 print(sta.config('rssi'))
CC3K 类¶
此类为CC3000 WiFi模块提供驱动程序。 用法示例:
import network
nic = network.CC3K(pyb.SPI(2), pyb.Pin.board.Y5, pyb.Pin.board.Y4, pyb.Pin.board.Y3)
nic.connect('your-ssid', 'your-password')
while not nic.isconnected():
pyb.delay(50)
print(nic.ifconfig())
# now use socket as usual 现在像往常一样使用socket
...
为使此例运行,CC3000模块需包含以下连接:
- MOSI 连接到 Y8
- MISO 连接到 Y7
- CLK 连接到 Y6
- CS 连接到 Y5
- VBEN 连接到 Y4
- IRQ 连接到 Y3
使用其他SPI总线并将其他引脚用于CS、VBEN和IRQ都是可行的。
构造函数¶
-
class
network.
CC3K
(spi, pin_cs, pin_en, pin_irq)¶ 创建一个CC3K驱动对象,使用给定SPI总线和引脚初始化CC3000模块,并返回CC3K对象。
参数为:
- spi is an SPI object 是一个SPI对象,即CC3000连接到的SPI总线(MOSI、MISO和CLK引脚)。
- pin_cs is a Pin object 是一个引脚对象,即连接到CC3000 CS引脚的引脚。
- pin_en is a Pin object 是一个引脚对象,即连接到CC3000 VBEN引脚的引脚。
- pin_irq is a Pin object 是一个引脚对象,即连接到CC3000 IRQ引脚的引脚。
所有对象将由驱动初始化,因此无需您手动进行。例如,您可使用:
nic = network.CC3K(pyb.SPI(2), pyb.Pin.board.Y5, pyb.Pin.board.Y4, pyb.Pin.board.Y3)
方法¶
-
cc3k.
connect
(ssid, key=None, *, security=WPA2, bssid=None)¶ 使用给定SSID和其他安全参数连接到WiFi访问点。
-
cc3k.
disconnect
()¶ 断开与WiFi访问点的连接。
-
cc3k.
isconnected
()¶ 若连接到访问点且有一个有效IP地址,则返回True,否则则返回False。
-
cc3k.
ifconfig
()¶ 使用(ip、子网掩码、网关、DNS服务器、DHCP服务器、MAC地址、SSID)返回一个7元组。
-
cc3k.
patch_version
()¶ 返回CC3000上的补丁程序(固件)的版本。
-
cc3k.
patch_program
('pgm')¶ 将当前固件上传到CC3000。为使上传正常进行,您必须将“pgm”作为首个参数传递。
WIZNET5K 类¶
该类允许您控制基于W5200和W5500芯片组的WIZnet5x00以太网适配器(仅W5200经过测试)。
用法示例:
import network
nic = network.WIZNET5K(pyb.SPI(1), pyb.Pin.board.X5, pyb.Pin.board.X4)
print(nic.ifconfig())
# now use socket as usual 现在像往常一样使用socket
...
为使此例运行,WIZnet5x00模块需具有以下连接:
- MOSI 连接到 X8
- MISO 连接到 X7
- SCLK 连接到 X6
- nSS 连接到 X5
- nRESET 连接到 X4
使用其他SPI总线并将其他引脚用于nSS和nRESET都是可行的.
构造函数¶
-
class
network.
WIZNET5K
(spi, pin_cs, pin_rst)¶ 创建一个WIZNET5K驱动对象,使用给定SPI总线和引脚初始化WIZnet5x00模块,并返回WIZNET5K对象。
参数为:
- spi is an SPI object 是一个SPI对象,即WIZnet5x00连接到的SPI总线(MOSI、MISO和CLK引脚)。
- pin_cs is a Pin object 是一个引脚对象,即连接到WIZnet5x00 nSS引脚的引脚。
- pin_rst is a Pin object 是一个引脚对象,即连接到WIZnet5x00 nRESET引脚的引脚。
所有引脚都由驱动初始化,因此无需您手动进行。例如,您可使用:
nic = network.WIZNET5K(pyb.SPI(1), pyb.Pin.board.X5, pyb.Pin.board.X4)
方法¶
-
wiznet5k.
isconnected
()¶ 如果物理以太网链路连接起来,则返回
True
。 否则返回False
。
-
wiznet5k.
ifconfig
([(ip, subnet, gateway, dns)])¶ 获取/设置IP地址、子网掩码、网关和DNS。
当无参数调用时,此类函数返回一个带有上述信息的4元组。
设置上述值,请使用所需信息传递一个4元组。例如:
nic.ifconfig(('192.168.0.4', '255.255.255.0', '192.168.0.1', '8.8.8.8'))
-
wiznet5k.
regs
()¶ 转储WIZnet5x00寄存器。用于调试。