From 90bea3961951bb065297740bddd5a492c8225d12 Mon Sep 17 00:00:00 2001 From: "jayceon.fu" Date: Tue, 14 Feb 2023 11:18:40 +0800 Subject: [PATCH 1/2] =?UTF-8?q?dataCall=E3=80=81checkNet=E4=BB=A5=E5=8F=8A?= =?UTF-8?q?wifiScan=E6=A8=A1=E5=9D=97API=E6=96=87=E6=A1=A3=E6=8F=90?= =?UTF-8?q?=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../checkNet.md" | 85 ++++ .../dataCall.md" | 413 ++++++++++++++++++ .../wifiScan.md" | 189 ++++++++ 3 files changed, 687 insertions(+) create mode 100644 "docs/API_reference/zh/QuecPython\347\261\273\345\272\223/checkNet.md" create mode 100644 "docs/API_reference/zh/QuecPython\347\261\273\345\272\223/wifiScan.md" diff --git "a/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/checkNet.md" "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/checkNet.md" new file mode 100644 index 00000000..07a76e00 --- /dev/null +++ "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/checkNet.md" @@ -0,0 +1,85 @@ +# `checkNet` - 网络检测 + +checkNet模块提供了方法来检测模组的网络状态是否已经就绪,同时提供了网络异常的排查方法与步骤。 + + + +## 方法 + +### `checkNet.waitNetworkReady` + +```python +checkNet.waitNetworkReady(timeout) +``` + +等待模组网络就绪。该方法会依次检测SIM卡状态、模组网络注册状态和PDP Context激活状态;在设定的超时时间之内,如果检测到PDP Context激活成功,会立即返回,否则直到超时才会退出。 + +**参数描述:** + +* `timeout` - 超时时间,整型值,范围1~3600秒,默认60秒。 + +**返回值描述:** + +返回一个元组,格式为:`(stage, state)` + +| 参数 | 类型 | 含义 | +| ----- | ---- | ------------------------------------------------------------ | +| stage | 整形 | 表示当前正在检测什么状态:
1 - 正在检测SIM卡状态
2 - 正在检测网络注册状态
3 - 正在检测PDP Context激活状态 | +| state | 整形 | 根据stage值,来表示不同的状态,具体如下:
stage = 1时,state表示 SIM卡的状态,范围0~21,每个值的详细说明,请参考`sim.getStatus()`方法的返回值说明;
stage = 2时,state表示网络注册状态,范围0~11,每个状态值的详细说明,请参考`net.getState()`方法的返回值说明;
stage = 3时,state表示PDP Context激活状态,0表示没有激活成功,1表示激活成功。 | + +如果网络已经就绪,应该返回(3,1),如果返回值不是(3,1),可参考如下说明来排查定位问题: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
stagestate说明
10说明没插卡,或者卡槽松动,需要用户去检查确认;
其他值请参考官方wiki文档中关于sim卡状态值的描述,确认sim卡当前是哪种状态;
2-1这种情况说明在超时时间内,获取模组网络注册状态的API一直执行失败,在确认SIM卡可正常使用且能正常被模组识别的前提下,可联系我们的FAE反馈问题;
0或2这种情况说明在超时时间内,模组一直没有注网成功,这时请按如下步骤排查问题:
(1)首先确认SIM卡状态是正常的,通过 sim 模块的 sim.getState() 接口获取,为1说明正常;
(2)如果SIM卡状态正常,确认当前信号强度,通过net模块的 net.csqQueryPoll() 接口获取,如果信号强度比较弱,那么可能是因为当前信号强度较弱导致短时间内注网不成功,可以增加超时时间或者换个信号比较好的位置再尝试;
(3)如果SIM卡状态正常,信号强度也较好,请确认使用的SIM卡是否已经欠费;
(4)如果SIM卡也未欠费,请联系我们的FAE反馈问题;最好将相应SIM卡信息,比如哪个运营商的卡、什么类型的卡、卡的IMSI等信息也一并提供,必要时可以将SIM卡寄给我们来排查问题;
其他值请参考官方Wiki文档中 net.getState() 接口的返回值说明,确认注网失败原因;
30这种情况说明在超时时间内,PDP Context一直没有激活成功,请按如下步骤尝试:
(1)通过 sim 模块的 sim.getState() 接口获取sim卡状态,为1表示正常;
(2)通过 net 模块的 net.getState() 接口获取注网状态,为1表示正常;
(3)手动调用 dataCall.activate(profileID) 接口尝试激活,看看能否激活成功;
(4)如果手动激活成功了,但是开机自动激活失败,可联系我司相关人员协助分析。
1这是正常返回情况,说明网络已就绪,可进行网络相关业务操作。
+ + + +**示例:** + +```python +import checkNet + +if __name__ == '__main__': + stage, state = checkNet.waitNetworkReady(30) + if state == 3 and state == 1: + print('Network connection successful.') + else: + print('Network connection failed, stage={}, state={}'.format(stage, state)) +``` + diff --git "a/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/dataCall.md" "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/dataCall.md" index e69de29b..c7c9240c 100644 --- "a/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/dataCall.md" +++ "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/dataCall.md" @@ -0,0 +1,413 @@ +# `dataCall` - 拨号功能 + +拨号,指的是PDP Context的激活操作,激活成功后,核心网的PDN网关才会分配一个IP地址给模组。 + +`dataCall`模块包含了PDP Context配置和获取、激活、去激活以及获取模组的IP信息等功能。模组烧录QuecPython的固件,开机后,默认会自动执行拨号。如果用户配置了APN,则使用用户配置的APN信息进行拨号;否则使用默认APN进行拨号。 + + + +> 强烈建议用户使用不同运营商的SIM卡时,配置对应运营商的APN信息;如果不配置或者配置错误,可能会导致模组注网失败或拨号失败,模组获取不到IP地址,无法上网。配置APN的方式,参考`dataCall.setPDPContext`方法。 + + + +**示例:** + +```python +import dataCall +from misc import Power + +# 用户需要配置的APN信息,根据实际情况修改 +usrConfig = {'apn': '3gnet', 'username': '', 'password': ''} + +# 获取第一路的APN信息,确认当前使用的是否是用户指定的APN +pdpCtx = dataCall.getPDPContext(1) +if pdpCtx != -1: + if pdpCtx[1] != pdpConfig['apn']: + # 如果不是用户需要的APN,使用如下方式配置 + ret = dataCall.setPDPContext(1, 0, pdpConfig['apn'], pdpConfig['username'], pdpConfig['password'], 0) + if ret == 0: + print('APN 配置成功。') + # 重启后按照配置的信息进行拨号 + Power.powerRestart() + else: + print('APN 配置失败。') + else: + print('APN 已经配置过了。') +else: + print('获取PDP Context失败。') +``` + + + +## 方法 + +### `dataCall.setPDPContext` + +``` +dataCall.setPDPContext(profileID, ipType, apn, username, password, authType) +``` + +配置PDP Context相关信息,配置信息掉电保存。拨号时使用该方法配置的参数进行PDP Context激活。 + +**参数描述:** + +* `profileID` - PDP上下文ID,整型值,范围1~3,一般设置为1。 +* `ipType` - IP协议类型,整型值,取值范围见下表: + +| 值 | 含义 | +| ---- | ---------- | +| 0 | IPv4 | +| 1 | IPv6 | +| 2 | IPv4和IPv6 | + +- `apn` - 接入点名称,全称Access Point Name,字符串类型,可为空,为空直接写`''`,范围0~64字节。 + +- `username` - 用户名,字符串类型,可为空,为空直接写`''`,范围0~64字节。 + +- `password` - 密码,字符串类型,可为空,为空直接写`''`,范围0~64字节。 + +- `authType` - APN鉴权方式,整形值,取值范围见下表枚举: + +| 值 | 含义 | +| ---- | --------- | +| 0 | 表示无 | +| 1 | PAP | +| 2 | CHAP | +| 3 | PAP和CHAP | + +**返回值描述:** + +返回一个整型值,0表示设置成功,-1表示设置失败。 + + + +> 关于BG77/BG95系列的profileID参数范围,在NB网络制式下,实际只支持1~2。 +> +> 关于authType参数,仅BG77/BG95系列模组支持值3。 +> +> 支持该方法的模组:EC100Y/EC200N/EC600N/EC600S/EC800N/EG912N/EG915N/EC600M/EC800M/EG810M/EC200A/EC200U/EC600U/EG912U/EG915U/EC600G/EC800G/EC600E/EC800E/BG77/BG95系列。 + + + +**示例:** + +```python +>>> import dataCall +>>> dataCall.setPDPContext(1, 0, '3gnet', '', '', 0) +0 +``` + + + +### `dataCall.getPDPContext` + +```python +dataCall.getPDPContext(profileID) +``` + +获取profileID对应的那一路PDP Context相关信息。 + +**参数描述:** + +- `profileID` - PDP上下文ID,整型值,范围1~3。 + + +**返回值描述:** + +获取失败时,返回一个整型值-1;获取成功时,返回一个元组,包含PDP Context相关信息,格式如下: + +`(ipType, apn, username, password, authType)` + +元组参数描述见`dataCall.setPDPContext`方法的参数描述。 + + + +>支持该方法的模组:EC100Y/EC200N/EC600N/EC600S/EC800N/EG912N/EG915N/EC600M/EC800M/EG810M/EC200A/EC200U/EC600U/EG912U/EG915U/EC600G/EC800G/EC600E/EC800E/BG77/BG95系列。 + + + +**示例:** + +```python +>>> import dataCall +>>> dataCall.getPDPContext(1) +(0, '3gnet', '', '', 0) +``` + + + +### `dataCall.setAutoActivate` + +```python +dataCall.setAutoActivate(profileID, enable) +``` + +设置profileID指定的那一路开机是否自动进行PDP Context激活。 + +**参数描述:** + +- `profileID` - PDP上下文ID,整型值,范围1~3。 + +- `enable` - 控制模组是否在开机时自动进行PDP Context激活,整型值,0表示关闭,1表示使能。 + + + +>如果用户没有使用`dataCall.setAutoActivate`方法和`dataCall.setAutoConnect`配置过,则默认开机对profileID为1的那一路进行自动激活和使能重连;否则按照用户的配置执行。 +> +>支持该方法的模组:EC100Y/EC200N/EC600N/EC600S/EC800N/EG912N/EG915N/EC600M/EC800M/EG810M/EC200A/EC200U/EC600U/EG912U/EG915U/EC600G/EC800G/EC600E/EC800E/BG77/BG95系列。 + + + +**示例:** + +```python +>>> import dataCall +>>> dataCall.setAutoActivate(1, 0) # 关闭profileID为1的那一路开机自动激活PDP Context功能 +>>> dataCall.setAutoActivate(1, 1) # 开启profileID为1的那一路开机自动激活PDP Context功能 +``` + + + +### `dataCall.setAutoConnect` + +```python +dataCall.setAutoConnect(profileID, enable) +``` + +设置profileID指定的那一路是否使能自动重连功能。自动重连功能是指,因网络异常、信号差等异常场景导致模组与网络断开连接,当异常场景恢复正常后,模组自动进行拨号重连的行为。 + +**参数描述:** + +- `profileID` - PDP上下文ID,整型值,范围1~3。 + +- `enable` - 控制是否使能自动重连,整型值,0表示关闭,1表示使能。 + + + +> 如果用户没有使用`dataCall.setAutoActivate`方法和`dataCall.setAutoConnect`配置过,则默认开机对profileID为1的那一路进行自动激活和使能重连;否则按照用户的配置执行。 +> +> 支持该方法的模组:EC100Y/EC200N/EC600N/EC600S/EC800N/EG912N/EG915N/EC600M/EC800M/EG810M/EC200A/EC200U/EC600U/EG912U/EG915U/EC600G/EC800G/EC600E/EC800E/BG77/BG95系列。 + + + +**示例:** + +```python +>>> import dataCall +>>> dataCall.setAutoConnect(1, 0) # 关闭profileID为1的那一路自动重连功能 +>>> dataCall.setAutoConnect(1, 1) # 开启profileID为1的那一路自动重连功能 +``` + + + +### `dataCall.setDNSServer` + +```python +dataCall.setDNSServer(profileID, simID, priDNS, secDNS) +``` + +配置DNS服务器地址。模组拨号成功后,会自动获取DNS服务器地址,一般无需用户再重新配置。如模组自动获取的DNS服务器地址不可用,可使用该方法重新配置。 + +**参数描述:** + +- `profileID` - PDP上下文ID,整型值,范围1~3。 + +- `simID` - SIM卡卡槽编号,整型值,0表示SIM0,1表示SIM1,目前仅支持0。 + +- `priDNS` - 主要DNS服务器地址,字符串类型。 + +- `secDNS` - 辅助DNS服务器地址,字符串类型。 + +**返回值描述:** + +返回一个整型值,0表示配置成功,-1表示配置失败。 + + + +>支持该方法的模组: +> +>EC100Y/EC200N/EC600N/EC600S/EC800N/EG912N/EG915N/EC200A/EC200U/EC600U/EG912U/EG915U系列。 + + + +**示例:** + +```python +>>> import dataCall +>>> dataCall.setDNSServer(1, 0, "8.8.8.8", "114.114.114.114") +0 +``` + + + +### `dataCall.setCallback` + +```python +dataCall.setCallback(fun) +``` + +注册回调函数。当网络状态发生变化时,如网络断开、拨号重连成功时,会触发注册的回调函数,告知用户网络状态。 + +**参数描述:** + +* `fun` - 回调函数名,回调函数格式以及回调函数的参数说明如下: + +```python +def netCallback(args): + pass +``` + +| 参数 | 类型 | 含义 | +| ------- | ---- | ------------------------------------------------ | +| args[0] | 整形 | PDP上下文ID,表示当前是哪一路PDP网络状态发生变化 | +| args[1] | 整形 | 网络状态,0表示网络断开,1表示网络连接成功 | + +**返回值描述:** + +返回一个整型值,0表示注册成功,-1表示注册失败。 + + + +> 支持该方法的模组: +> +> EC100Y/EC200N/EC600N/EC600S/EC800N/EG912N/EG915N/EC600M/EC800M/EG810M/EC200A/EC200U/EC600U/EG912U/EG915U/EC600G/EC800G/EC600E/EC800E/BG77/BG95系列 + + + +**示例:** + +```python +import dataCall + +def netCallback(args): + pdp = args[0] + datacallState = args[1] + if datacallState == 0: + print('### network {} disconnected.'.format(pdp)) + elif datacallState == 1: + print('### network {} connected.'.format(pdp)) + +dataCall.setCallback(netCallback) +``` + + + +### `dataCall.activate` + +``` +dataCall.activate(profileID) +``` + +激活profileID指定的那一路PDP Context。 + +**参数描述:** + +- `profileID` - PDP上下文ID,整型值,范围1~3。 + + +**返回值描述:** + +返回一个整型值,0表示激活成功,-1表示激活失败。 + + + +> 模组会在开机时自动进行PDP Context激活,一般不需要用户执行激活操作。如用户关闭了开机自动进行PDP Context激活的功能,则需要用户调用此方法来进行PDP Context激活操作。 +> +> 支持该方法的模组:EC100Y/EC200N/EC600N/EC600S/EC800N/EG912N/EG915N/EC600M/EC800M/EG810M/EC200A/EC200U/EC600U/EG912U/EG915U/EC600G/EC800G/EC600E/EC800E/BG77/BG95系列。 + + + +**示例:** + +```python +>>> import dataCall +>>> dataCall.setPDPContext(1, 0, '3gnet', '', '', 0) # 激活之前,应该先配置APN,这里配置第1路的APN +0 +>>> dataCall.activate(1) # 激活第1路 +0 +``` + + + +### `dataCall.deactivate` + +``` +dataCall.deactivate(profileID) +``` + +去激活profileID指定的那一路PDP Context。 + +**参数描述:** + +- `profileID` - PDP上下文ID,整型值,范围1~3。 + +**返回值描述:** + +返回一个整型值,0表示去激活成功,-1表示去激活失败。 + + + +> 支持该方法的模组:EC100Y/EC200N/EC600N/EC600S/EC800N/EG912N/EG915N/EC600M/EC800M/EG810M/EC200A/EC200U/EC600U/EG912U/EG915U/EC600G/EC800G/EC600E/EC800E/BG77/BG95系列。 + + + +### `dataCall.getInfo` + +```python +dataCall.getInfo(profileID, ipType) +``` + +获取拨号信息,包括拨号状态、IP地址、DNS服务器地址等。 + +**参数描述:** + +- `profileID` - PDP上下文ID,整型值,范围1~3。 +- `ipType` - IP协议类型,整型值,取值范围见下表: + +| 值 | 含义 | +| ---- | ---------- | +| 0 | IPv4 | +| 1 | IPv6 | +| 2 | IPv4和IPv6 | + +**返回值描述:** + +获取失败返回整形值-1,获取成功返回一个元组,包含拨号信息,具体说明如下: + +`ipType`为0或1,返回值格式为: + +`(profileID, ipType, [state, reconnect, addr, priDNS, secDNS])` + +| 参数 | 类型 | 含义 | +| --------- | ------ | ------------------------------------------------------------ | +| profileID | 整形 | PDP上下文ID | +| ipType | 整形 | IP协议类型,有如下几个值:
0表示IPv4
1表示IPv6
2表示IPv4和IPv6 | +| state | 整形 | IPv4或IPv6的拨号状态
0表示未拨号或拨号失败
1表示拨号成功 | +| reconnect | 整形 | 拨号重连标志,保留参数,暂未使用 | +| addr | 字符串 | IPv4或IPv6的地址,具体取决于输入参数ipType的值:
ipType为0,addr为IPv4地址
ipType为1,addr为IPv6地址 | +| priDNS | 字符串 | 主要DNS服务器地址 | +| secDNS | 字符串 | 辅助DNS服务器地址 | + +`ipType`为2,返回值格式为: + +`(profileID, ipType, [state, reconnect, ipv4Addr, priDNS, secDNS], [state, reconnect, ipv6Addr, priDNS, secDNS])` + +返回的元组中,第一个列表包含的是IPv4的拨号信息,第二个列表包含的是IPv6的拨号信息。 + + + +>返回值 `(1, 0, [0, 0, '0.0.0.0', '0.0.0.0', '0.0.0.0'])` 表示当前没有拨号或者拨号没有成功。 +> +>支持该方法的模组:EC100Y/EC200N/EC600N/EC600S/EC800N/EG912N/EG915N/EC600M/EC800M/EG810M/EC200A/EC200U/EC600U/EG912U/EG915U/EC600G/EC800G/EC600E/EC800E/BG77/BG95/BC25/BC95系列。 + + + +**示例:** + +```python +>>> import dataCall +>>> dataCall.getInfo(1, 0) +(1, 0, [1, 0, '10.91.44.177', '58.242.2.2', '218.104.78.2']) +``` + + diff --git "a/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/wifiScan.md" "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/wifiScan.md" new file mode 100644 index 00000000..f0edc780 --- /dev/null +++ "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/wifiScan.md" @@ -0,0 +1,189 @@ +# `wifiScan` - WiFi扫描 + +`wifiScan`模块提供了同步和异步两种方式来扫描模组周边的WiFi热点信息。 + +支持`wifiScan`功能的模组: + +EC100Y/EC200N/EC600N/EC600S/EC600M部分系列/EC800M部分系列/EC800N/EG912N/EG915N/EG810M/EC600G/EC800G/EC200U/EC600U部分系列/EG912U/EG915U系列模组。 + +EC600M系列模组中,EC600MCN_LC/EC600MCN_LF不支持`wifiScan`; + +EC800M系列模组中,EC800MCN_GC/EC800MCN_LC/EC800MCN_LF不支持`wifiScan`; + +EC600U系列模组中,EC600UEC_AC不支持`wifiScan`。 + + + +## 方法 + +### `wifiScan.control` + +```python +wifiScan.control(option) +``` + +开启或者关闭WiFi扫描功能。 + +**参数描述:** + +* `option` - 控制选项,整型值,0表示关闭WiFi扫描功能,1表示开启WiFi扫描功能。 + +**返回值描述:** + +返回一个整型值,0表示成功,-1表示失败。 + +**示例:** + +```python +>>> import wifiScan +>>> wifiScan.control(1) # 开启 wifiScan 功能 +0 +>>> wifiScan.control(0) # 关闭 wifiScan 功能 +0 +``` + + + +### `wifiScan.getState` + +```python +wifiScan.getState() +``` + +获取WiFi扫描功能的当前状态是开启还是关闭。 + +**返回值描述:** + +WiFi扫描功能已开启则返回True,未开启返回False。 + + + +### `wifiScan.setCfgParam` + +```python +wifiScan.setCfgParam(timeout, round, maxNums[, priority]) +``` + +设置WiFi扫描参数。 + +**参数描述:** + +* `timeout` - 超时时间,整形值;当触发超时会主动上报已扫描到的热点信息,若在超时前扫描到设置的热点个数会结束扫描并返回扫描结果。参数范围:4~60s。 +* `round` - 扫描轮数,整型值,达到扫描轮数后,会结束扫描并返回扫描结果。参数范围:1~3次。 +* `maxNums` - 最大扫描数量,整型值,当扫描热点数量达到设置的最大个数,会结束扫描并返回扫描结果。参数范围:4~30个。 +* `priority` - 扫描业务的优先级,整型值,可选参数,范围0~1。0表示网络业务优先,1表示WiFi扫描业务优先。网络业务优先时,当有数据业务发起时会中断WiFi扫描。WiFi扫描业务优先时,当有数据业务发起时,不会建立RRC连接,保障WiFi扫描正常执行,扫描结束后才会建立RRC连接。 + +**返回值描述:** + +返回一个整型值,0表示设置成功,-1表示设置失败。 + + + +> EC200U/EC600U/EG912U/EG915U/EC600G/EC800G系列模组不支持priority参数,使用时可不填该参数,如果填写了也没有影响。 + + + +### `wifiScan.getCfgParam` + +```python +wifiScan.getCfgParam() +``` + +获取WiFi扫描参数。 + +**返回值描述:** + +成功返回一个元组,失败返回整型 -1。返回元组格式如下,返回值参数描述见`wifiScan.setCfgParam`方法的参数描述: + +`(timeout, round, maxNums, priority)` + + + +### `wifiScan.setCallback` + +```python +wifiScan.setCallback(fun) +``` + +注册回调函数。使用异步扫描时,需要注册回调函数,扫描结果通过回调函数返回给用户。 + +**参数描述:** + +* `fun` - 回调函数名,回调函数格式以及回调函数的参数说明如下: + +```python +def wifiscanCallback(args): + pass +``` + +回调函数参数描述: + +| 参数 | 类型 | 含义 | +| ---- | ---- | ------------------------------------------------------------ | +| args | 元组 | 包含扫描到的WiFi热点数量和热点信息,形式如下:
`(nums, [(mac, rssi),...,(mac, rssi)])`
`nums` - 整型值,表示扫描到的热点数量
`mac` - 字符串类型,表示WiFi无线接入点的MAC地址
`rssi` - 整型值,表示WiFi热点信号强度 | + +**返回值描述:** + +返回一个整型值,0表示注册成功,-1表示注册失败。 + + + +### `wifiScan.asyncStart` + +```python +wifiScan.asyncStart() +``` + +开始异步扫描,扫描结果通过用户注册的回调函数返回。 + +**返回值描述:** + +返回一个整型值,0表示执行成功,-1表示执行失败。 + +**示例:** + +```python +import wifiScan + +def wifiscanCallback(args): + print('wifi list:{}'.format(args)) +wifiScan.setCallback(wifiscanCallback) + +wifiScan.control(1) +wifiScan.asyncStart() + +''' +执行结果: +wifi list:(2, [('F0:B4:29:86:95:C7', -79),('44:00:4D:D5:26:E0', -92)]) +''' +``` + + + +### `wifiScan.start` + +```python +wifiScan.start() +``` + +开始同步扫描,扫描结束后直接返回扫描结果。由于是同步接口,所以扫描未结束时,程序会阻塞在该接口中。 + +**返回值描述:** + +扫描成功时返回一个元组,失败返回整型-1。成功时返回值格式如下: + +`(wifiNums, [(mac, rssi), ... , (mac, rssi)])` + +| 参数 | 类型 | 说明 | +| -------- | ------ | ---------------------- | +| wifiNums | 整型 | 扫描到的 WiFi 热点数量 | +| mac | 字符串 | WiFi 热点的MAC地址 | +| rssi | 整型 | 信号强度 | + +**示例:** + +```python +>>> wifiScan.start() +(7, [('34:CE:00:09:E5:A8', -30), ('30:FC:68:E2:2D:F7', -44), ('12:CA:41:D4:B2:50', -54), ('D0:DB:B7:90:2D:07', -58), ('00:03:7F:12:CB:CB', -61), ('60:38:E0:C2:84:D9', -62), ('08:4F:0A:05:22:8F', -63)]) +``` + -- Gitee From 70648e46c09d22c238212c7e6e26986d4193e098 Mon Sep 17 00:00:00 2001 From: "jayceon.fu" Date: Tue, 14 Feb 2023 11:27:08 +0800 Subject: [PATCH 2/2] =?UTF-8?q?sidebar.yaml=E4=B8=AD=E6=B7=BB=E5=8A=A0data?= =?UTF-8?q?call/checkNet/wifiScan=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/API_reference/zh/sidebar.yaml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/docs/API_reference/zh/sidebar.yaml b/docs/API_reference/zh/sidebar.yaml index 062a2a92..bd1b789e 100644 --- a/docs/API_reference/zh/sidebar.yaml +++ b/docs/API_reference/zh/sidebar.yaml @@ -34,6 +34,13 @@ items: file: QuecPython标准库/uhashlib.md - label: QuecPython类库 file: QuecPython类库/README.md + items: + - label: dataCall - 拨号 + file: QuecPython类库/dataCall.md + - label: checkNet - 网络就绪检测 + file: QuecPython类库/checkNet.md + - label: wifiScan - WiFi扫描 + file: QuecPython类库/wifiScan.md - label: QuecPython组件库 file: QuecPython组件库/README.md items: -- Gitee