From 95ac3763a15410949bce97ed9b67ce25b72db0e4 Mon Sep 17 00:00:00 2001 From: Lysanderli Date: Mon, 23 Jun 2025 11:56:34 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E6=9B=B4=E6=96=B0API=E6=96=87=E6=A1=A3?= =?UTF-8?q?=E5=A4=B1=E6=95=88=E8=B7=B3=E8=BD=AC=E9=93=BE=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- zh/gnsslib/gnss.md | 2 +- zh/iotlib/checkNet.md | 9 +++++---- zh/iotlib/dataCall.md | 9 ++++----- zh/iotlib/net.md | 30 +++++++++++++-------------- zh/iotlib/sim.md | 6 +++--- zh/iotlib/sms.md | 8 ++++---- zh/iotlib/voiceCall.md | 14 ++++++------- zh/medialib/audio.Audio.md | 4 ++-- zh/peripherals/machine.LCD.md | 38 +++++++++++++++++------------------ zh/peripherals/misc.ADC.md | 2 +- zh/stdlib/utime.md | 2 +- zh/syslib/fota.md | 2 +- 12 files changed, 63 insertions(+), 63 deletions(-) diff --git a/zh/gnsslib/gnss.md b/zh/gnsslib/gnss.md index 55e8cdf..01c530c 100644 --- a/zh/gnsslib/gnss.md +++ b/zh/gnsslib/gnss.md @@ -99,7 +99,7 @@ total_sen_num = 3, total_sat_num = 12 # 输出一组完整GPGSV语句总条数 gnss.getOriginalData() ``` -该接口用于返回从串口读取的原始GNSS数据,如果用户希望拿到原始GNSS数据,自己进行处理或者进行一些数据确认,可以通过该接口来获取。该接口在每次调用 [`gnss.read_gnss_data(max_retry=1, debug=0)`](https://python.quectel.com/doc/API_reference/zh/gnsslib/gnss.html#%3Ccode%3Egnss.read_gnss_data%3C/code%3E)接口后,返回的即本次读取的原始数据。 +该接口用于返回从串口读取的原始GNSS数据,如果用户希望拿到原始GNSS数据,自己进行处理或者进行一些数据确认,可以通过该接口来获取。该接口在每次调用 [`gnss.read_gnss_data(max_retry=1, debug=0)`](https://developer.quectel.com/doc/quecpython/API_reference/zh/gnsslib/gnss.html#%3Ccode%3Egnss.read_gnss_data%3C/code%3E)接口后,返回的即本次读取的原始数据。 **返回值描述** diff --git a/zh/iotlib/checkNet.md b/zh/iotlib/checkNet.md index f6fb6ca..ef96a4d 100644 --- a/zh/iotlib/checkNet.md +++ b/zh/iotlib/checkNet.md @@ -25,7 +25,7 @@ checkNet.waitNetworkReady(timeout) | 参数 | 类型 | 含义 | | ----- | ---- | ------------------------------------------------------------ | | stage | 整型 | 表示当前正在检测什么状态:
1 - 正在检测SIM卡状态;
2 - 正在检测网络注册状态;
3 - 正在检测PDP Context激活状态。 | -| state | 整型 | 根据stage值,来表示不同的状态,具体如下:
stage = 1时,state表示 SIM卡的状态,范围0-21,每个状态值的详细说明,请参考[`sim.getStatus()`](https://python.quectel.com/doc/API_reference/zh/iotlib/sim.html#%3Ccode%3Esim.getStatus%3C/code%3E)方法的返回值说明;
stage = 2时,state表示网络注册状态,范围0-11,每个状态值的详细说明,请参考[`net.getState()`](https://python.quectel.com/doc/API_reference/zh/iotlib/net.html#%3Ccode%3Enet.getState%3C/code%3E)方法的返回值说明;
stage = 3时,state表示PDP Context激活状态,0表示没有激活成功,1表示激活成功。 | +| state | 整型 | 根据stage值,来表示不同的状态,具体如下:
stage = 1时,state表示 SIM卡的状态,范围0-21,每个状态值的详细说明,请参考[`sim.getStatus()`]([sim - SIM卡功能 - QuecPython](https://developer.quectel.com/doc/quecpython/API_reference/zh/iotlib/sim.html#sim.getStatus))方法的返回值说明;
stage = 2时,state表示网络注册状态,范围0-11,每个状态值的详细说明,请参考[`net.getState()`](https://python.quectel.com/doc/API_reference/zh/iotlib/net.html#%3Ccode%3Enet.getState%3C/code%3E)方法的返回值说明;
stage = 3时,state表示PDP Context激活状态,0表示没有激活成功,1表示激活成功。 | 如果网络已经就绪,则返回`(3,1)`,否则可参考如下说明来排查定位问题: @@ -51,16 +51,16 @@ checkNet.waitNetworkReady(timeout) 0或2 - 这种情况说明在超时时间内,模组一直没有注网成功,这时请按如下步骤排查问题:
(1)首先确认SIM卡状态是正常的,通过 sim 模块的sim.getStatus()接口获取,为1说明正常;
(2)如果SIM卡状态正常,确认当前信号强度,通过net模块的net.csqQueryPoll()接口获取,如果信号强度比较弱,那么可能是因为当前信号强度较弱导致短时间内注网不成功,可以增加超时时间或者换个信号比较好的位置再尝试;
(3)如果SIM卡状态正常,信号强度也较好,请确认使用的SIM卡是否已经欠费或流量不足;
(4)如果SIM卡没有欠费也没有流量不足,请确认使用的是否是物联网卡,如果是,请确认该SIM卡是否存在机卡绑定的情况;
(5)如果按照前述步骤依然没有发现解决问题,请联系我们的FAE反馈问题;最好将相应SIM卡信息,比如哪个运营商的卡、什么类型的卡、卡的IMSI等信息也一并提供,必要时可以将SIM卡寄给我们来排查问题。 + 这种情况说明在超时时间内,模组一直没有注网成功,这时请按如下步骤排查问题:
(1)首先确认SIM卡状态是正常的,通过 sim 模块的sim.getStatus()接口获取,为1说明正常;
(2)如果SIM卡状态正常,确认当前信号强度,通过net模块的net.csqQueryPoll()接口获取,如果信号强度比较弱,那么可能是因为当前信号强度较弱导致短时间内注网不成功,可以增加超时时间或者换个信号比较好的位置再尝试;
(3)如果SIM卡状态正常,信号强度也较好,请确认使用的SIM卡是否已经欠费或流量不足;
(4)如果SIM卡没有欠费也没有流量不足,请确认使用的是否是物联网卡,如果是,请确认该SIM卡是否存在机卡绑定的情况;
(5)如果按照前述步骤依然没有发现解决问题,请联系我们的FAE反馈问题;最好将相应SIM卡信息,比如哪个运营商的卡、什么类型的卡、卡的IMSI等信息也一并提供,必要时可以将SIM卡寄给我们来排查问题。 其他值 - 请参考官方Wiki文档中net.getState()接口的返回值说明,确认注网失败原因。 + 请参考官方Wiki文档中net.getState()接口的返回值说明,确认注网失败原因。 3 0 - 这种情况说明在超时时间内,PDP Context一直没有激活成功,请按如下步骤尝试:
(1)通过 sim 模块的sim.getStatus()接口获取sim卡状态,为1表示正常;
(2)通过 net 模块的net.getState()接口获取注网状态,为1表示正常;
(3)手动调用dataCall.activate(profileID)接口尝试激活,看看能否激活成功;
(4)如果手动激活成功了,但是开机自动激活失败,可联系我司相关人员协助分析。 + 这种情况说明在超时时间内,PDP Context一直没有激活成功,请按如下步骤尝试:
(1)通过 sim 模块的sim.getStatus()接口获取sim卡状态,为1表示正常;
(2)通过 net 模块的net.getState()接口获取注网状态,为1表示正常;
(3)手动调用dataCall.activate(profileID)接口尝试激活,看看能否激活成功;
(4)如果手动激活成功了,但是开机自动激活失败,可联系我司相关人员协助分析。 1 @@ -74,6 +74,7 @@ checkNet.waitNetworkReady(timeout) + **示例:** ```python diff --git a/zh/iotlib/dataCall.md b/zh/iotlib/dataCall.md index d6177a4..c602ef3 100644 --- a/zh/iotlib/dataCall.md +++ b/zh/iotlib/dataCall.md @@ -6,7 +6,7 @@ -> 用户使用不同运营商的SIM卡时,应配置对应运营商的APN信息;如果不配置或者配置错误,可能会导致模组注网失败或拨号失败,模组获取不到IP地址,无法上网。配置APN的方式,参考[`dataCall.setPDPContext`](https://python.quectel.com/doc/API_reference/zh/iotlib/dataCall.html#%3Ccode%3EdataCall.setPDPContext%3C/code%3E)方法。 +> 用户使用不同运营商的SIM卡时,应配置对应运营商的APN信息;如果不配置或者配置错误,可能会导致模组注网失败或拨号失败,模组获取不到IP地址,无法上网。配置APN的方式,参考[`dataCall.setPDPContext`](https://developer.quectel.com/doc/quecpython/API_reference/zh/iotlib/dataCall.html#%3Ccode%3EdataCall.setPDPContext%3C/code%3E)方法。 @@ -126,7 +126,7 @@ dataCall.getPDPContext(profileID) `(ipType, apn, username, password, authType)` -元组参数描述见[`dataCall.setPDPContext`](https://python.quectel.com/doc/API_reference/zh/iotlib/dataCall.html#%3Ccode%3EdataCall.setPDPContext%3C/code%3E)方法的参数描述。 +元组参数描述见[`dataCall.setPDPContext`](https://developer.quectel.com/doc/quecpython/API_reference/zh/iotlib/dataCall.html#%3Ccode%3EdataCall.setPDPContext%3C/code%3E)方法的参数描述。 @@ -162,7 +162,7 @@ dataCall.setAutoActivate(profileID, enable) ->如果用户没有使用[`dataCall.setAutoActivate`](https://python.quectel.com/doc/API_reference/zh/iotlib/dataCall.html#%3Ccode%3EdataCall.setAutoActivate%3C/code%3E)方法和[`dataCall.setAutoConnect`](https://python.quectel.com/doc/API_reference/zh/iotlib/dataCall.html#%3Ccode%3EdataCall.setAutoConnect%3C/code%3E)配置过,则默认开机对profileID为1的那一路进行自动激活和使能重连;否则按照用户的配置执行。 +>如果用户没有使用[`dataCall.setAutoActivate`](https://developer.quectel.com/doc/quecpython/API_reference/zh/iotlib/dataCall.html#%3Ccode%3EdataCall.setAutoActivate%3C/code%3E)方法和[`dataCall.setAutoConnect`](https://developer.quectel.com/doc/quecpython/API_reference/zh/iotlib/dataCall.html#%3Ccode%3EdataCall.setAutoConnect%3C/code%3E)配置过,则默认开机对profileID为1的那一路进行自动激活和使能重连;否则按照用户的配置执行。 > >BC32系列仅支持第一路,不支持多路拨号。 > @@ -198,7 +198,7 @@ dataCall.setAutoConnect(profileID, enable) -> 如果用户没有使用[`dataCall.setAutoActivate`](https://python.quectel.com/doc/API_reference/zh/iotlib/dataCall.html#%3Ccode%3EdataCall.setAutoActivate%3C/code%3E)方法和[`dataCall.setAutoConnect`](https://python.quectel.com/doc/API_reference/zh/iotlib/dataCall.html#%3Ccode%3EdataCall.setAutoConnect%3C/code%3E)配置过,则默认开机对profileID为1的那一路进行自动激活和使能重连;否则按照用户的配置执行。 +> 如果用户没有使用[`dataCall.setAutoActivate`](https://developer.quectel.com/doc/quecpython/API_reference/zh/iotlib/dataCall.html#%3Ccode%3EdataCall.setAutoActivate%3C/code%3E)方法和[`dataCall.setAutoConnect`](https://developer.quectel.com/doc/quecpython/API_reference/zh/iotlib/dataCall.html#%3Ccode%3EdataCall.setAutoConnect%3C/code%3E)配置过,则默认开机对profileID为1的那一路进行自动激活和使能重连;否则按照用户的配置执行。 > > BC32系列2G网络下不支持重连功能。 > @@ -440,4 +440,3 @@ dataCall.getInfo(profileID, ipType) (1, 0, [1, 0, '10.91.44.177', '58.242.2.2', '218.104.78.2']) ``` - diff --git a/zh/iotlib/net.md b/zh/iotlib/net.md index 34ae460..ebc6f0d 100644 --- a/zh/iotlib/net.md +++ b/zh/iotlib/net.md @@ -4,7 +4,7 @@ ->建议用户使用不同运营商的SIM卡时,则配置对应运营商的APN信息;如果不配置或者配置错误,可能会导致模组无法注网。用户具体如何配置APN信息,参考[`dataCall.setPDPContext`](https://python.quectel.com/doc/API_reference/zh/iotlib/dataCall.html#%3Ccode%3EdataCall.setPDPContext%3C/code%3E)方法。 +>建议用户使用不同运营商的SIM卡时,则配置对应运营商的APN信息;如果不配置或者配置错误,可能会导致模组无法注网。用户具体如何配置APN信息,参考[`dataCall.setPDPContext`](https://developer.quectel.com/doc/quecpython/API_reference/zh/iotlib/dataCall.html#%3Ccode%3EdataCall.setPDPContext%3C/code%3E)方法。 @@ -365,11 +365,11 @@ net.nitzTime() 失败返回整型值`-1`,成功返回一个元组,包含基站时间与对应时间戳与闰秒数(0表示不可用),格式为:`(date, abs_time, leap_sec)`,说明如下: -| 参数 | 类型 | 参数意义 | -| ---------- | ------ |-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| `date` | 字符串 | 基站时间,其中关于时区的部分,不同系列有所区别,具体见示例。
如果需要设置和获取时区,请使用`utime`模块的[`setTimeZone(offset)`](https://python.quectel.com/doc/API_reference/zh/stdlib/utime.html#%3Ccode%3Eutime.setTimeZone%3C/code%3E)和[`getTimeZone()`](https://python.quectel.com/doc/API_reference/zh/stdlib/utime.html#%3Ccode%3Eutime.getTimeZone%3C/code%3E)接口,
不同平台,这两个接口的单位都是小时,具体参考[`utime`](https://python.quectel.com/doc/API_reference/zh/stdlib/utime.html)模块的说明。 | -| `abs_time` | 整型 | 基站时间的绝对秒数表示 | -| `leap_sec` | 整型 | 闰秒数 | +| 参数 | 类型 | 参数意义 | +| ---------- | ------ | ------------------------------------------------------------ | +| `date` | 字符串 | 基站时间,其中关于时区的部分,不同系列有所区别,具体见示例。
如果需要设置和获取时区,请使用`utime`模块的[`setTimeZone(offset)`](https://developer.quectel.com/doc/quecpython/API_reference/zh/stdlib/utime.html#%3Ccode%3Eutime.setTimeZoneEx%3C/code%3E)和[`getTimeZone()`](https://developer.quectel.com/doc/quecpython/API_reference/zh/stdlib/utime.html#%3Ccode%3Eutime.getTimeZoneEx%3C/code%3E)接口,
不同平台,这两个接口的单位都是小时,具体参考[`utime`](https://developer.quectel.com/doc/quecpython/API_reference/zh/stdlib/utime.html)模块的说明。 | +| `abs_time` | 整型 | 基站时间的绝对秒数表示 | +| `leap_sec` | 整型 | 闰秒数 | **示例:** @@ -437,7 +437,7 @@ net.getState() | -------------- | ------------------------------------------------------------ | | `state` | 网络注册状态,具体见下表 | | `lac` | 位置区码,范围 1 ~ 65534 | -| `cid` | cell id,范围 0x00000000 ~ 0x0FFFFFFF,具体见上面[`net.getCellInfo()`](https://python.quectel.com/doc/API_reference/zh/iotlib/net.html#%3Ccode%3Enet.getCellInfo%3C/code%3E)中返回值 | +| `cid` | cell id,范围 0x00000000 ~ 0x0FFFFFFF,具体见上面[`net.getCellInfo()`](hhttps://developer.quectel.com/doc/quecpython/API_reference/zh/iotlib/net.html#%3Ccode%3Enet.getCellInfo%3C/code%3E)中返回值 | | ``rat`` | 接入技术,access technology,具体见后面表格 | | `reject_cause` | 注册被拒绝的原因,EC200U/EC600U/EG915U/BC25系列该参数保留,不作为有效参数 | | `psc` | 主扰码,Primary Scrambling Code,EC200U/EC600U/EG915U/BC25系列该参数保留,不作为有效参数 | @@ -513,7 +513,7 @@ net.getState() net.getCi() ``` -该方法用于获取附近小区ID。该接口获取结果即为[`net.getCellInfo()`](https://python.quectel.com/doc/API_reference/zh/iotlib/net.html#%3Ccode%3Enet.getCellInfo%3C/code%3E)接口获取结果中的cid集合。 +该方法用于获取附近小区ID。该接口获取结果即为[`net.getCellInfo()`](https://developer.quectel.com/doc/quecpython/API_reference/zh/iotlib/net.html#%3Ccode%3Enet.getCellInfo%3C/code%3E)接口获取结果中的cid集合。 **返回值描述:** @@ -536,7 +536,7 @@ net.getCi() net.getServingCi() ``` -该方法用于获取服务小区ID。该接口获取结果即为[`net.getCellInfo()`](https://python.quectel.com/doc/API_reference/zh/iotlib/net.html#%3Ccode%3Enet.getCellInfo%3C/code%3E)接口获取结果中的cid集合。 +该方法用于获取服务小区ID。该接口获取结果即为[`net.getCellInfo()`](https://developer.quectel.com/doc/quecpython/API_reference/zh/iotlib/net.html#%3Ccode%3Enet.getCellInfo%3C/code%3E)接口获取结果中的cid集合。 **返回值描述:** @@ -560,7 +560,7 @@ net.getServingCi() net.getMnc() ``` -该方法用于获取附近小区的mnc。该接口获取结果即为[`net.getCellInfo()`](https://python.quectel.com/doc/API_reference/zh/iotlib/net.html#%3Ccode%3Enet.getCellInfo%3C/code%3E)接口获取结果中的mnc集合。 +该方法用于获取附近小区的mnc。该接口获取结果即为[`net.getCellInfo()`](https://developer.quectel.com/doc/quecpython/API_reference/zh/iotlib/net.html#%3Ccode%3Enet.getCellInfo%3C/code%3E)接口获取结果中的mnc集合。 **返回值描述:** @@ -584,7 +584,7 @@ net.getMnc() net.getServingMnc() ``` -该方法用于获取服务小区的mnc。该接口获取结果即为[`net.getCellInfo()`](https://python.quectel.com/doc/API_reference/zh/iotlib/net.html#%3Ccode%3Enet.getCellInfo%3C/code%3E)接口获取结果中的mnc集合。 +该方法用于获取服务小区的mnc。该接口获取结果即为[`net.getCellInfo()`](https://developer.quectel.com/doc/quecpython/API_reference/zh/iotlib/net.html#%3Ccode%3Enet.getCellInfo%3C/code%3E)接口获取结果中的mnc集合。 **返回值描述:** @@ -608,7 +608,7 @@ net.getServingMnc() net.getMcc() ``` -该方法用于获取附近小区的mcc。该接口获取结果即为[`net.getCellInfo()`](https://python.quectel.com/doc/API_reference/zh/iotlib/net.html#%3Ccode%3Enet.getCellInfo%3C/code%3E)接口获取结果中的mcc集合。 +该方法用于获取附近小区的mcc。该接口获取结果即为[`net.getCellInfo()`](https://developer.quectel.com/doc/quecpython/API_reference/zh/iotlib/net.html#%3Ccode%3Enet.getCellInfo%3C/code%3E)接口获取结果中的mcc集合。 **返回值描述:** @@ -638,7 +638,7 @@ net.getMcc() net.getServingMcc() ``` -该方法用于获取服务小区的mcc。该接口获取结果即为[`net.getCellInfo()`](https://python.quectel.com/doc/API_reference/zh/iotlib/net.html#%3Ccode%3Enet.getCellInfo%3C/code%3E)接口获取结果中的mcc集合。 +该方法用于获取服务小区的mcc。该接口获取结果即为[`net.getCellInfo()`](https://developer.quectel.com/doc/quecpython/API_reference/zh/iotlib/net.html#%3Ccode%3Enet.getCellInfo%3C/code%3E)接口获取结果中的mcc集合。 **返回值描述:** @@ -668,7 +668,7 @@ net.getServingMcc() net.getLac() ``` -该方法用于获取附近小区的Lac。该接口获取结果即为[`net.getCellInfo()`](https://python.quectel.com/doc/API_reference/zh/iotlib/net.html#%3Ccode%3Enet.getCellInfo%3C/code%3E)接口获取结果中的lac集合。 +该方法用于获取附近小区的Lac。该接口获取结果即为[`net.getCellInfo()`](https://developer.quectel.com/doc/quecpython/API_reference/zh/iotlib/net.html#%3Ccode%3Enet.getCellInfo%3C/code%3E)接口获取结果中的lac集合。 **返回值描述:** @@ -692,7 +692,7 @@ net.getLac() net.getServingLac() ``` -该方法用于获取服务小区的Lac。该接口获取结果即为[`net.getCellInfo()`](https://python.quectel.com/doc/API_reference/zh/iotlib/net.html#%3Ccode%3Enet.getCellInfo%3C/code%3E)接口获取结果中的lac集合。 +该方法用于获取服务小区的Lac。该接口获取结果即为[`net.getCellInfo()`](https://developer.quectel.com/doc/quecpython/API_reference/zh/iotlib/net.html#%3Ccode%3Enet.getCellInfo%3C/code%3E)接口获取结果中的lac集合。 **返回值描述:** diff --git a/zh/iotlib/sim.md b/zh/iotlib/sim.md index 404c377..277913e 100644 --- a/zh/iotlib/sim.md +++ b/zh/iotlib/sim.md @@ -405,7 +405,7 @@ sim.writePhonebook(storage, index, username, number) **参数描述:** -- `storage` - 电话号码存储位置,整型值,具体可选参数同上[`sim.readPhonebook`](https://python.quectel.com/doc/API_reference/zh/iotlib/sim.html#%3Ccode%3Esim.readPhonebook%3C/code%3E)中的`storage` : +- `storage` - 电话号码存储位置,整型值,具体可选参数同上[`sim.readPhonebook`](https://developer.quectel.com/doc/quecpython/API_reference/zh/iotlib/sim.html#%3Ccode%3Esim.readPhonebook%3C/code%3E)中的`storage` : - `index` - 需要写入电话号码记录的在电话簿中的编号,整型值,范围`1 ~ 500`。 - `username` - 电话号码的用户名,字符串类型,长度范围不超过30字节,暂不支持中文名。 @@ -585,7 +585,7 @@ sim.switchCard(simId) > >EC800MCN_LE/EC800MCN_LA/EC800MCN_LF/EC600MCN_LF/EC600MCN_LA/EC600MCN_LE/EC600MCN_CC/EG810MCN_GA/EC600ECN_LC/EC800GCN_LD/EG912UGL_AC。 > ->注意当目标卡是当前卡时,[`sim.switchCard`](https://python.quectel.com/doc/API_reference/zh/iotlib/sim.html#%3Ccode%3Esim.switchCard%3C/code%3E)直接返回-1,不触发此接口设置的回调函数。 +>注意当目标卡是当前卡时,[`sim.switchCard`](https://developer.quectel.com/doc/quecpython/API_reference/zh/iotlib/sim.html#%3Ccode%3Esim.switchCard%3C/code%3E)直接返回-1,不触发此接口设置的回调函数。 > >部分模组(如EC800GCN_LD系列)无法检测sim卡2是否已经插入,当sim卡2不存在时,允许切卡到sim卡2。 @@ -695,7 +695,7 @@ def usrFun(args): > > EC800MCN_LE/EC800MCN_LA/EC800MCN_LF/EC600MCN_LF/EC600MCN_LA/EC600MCN_LE/EC600MCN_CC/EG810MCN_GA/EC600ECN_LC/EC800GCN_LD。 > -> 注意当目标卡是当前卡时切卡方法[`sim.switchCard`](https://python.quectel.com/doc/API_reference/zh/iotlib/sim.html#%3Ccode%3Esim.switchCard%3C/code%3E)直接返回-1,不触发此接口设置的回调函数。 +> 注意当目标卡是当前卡时切卡方法[`sim.switchCard`](https://developer.quectel.com/doc/quecpython/API_reference/zh/iotlib/sim.html#%3Ccode%3Esim.switchCard%3C/code%3E)直接返回-1,不触发此接口设置的回调函数。 diff --git a/zh/iotlib/sms.md b/zh/iotlib/sms.md index 387c34d..33fde98 100644 --- a/zh/iotlib/sms.md +++ b/zh/iotlib/sms.md @@ -206,9 +206,9 @@ sms.getSaveLoc() | 参数 | 类型 | 含义 | | -------------- | ------ | ------------------------------------------------------------ | -| `loc1` | 字符串 | 读取和删除消息所在的位置,具体含义同[`sms.setSaveLoc`](https://python.quectel.com/doc/API_reference/zh/iotlib/sms.html#%3Ccode%3Esms.setSaveLoc%3C/code%3E)中`mem1`的值 | -| `loc2` | 字符串 | 写入和发送消息所在的位置,具体含义同[`sms.setSaveLoc`](https://python.quectel.com/doc/API_reference/zh/iotlib/sms.html#%3Ccode%3Esms.setSaveLoc%3C/code%3E)中`mem1`的值 | -| `loc3` | 字符串 | 接收消息的存储位置,具体含义同[`sms.setSaveLoc`](https://python.quectel.com/doc/API_reference/zh/iotlib/sms.html#%3Ccode%3Esms.setSaveLoc%3C/code%3E)中`mem1`的值 | +| `loc1` | 字符串 | 读取和删除消息所在的位置,具体含义同[`sms.setSaveLoc`](https://developer.quectel.com/doc/quecpython/API_reference/zh/iotlib/sms.html#%3Ccode%3Esms.setSaveLoc%3C/code%3E)中`mem1`的值 | +| `loc2` | 字符串 | 写入和发送消息所在的位置,具体含义同[`sms.setSaveLoc`](https://developer.quectel.com/doc/quecpython/API_reference/zh/iotlib/sms.html#%3Ccode%3Esms.setSaveLoc%3C/code%3E)中`mem1`的值 | +| `loc3` | 字符串 | 接收消息的存储位置,具体含义同[`sms.setSaveLoc`](https://developer.quectel.com/doc/quecpython/API_reference/zh/iotlib/sms.html#%3Ccode%3Esms.setSaveLoc%3C/code%3E)中`mem1`的值 | | `current_nums` | 整型 | 当前空间已有短信数量 | | `max_nums` | 整型 | 当前空间最大短信存储数量 | @@ -355,7 +355,7 @@ sms.getPduLength(pduMsg) sms.decodePdu(pduMsg, pduLen) ``` -该方法用于PDU解码,解析[`sms.searchPduMsg()`](https://python.quectel.com/doc/API_reference/zh/iotlib/sms.html#%3Ccode%3Esms.searchPduMsg%3C/code%3E)接口读取到的PDU数据。 +该方法用于PDU解码,解析[`sms.searchPduMsg()`](https://developer.quectel.com/doc/quecpython/API_reference/zh/iotlib/sms.html#%3Ccode%3Esms.searchPduMsg%3C/code%3E)接口读取到的PDU数据。 **参数描述:** diff --git a/zh/iotlib/voiceCall.md b/zh/iotlib/voiceCall.md index 3111122..718b932 100644 --- a/zh/iotlib/voiceCall.md +++ b/zh/iotlib/voiceCall.md @@ -6,13 +6,13 @@ >* 支持voiceCall功能的模组: > EC600N系列:EC600NCN_LC/EC600NCN_LD/EC600NCN_LF -> EG912N系列:EG912NEN_AA -> EG915N系列:EG915NEU_AG/EG915NEA_AC -> EC200A系列:EC200AAU_HA/EC200ACN_DA/EC200ACN_HA/EC200ACN_LA/EC200AEU_HA -> EC200U系列:EC200UAU_AA/EC200UAU_AB/EC200UCN_AA/EC200UEU_AA/EC200UEU_AB -> EC600U系列:EC600UEU_AB/EC600UEC_AC/EC600ULA_AC -> EG912U系列:EG912UGL_AA/EG912UGL_AC -> EG915U系列:EG915UEU_AB/EG915ULA_AB +> EG912N系列:EG912NEN_AA +> EG915N系列:EG915NEU_AG/EG915NEA_AC +> EC200A系列:EC200AAU_HA/EC200ACN_DA/EC200ACN_HA/EC200ACN_LA/EC200AEU_HA +> EC200U系列:EC200UAU_AA/EC200UAU_AB/EC200UCN_AA/EC200UEU_AA/EC200UEU_AB +> EC600U系列:EC600UEU_AB/EC600UEC_AC/EC600ULA_AC +> EG912U系列:EG912UGL_AA/EG912UGL_AC +> EG915U系列:EG915UEU_AB/EG915ULA_AB > * BC25/BC32/EC600G/EC800G/BG95系列模组不支持voiceCall功能。 > * EC600M/EC800M/EG810M系列模组需要支持VOLTE功能固件才支持voiceCall功能。 > * 其他系列模组需要定制版本才能支持voiceCall功能。 diff --git a/zh/medialib/audio.Audio.md b/zh/medialib/audio.Audio.md index 7035f3f..780dff9 100644 --- a/zh/medialib/audio.Audio.md +++ b/zh/medialib/audio.Audio.md @@ -48,7 +48,7 @@ Audio.set_pa(gpio,num) **参数描述:** -- `gpio` - 输出的gpio,int类型,参照[Pin](./machine.Pin.md)。 +- `gpio` - 输出的gpio,int类型,参照[Pin](../peripherals/machine.Pin.md)。 - `num` - 上电脉冲数,int类型。 **返回值描述:** @@ -105,7 +105,7 @@ Audio.stop() Audio.stopAll() ``` -该方法用于停止整个队列的播放。即当前如果正在播放Audio或者音频,并且队列中还有其他待播放内容,调用该方法后,不仅会停止当前播放的内容,还会清除这个队列的内容,不再播放任何内容。如果当前正在播放,且播放队列为空,那么调用该方法效果等同与[stop()](https://python.quectel.com/doc/API_reference/zh/medialib/audio.Audio.html#%3Ccode%3EAudio.stop%3C/code%3E)接口。 +该方法用于停止整个队列的播放。即当前如果正在播放Audio或者音频,并且队列中还有其他待播放内容,调用该方法后,不仅会停止当前播放的内容,还会清除这个队列的内容,不再播放任何内容。如果当前正在播放,且播放队列为空,那么调用该方法效果等同与[stop()](https://developer.quectel.com/doc/quecpython/API_reference/zh/medialib/audio.Audio.html#%3Ccode%3EAudio.stop%3C/code%3E)接口。 **返回值描述:** diff --git a/zh/peripherals/machine.LCD.md b/zh/peripherals/machine.LCD.md index 015e584..6cafad7 100644 --- a/zh/peripherals/machine.LCD.md +++ b/zh/peripherals/machine.LCD.md @@ -77,25 +77,25 @@ lcd.lcd_init(lcd_init_data, lcd_width, lcd_hight, lcd_clk, data_line, line_num, **参数描述:** -| 参数 | 类型 | 说明 | -| ------------------ | --------- | ------------------------------------------------------------ | -| lcd_init_data | bytearray | LCD 初始化的配置命令 | -| lcd_width | int | LCD 屏幕的宽度,宽度不超过 500像素 | -| lcd_hight | int | LCD 屏幕的高度,高度不超过 500像素 | -| lcd_clk | int | SPI 时钟,见machine.SPI 创建SPI对象参数说明clk | -| data_line | int | 数据线数,参数值为 1 和 2 | -| line_num | int | 线的数量,参数值为 3 和 4 | -| lcd_type | int | 屏幕类型,0 - rgb;1 - fstn | -| lcd_invalid | bytearray | LCD 区域设置的配置命令 | -| lcd_display_on | bytearray | LCD 屏亮的配置命令 | -| lcd_display_off | bytearray | LCD 屏灭的配置命令 | -| lcd_set_brightness | bytearray | LCD屏亮度的配置命令:
设置为 None表示由 LCD_BL_K 控制亮度 | -| lcd_interface | int | LCD接口类型,0 - LCM接口;1 - SPI接口 | -| spi_port | int | 通道选择[0,1],参照SPI部分 | -| spi_mode | int | SPI 的工作模式(通常使用工作模式0):
时钟极性CPOL:即SPI空闲时,时钟信号SCLK的电平(0:空闲时低电平; 1:空闲时高电平)
0 : CPOL=0, CPHA=0
1 : CPOL=0, CPHA=1
2 : CPOL=1, CPHA=0
3 : CPOL=1, CPHA=1 | -| cs_pin | int | CS引脚,见[machine.Pin](machine.Pin.md)中GPIO引脚编号说明 | -| dc_pin | int | DC引脚,见[machine.Pin](machine.Pin.md)中GPIO引脚编号说明 | -| rst_pin | int | RST引脚,见[machine.Pin](machine.Pin.md)中GPIO引脚编号说明 | +| 参数 | 类型 | 说明 | +| ------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| lcd_init_data | bytearray | LCD 初始化的配置命令 | +| lcd_width | int | LCD 屏幕的宽度,宽度不超过 500像素 | +| lcd_hight | xxxxxxxxxx import machineimport utimeis_loop = 1keypad=machine.KeyPad()  keypad.init()def userfun(l_list):    global is_loop    if  l_list[0] != 1 :        is_loop = 0        print('will exit')    print(l_list)keypad.set_callback(userfun)loop_num = 0while is_loop == 1 and loop_num < 10:    utime.sleep(5)    loop_num = loop_num +1    print(" running..... ",is_loop,loop_num)keypad.deinit()print('exit!')python | LCD 屏幕的高度,高度不超过 500像素 | +| lcd_clk | int | SPI 时钟,见machine.SPI 创建SPI对象参数说明clk | +| data_line | int | 数据线数,参数值为 1 和 2 | +| line_num | int | 线的数量,参数值为 3 和 4 | +| lcd_type | int | 屏幕类型,0 - rgb;1 - fstn | +| lcd_invalid | bytearray | LCD 区域设置的配置命令 | +| lcd_display_on | bytearray | LCD 屏亮的配置命令 | +| lcd_display_off | bytearray | LCD 屏灭的配置命令 | +| lcd_set_brightness | bytearray | LCD屏亮度的配置命令:
设置为 None表示由 LCD_BL_K 控制亮度 | +| lcd_interface | int | LCD接口类型,0 - LCM接口;1 - SPI接口 | +| spi_port | int | 通道选择[0,1],参照SPI部分 | +| spi_mode | int | SPI 的工作模式(通常使用工作模式0):
时钟极性CPOL:即SPI空闲时,时钟信号SCLK的电平(0:空闲时低电平; 1:空闲时高电平)
0 : CPOL=0, CPHA=0
1 : CPOL=0, CPHA=1
2 : CPOL=1, CPHA=0
3 : CPOL=1, CPHA=1 | +| cs_pin | int | CS引脚,见[machine.Pin](machine.Pin.md)中GPIO引脚编号说明 | +| dc_pin | int | DC引脚,见[machine.Pin](machine.Pin.md)中GPIO引脚编号说明 | +| rst_pin | int | RST引脚,见[machine.Pin](machine.Pin.md)中GPIO引脚编号说明 | **返回值描述:** diff --git a/zh/peripherals/misc.ADC.md b/zh/peripherals/misc.ADC.md index 054772c..5c73412 100644 --- a/zh/peripherals/misc.ADC.md +++ b/zh/peripherals/misc.ADC.md @@ -62,7 +62,7 @@ ADC.read(ADCn) ADC.close() ``` -**返回值描述:** +xxxxxxxxxx from machine import WDTfrom machine import Timer​​timer1 = Timer(Timer.Timer1)​def feed(t):    wdt.feed()​​if __name__ == '__main__':    wdt = WDT(20)  # 启动看门狗,设置超时时间    timer1.start(period=15000, mode=timer1.PERIODIC, callback=feed)  # 使用定时器喂狗​    # wdt.stop()​python `0`表示关闭成功,`-1`表示关闭失败。 diff --git a/zh/stdlib/utime.md b/zh/stdlib/utime.md index e629480..1588d5a 100644 --- a/zh/stdlib/utime.md +++ b/zh/stdlib/utime.md @@ -304,7 +304,7 @@ utime.ticks_diff(ticks1, ticks2) **参数描述:** -- `ticks1`-int类型,第二次调用` ticks_ms`, `ticks_us`,或 `ticks_cpu`获取的tick值。 +- xxxxxxxxxx >>> import ustruct​# 定义格式字符串>>> fmt = "3sB"# 定义要解包的字节序列>>> data = bytearray(b'Tom\x19\x00\x00\x00\x00')​# 从字节序列的第一个字节开始解包>>> result = ustruct.unpack_from(fmt, data, 0)>>> print(result) # 输出:(b'Tom', 25)(b'Tom', 25)​python - `ticks2`-int类型,第一次调用` ticks_ms`, `ticks_us`,或 `ticks_cpu`获取的tick值。 **返回值描述:** diff --git a/zh/syslib/fota.md b/zh/syslib/fota.md index dd165b6..9e253bd 100644 --- a/zh/syslib/fota.md +++ b/zh/syslib/fota.md @@ -106,7 +106,7 @@ fota(reset_disable=) 创建fota对象。 -**参数描述:** +xxxxxxxxxx # 假设有文件test.py,内容如下​def myprint():    count = 10    while count > 0:        count -= 1        print('##### test #####')​myprint()​#将test.py文件上传到模块中,进入命令行执行如下代码>>> uos.listdir('/usr/')['apn_cfg.json', 'test.py']>>> import example>>> example.exec('/usr/test.py')# 执行结果如下​##### test ########## test ########## test ########## test ########## test ########## test ########## test ########## test ########## test ########## test #####python - `reset_disable`-可选参数,是否关闭下载完升级包后自动重启功能。传入1关闭自动重启功能,不传入该参数或传入0则保留自动重启功能。 -- Gitee From cbe2a80f9e07c036c80dec4fff622cb2bf72c747 Mon Sep 17 00:00:00 2001 From: Lysanderli Date: Mon, 23 Jun 2025 13:38:48 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E6=9B=B4=E6=96=B0API=E6=96=87=E6=A1=A3?= =?UTF-8?q?=E5=A4=B1=E6=95=88=E8=B7=B3=E8=BD=AC=E9=93=BE=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- zh/peripherals/machine.LCD.md | 38 +++++++++++++++++------------------ zh/peripherals/misc.ADC.md | 2 +- zh/stdlib/utime.md | 2 +- zh/syslib/fota.md | 2 +- 4 files changed, 22 insertions(+), 22 deletions(-) diff --git a/zh/peripherals/machine.LCD.md b/zh/peripherals/machine.LCD.md index 6cafad7..015e584 100644 --- a/zh/peripherals/machine.LCD.md +++ b/zh/peripherals/machine.LCD.md @@ -77,25 +77,25 @@ lcd.lcd_init(lcd_init_data, lcd_width, lcd_hight, lcd_clk, data_line, line_num, **参数描述:** -| 参数 | 类型 | 说明 | -| ------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | -| lcd_init_data | bytearray | LCD 初始化的配置命令 | -| lcd_width | int | LCD 屏幕的宽度,宽度不超过 500像素 | -| lcd_hight | xxxxxxxxxx import machineimport utimeis_loop = 1keypad=machine.KeyPad()  keypad.init()def userfun(l_list):    global is_loop    if  l_list[0] != 1 :        is_loop = 0        print('will exit')    print(l_list)keypad.set_callback(userfun)loop_num = 0while is_loop == 1 and loop_num < 10:    utime.sleep(5)    loop_num = loop_num +1    print(" running..... ",is_loop,loop_num)keypad.deinit()print('exit!')python | LCD 屏幕的高度,高度不超过 500像素 | -| lcd_clk | int | SPI 时钟,见machine.SPI 创建SPI对象参数说明clk | -| data_line | int | 数据线数,参数值为 1 和 2 | -| line_num | int | 线的数量,参数值为 3 和 4 | -| lcd_type | int | 屏幕类型,0 - rgb;1 - fstn | -| lcd_invalid | bytearray | LCD 区域设置的配置命令 | -| lcd_display_on | bytearray | LCD 屏亮的配置命令 | -| lcd_display_off | bytearray | LCD 屏灭的配置命令 | -| lcd_set_brightness | bytearray | LCD屏亮度的配置命令:
设置为 None表示由 LCD_BL_K 控制亮度 | -| lcd_interface | int | LCD接口类型,0 - LCM接口;1 - SPI接口 | -| spi_port | int | 通道选择[0,1],参照SPI部分 | -| spi_mode | int | SPI 的工作模式(通常使用工作模式0):
时钟极性CPOL:即SPI空闲时,时钟信号SCLK的电平(0:空闲时低电平; 1:空闲时高电平)
0 : CPOL=0, CPHA=0
1 : CPOL=0, CPHA=1
2 : CPOL=1, CPHA=0
3 : CPOL=1, CPHA=1 | -| cs_pin | int | CS引脚,见[machine.Pin](machine.Pin.md)中GPIO引脚编号说明 | -| dc_pin | int | DC引脚,见[machine.Pin](machine.Pin.md)中GPIO引脚编号说明 | -| rst_pin | int | RST引脚,见[machine.Pin](machine.Pin.md)中GPIO引脚编号说明 | +| 参数 | 类型 | 说明 | +| ------------------ | --------- | ------------------------------------------------------------ | +| lcd_init_data | bytearray | LCD 初始化的配置命令 | +| lcd_width | int | LCD 屏幕的宽度,宽度不超过 500像素 | +| lcd_hight | int | LCD 屏幕的高度,高度不超过 500像素 | +| lcd_clk | int | SPI 时钟,见machine.SPI 创建SPI对象参数说明clk | +| data_line | int | 数据线数,参数值为 1 和 2 | +| line_num | int | 线的数量,参数值为 3 和 4 | +| lcd_type | int | 屏幕类型,0 - rgb;1 - fstn | +| lcd_invalid | bytearray | LCD 区域设置的配置命令 | +| lcd_display_on | bytearray | LCD 屏亮的配置命令 | +| lcd_display_off | bytearray | LCD 屏灭的配置命令 | +| lcd_set_brightness | bytearray | LCD屏亮度的配置命令:
设置为 None表示由 LCD_BL_K 控制亮度 | +| lcd_interface | int | LCD接口类型,0 - LCM接口;1 - SPI接口 | +| spi_port | int | 通道选择[0,1],参照SPI部分 | +| spi_mode | int | SPI 的工作模式(通常使用工作模式0):
时钟极性CPOL:即SPI空闲时,时钟信号SCLK的电平(0:空闲时低电平; 1:空闲时高电平)
0 : CPOL=0, CPHA=0
1 : CPOL=0, CPHA=1
2 : CPOL=1, CPHA=0
3 : CPOL=1, CPHA=1 | +| cs_pin | int | CS引脚,见[machine.Pin](machine.Pin.md)中GPIO引脚编号说明 | +| dc_pin | int | DC引脚,见[machine.Pin](machine.Pin.md)中GPIO引脚编号说明 | +| rst_pin | int | RST引脚,见[machine.Pin](machine.Pin.md)中GPIO引脚编号说明 | **返回值描述:** diff --git a/zh/peripherals/misc.ADC.md b/zh/peripherals/misc.ADC.md index 5c73412..054772c 100644 --- a/zh/peripherals/misc.ADC.md +++ b/zh/peripherals/misc.ADC.md @@ -62,7 +62,7 @@ ADC.read(ADCn) ADC.close() ``` -xxxxxxxxxx from machine import WDTfrom machine import Timer​​timer1 = Timer(Timer.Timer1)​def feed(t):    wdt.feed()​​if __name__ == '__main__':    wdt = WDT(20)  # 启动看门狗,设置超时时间    timer1.start(period=15000, mode=timer1.PERIODIC, callback=feed)  # 使用定时器喂狗​    # wdt.stop()​python +**返回值描述:** `0`表示关闭成功,`-1`表示关闭失败。 diff --git a/zh/stdlib/utime.md b/zh/stdlib/utime.md index 1588d5a..e629480 100644 --- a/zh/stdlib/utime.md +++ b/zh/stdlib/utime.md @@ -304,7 +304,7 @@ utime.ticks_diff(ticks1, ticks2) **参数描述:** -- xxxxxxxxxx >>> import ustruct​# 定义格式字符串>>> fmt = "3sB"# 定义要解包的字节序列>>> data = bytearray(b'Tom\x19\x00\x00\x00\x00')​# 从字节序列的第一个字节开始解包>>> result = ustruct.unpack_from(fmt, data, 0)>>> print(result) # 输出:(b'Tom', 25)(b'Tom', 25)​python +- `ticks1`-int类型,第二次调用` ticks_ms`, `ticks_us`,或 `ticks_cpu`获取的tick值。 - `ticks2`-int类型,第一次调用` ticks_ms`, `ticks_us`,或 `ticks_cpu`获取的tick值。 **返回值描述:** diff --git a/zh/syslib/fota.md b/zh/syslib/fota.md index 9e253bd..dd165b6 100644 --- a/zh/syslib/fota.md +++ b/zh/syslib/fota.md @@ -106,7 +106,7 @@ fota(reset_disable=) 创建fota对象。 -xxxxxxxxxx # 假设有文件test.py,内容如下​def myprint():    count = 10    while count > 0:        count -= 1        print('##### test #####')​myprint()​#将test.py文件上传到模块中,进入命令行执行如下代码>>> uos.listdir('/usr/')['apn_cfg.json', 'test.py']>>> import example>>> example.exec('/usr/test.py')# 执行结果如下​##### test ########## test ########## test ########## test ########## test ########## test ########## test ########## test ########## test ########## test #####python +**参数描述:** - `reset_disable`-可选参数,是否关闭下载完升级包后自动重启功能。传入1关闭自动重启功能,不传入该参数或传入0则保留自动重启功能。 -- Gitee From 232ee9950572d2754bdacab83cc07ca1cae20502 Mon Sep 17 00:00:00 2001 From: Lysanderli Date: Mon, 23 Jun 2025 13:53:02 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E6=9B=B4=E6=96=B0API=E6=96=87=E6=A1=A3?= =?UTF-8?q?=E5=A4=B1=E6=95=88=E8=B7=B3=E8=BD=AC=E9=93=BE=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- zh/iotlib/checkNet.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zh/iotlib/checkNet.md b/zh/iotlib/checkNet.md index ef96a4d..9dc1293 100644 --- a/zh/iotlib/checkNet.md +++ b/zh/iotlib/checkNet.md @@ -25,7 +25,7 @@ checkNet.waitNetworkReady(timeout) | 参数 | 类型 | 含义 | | ----- | ---- | ------------------------------------------------------------ | | stage | 整型 | 表示当前正在检测什么状态:
1 - 正在检测SIM卡状态;
2 - 正在检测网络注册状态;
3 - 正在检测PDP Context激活状态。 | -| state | 整型 | 根据stage值,来表示不同的状态,具体如下:
stage = 1时,state表示 SIM卡的状态,范围0-21,每个状态值的详细说明,请参考[`sim.getStatus()`]([sim - SIM卡功能 - QuecPython](https://developer.quectel.com/doc/quecpython/API_reference/zh/iotlib/sim.html#sim.getStatus))方法的返回值说明;
stage = 2时,state表示网络注册状态,范围0-11,每个状态值的详细说明,请参考[`net.getState()`](https://python.quectel.com/doc/API_reference/zh/iotlib/net.html#%3Ccode%3Enet.getState%3C/code%3E)方法的返回值说明;
stage = 3时,state表示PDP Context激活状态,0表示没有激活成功,1表示激活成功。 | +| state | 整型 | 根据stage值,来表示不同的状态,具体如下:
stage = 1时,state表示 SIM卡的状态,范围0-21,每个状态值的详细说明,请参考[`sim.getStatus()`](https://developer.quectel.com/doc/quecpython/API_reference/zh/iotlib/sim.html#sim.getStatus)方法的返回值说明;
stage = 2时,state表示网络注册状态,范围0-11,每个状态值的详细说明,请参考[`net.getState()`](https://developer.quectel.com/doc/quecpython/API_reference/zh/iotlib/net.html#%3Ccode%3Enet.getState%3C/code%3E)方法的返回值说明;
stage = 3时,state表示PDP Context激活状态,0表示没有激活成功,1表示激活成功。 | 如果网络已经就绪,则返回`(3,1)`,否则可参考如下说明来排查定位问题: -- Gitee