diff --git a/docs/Advanced_development/zh/QuecPythonWirelessNetwork/DataCall.md b/docs/Advanced_development/zh/QuecPythonWirelessNetwork/DataCall.md
index 9dfc56500db259af2fae120364d5993ecd04f7a2..5e558f3c379d8465c1dbe6f98b3130bf448f9943 100644
--- a/docs/Advanced_development/zh/QuecPythonWirelessNetwork/DataCall.md
+++ b/docs/Advanced_development/zh/QuecPythonWirelessNetwork/DataCall.md
@@ -1,28 +1,31 @@
-# QuecPython 无线联网开发
+# QuecPython_dataCall数据拨号
-## QuecPythonDataCall数据拨号
+本片文章主要简介QuecPython_datacall 模块的使用。
-本片文章主要简介QuecPython datacall 模块的使用。 datacall模块提供数据拨号的等功能。
+**模块功能:**
-包含的API如下:
+提供数据拨号相关接口。启动;配置;查询终端通过何种接入方式来访问何种网络。
-- **dataCall.start(profileIdx, ipType, apn, username, password, authType)**
-- **dataCall.setApn(profileIdx, ipType, apn, username, password, authType)**
-- **dataCall.setCallback**
-- **dataCall.getInfo(profileIdx, ipType)**
+**对应API:**
-具体的API 详解请参考[Quecpython-dataCall - 数据拨号](https://python.quectel.com/wiki/#/zh-cn/api/QuecPythonClasslib?id=datacall-%e6%95%b0%e6%8d%ae%e6%8b%a8%e5%8f%b7)
+- dataCall.start(profileIdx, ipType, apn, username, password, authType)
+- dataCall.setApn(profileIdx, ipType, apn, username, password, authType)
+- dataCall.setCallback(usrFun)
+- dataCall.getInfo(profileIdx, ipType)
-适用模块:
+具体的API 详解请参考[Quecpython - dataCall - 数据拨号](https://python.quectel.com/wiki/#/zh-cn/api/QuecPythonClasslib?id=datacall-数据拨号)
-- EC100Y-CN
-- EC600S-CN
-### 数据拨号简介
-简单理解, 数据拨号即为通过和服务器连接,获取网络访问许可。
+## 数据拨号简介
-#### 什么是APN
+简单理解, 数据拨号即为通过拨号的方式和服务器建立连接,获取网络访问许可过程。 对于终端设备来说就是配置APN。
+
+### 什么是APN
+
+APN指一种网络接入技术,是终端入网时必须配置的一个参数,它决定了终端通过哪种接入方式来访问网络。
+
+对于用户来说,可以访问的外部网络类型有很多,例如:[Internet](https://baike.baidu.com/item/Internet/272794)、[WAP网站](https://baike.baidu.com/item/WAP网站/3419865)、集团企业内部网络、行业内部专用网络。而不同的接入点所能访问的范围以及接入的方式是不同的,网络侧如何知道终端激活以后要访问哪个网络从而分配哪个网段的IP呢,这就要靠APN来区分了,即APN决定了用户的终端通过哪种接入方式来访问什么样的网络。
[APN Configuration](https://prepaid-data-sim-card.fandom.com/wiki/APN_Configuration)
@@ -30,6 +33,21 @@
所有运营商都使用特定的APN(Access Point Name,接入点名称)。这通常是您的SIM卡预先配置的,但必要时,您需手动进行调整。
+### APN的含义
+
+APN决定了终端通过哪种接入方式来访问网络,用来标识[GPRS](https://baike.baidu.com/item/GPRS/107439)的业务种类。
+
+APN分为两大类:
+
+- [WAP](https://baike.baidu.com/item/WAP/207452)业务。
+- [WAP](https://baike.baidu.com/item/WAP/207452)以外的服务,比如:连接因特网。
+
+从运营商角度看,APN就是一个逻辑名字,APN一般都部署在GGSN设备上或者逻辑连接到GGSN上,用户使用GPRS上网时,都通过[GGSN](https://baike.baidu.com/item/GGSN/6041769)代理出去到外部网络,因此,APN设置、过滤、统计等,就成为一个对GPRS计费、GPRS资费有重要参考价值的参数之一(因为APN可以区分一个业务或者外部网络)。
+
+APN的完整说明在3GPP规范TS23.003 Clause 9中进行了详细定义。
+
+### APN的构成
+
APN接入点名称由两部分组成:
- 网络标识符
@@ -42,7 +60,7 @@ APN接入点名称由两部分组成:
- 移动国家代码(MCC)
-#### APN的类型
+### APN的类型
我们可以根据APN是连接到公共网络还是专用网络以及IP地址的分配方式来划分APN,有以下四种不同的类型:
@@ -56,21 +74,50 @@ APN接入点名称由两部分组成:
当我们比较公用APN和专用APN时,我们可以看到后者甚至不需要互联网连接。专用APN永远不允许其访问公共互联网,而同时又保持其在蜂窝网络基础架构上,从而确保了安全的数据处理。
-#### 配置APN
+### 配置APN
-对于QuecPython,可使用SIM卡默认APN或者手动配置APN。
+对于QuecPython,可使用SIM卡默认APN或者手动配置APN,也可以调用API函数配置APN。
-### 快速开始
-QuecPython使用datacall 模块常规流程:
-1. 使用链路拨号,获取进行链路激活。
+## 快速开始
-2. 获取IP信息等基本数据。
+### 操作流程
+1. 使用链路拨号,获取进行链路激活。
+2. 获取IP信息等基本数据。
3. 注册断网回调函数, 在回调函数里面,判断网络状态,进入重拨等操作。
-#### 代码实验
+### 交互实验
+
+```python
+>>> import dataCall
+>>> import net
+>>> dataCall.setApn(1, 0, "3gnet.mnc001.mcc460.gprs", "", "", 0)
+0
+>>> dataCall.start(1, 0, "3gnet.mnc001.mcc460.gprs", "", "", 0)
+0
+>>> def nw_cb(args):
+ pdp = args[0]
+ nw_sta = args[1]
+ if nw_sta == 1:
+ print("*** network %d connected! ***" % pdp)
+ else:
+ print("*** network %d not connected! ***" % pdp)
+
+>>> dataCall.setCallback(nw_cb)
+0
+>>> net.setModemFun(4) # 进入飞行模式
+0
+>>> *** network 1 not connected! *** # 进入飞行模式导致断网,通过回调告知用户
+>>> net.setModemFun(1) # 退出飞行模式
+0
+>>> *** network 1 connected! *** # 退出飞行模式,自动拨号,等待联网成功,通过回调告知用户
+```
+
+
+
+### 代码实验
1. 首先链路激活。
@@ -135,15 +182,15 @@ if __name__ == "__main__":
```
-### 参考资料
+## 参考资料
[What is Access Point Name (APN)](https://1ot.mobi/resources/blog/iot-hacking-series-3-what-is-access-point-name-apn-and-how-it-works)
[APN Configuration](https://prepaid-data-sim-card.fandom.com/wiki/APN_Configuration)
-[Quecpython-dataCall - 数据拨号](https://python.quectel.com/wiki/#/zh-cn/api/QuecPythonClasslib?id=datacall-%e6%95%b0%e6%8d%ae%e6%8b%a8%e5%8f%b7)
+[Quecpython - dataCall - 数据拨号](https://python.quectel.com/wiki/#/zh-cn/api/QuecPythonClasslib?id=datacall-数据拨号)
-### 配套代码
+## 配套代码
- 下载代码
+ 下载代码
\ No newline at end of file
diff --git a/docs/Advanced_development/zh/QuecPythonWirelessNetwork/cellLocator.md b/docs/Advanced_development/zh/QuecPythonWirelessNetwork/cellLocator.md
index 14ee5bd1a43af21770b8fc2692422db1328788a6..9849958bdcef0006f03a8c974fa8b9ffb0183e70 100644
--- a/docs/Advanced_development/zh/QuecPythonWirelessNetwork/cellLocator.md
+++ b/docs/Advanced_development/zh/QuecPythonWirelessNetwork/cellLocator.md
@@ -1,29 +1,41 @@
-## QuecPython cellLocator基站定位
+# QuecPython_cellLocator基站定位
-本片文章主要简介QuecPython cellLocator 基站定位的使用。
+本片文章主要简介QuecPytho_cellLocator 基站定位的使用。
**模块功能:**
-提供基站定位接口,获取坐标信息。
+提供基站定位接口,获取终端坐标信息。
**对应API:**
- cellLocator.getLocation(serverAddr, port, token, timeout, profileID)
-具体的API 详解请参考 [cellLocator - 基站定位](https://python.quectel.com/wiki/api/#celllocator-)
+具体的API 详解请参考 [cellLocator - 基站定位](https://python.quectel.com/wiki/#/zh-cn/api/QuecPythonClasslib?id=celllocator-基站定位)
-### cellLocator 概述
-定位是指通过特定的方法来获取用户终端的位置信息(经纬度坐标)的技术或服务。常见的定位技术有两种:一种是基于GPS的定位,一种是基于移动运营网的基站定位。基于GPS的定位方式是利用GPS定位模块将自己的位置信号发送到定位后台来实现定位的。基站定位则是利用基站与终端之间的距离来确定终端位置的。后者不需要终端有GPS定位能力,但是精度很大程度依赖于基站的分布及覆盖范围的大小,有时误差会超过一公里。前者定位精度较高。此外还可以利用Wi-Fi在小范围内定位。
-基站定位一般应用于手机用户,手机基站定位服务又叫做移动位置服务(LBS,Location Based Service),它是通过运营商的网络(如GSM网)获取移动终端用户的位置信息(经纬度坐标),在电子地图平台的支持下,为用户提供相应定位服务的一种增值业务。例如目前中国移动动感地带提供的动感位置查询服务等。在物联网设备中也支持此类的操作。
+## 定位概述
-基站定位的大致原理为:移动电话测量不同基站的下行导频信号,得到不同基站下行导频的TOA(Time of Arrival,到达时刻)或TDOA(Time Difference of Arrival,到达时间差),根据该测量结果并结合基站的坐标,一般采用三角公式估计算法,就能够计算出终端的位置。实际的位置估计算法需要考虑多基站(3个或3个以上)定位的情况,因此算法要复杂很多。一般而言,移动台测量的基站数目越多,测量精度越高,定位性能改善越明显。QuecPython_cellLocator基站定位便是属于基站定位一种。
+定位是指通过特定的方法来获取用户终端的位置信息(经纬度坐标)的技术或服务。
-### 开发实例
+常见的定位技术有两种:一种是基于GPS的定位,一种是基于移动运营网的基站定位。基于GPS的定位方式是利用GPS定位模块将自己的位置信号发送到定位后台来实现定位的。基站定位则是利用基站与终端之间的距离来确定终端位置的。QuecPython_cellLocator基站定位便是属于基站定位一种。
-#### 交互实验
+基站定位的大致原理为:移动终端通过运营商的网络(如GSM网)测量不同基站的下行导频信号时间,得到不同基站下行导频的TOA(Time of Arrival,到达时刻)或TDOA(Time Difference of Arrival,到达时间差),根据该测量结果并结合基站的坐标,一般采用三角公式估计算法,获取移动终端用户的位置信息(经纬度坐标),在电子地图平台的支持下,为用户提供相应定位位置。实际的位置估计算法需要考虑多基站(3个或3个以上)定位的情况,因此算法要复杂很多。一般而言,移动台测量的基站数目越多,测量精度越高,定位性能改善越明显。
+
+
+
+## cellLocator 特性
+
+QuecPython_cellLocator基站定位不需要终端具有GPS定位能力,无需任何额外硬件支持,但是精度很大程度依赖于基站的分布及覆盖范围的大小。定位精准度大概500m~1500m(因基站密度及数据库数量而异)。此外还可以利用Wi-Fi在小范围内辅助定位,定位精准度约50m。
+
+由于是基站定位,需要基站信号覆盖。目前国内4G信号已基本覆盖,2G网络暂时间依旧可以使用,但面临退网风险,3G网络只有电信还没退网,也列入退网计划。在使用该功能前需先对使用地信号覆盖有所了解。
+
+
+
+## 快速开发
+
+### 交互实验
进行本次实验, 需要先确定SIM卡状态。 具体请参考SIM模块的文档。
@@ -36,7 +48,7 @@
# 上面使用的密钥仅为测试密钥
```
-#### 代码实验
+### 代码实验
计算当前位置到北京首都的距离,
@@ -89,11 +101,12 @@ if __name__ == "__main__":
```
-### 参考资料
+## 参考资料
-[cellLocator - 基站定位](https://python.quectel.com/wiki/#/zh-cn/api/?id=celllocator-基站定位)
+[cellLocator - 基站定位](https://python.quectel.com/wiki/#/zh-cn/api/QuecPythonClasslib?id=celllocator-基站定位)
-### 配套代码
+## 配套代码
- 下载代码
+ 下载代码
+
diff --git a/docs/Advanced_development/zh/QuecPythonWirelessNetwork/media/image-20210113215601231.png b/docs/Advanced_development/zh/QuecPythonWirelessNetwork/media/mediaQp_Advanced_development_QuecPythonWirelessNetwork_SIM_card.png
old mode 100755
new mode 100644
similarity index 100%
rename from docs/Advanced_development/zh/QuecPythonWirelessNetwork/media/image-20210113215601231.png
rename to docs/Advanced_development/zh/QuecPythonWirelessNetwork/media/mediaQp_Advanced_development_QuecPythonWirelessNetwork_SIM_card.png
diff --git a/docs/Advanced_development/zh/QuecPythonWirelessNetwork/media/image-20210113220623353.png b/docs/Advanced_development/zh/QuecPythonWirelessNetwork/media/mediaQp_Advanced_development_QuecPythonWirelessNetwork_SIM_telephone.png
old mode 100755
new mode 100644
similarity index 100%
rename from docs/Advanced_development/zh/QuecPythonWirelessNetwork/media/image-20210113220623353.png
rename to docs/Advanced_development/zh/QuecPythonWirelessNetwork/media/mediaQp_Advanced_development_QuecPythonWirelessNetwork_SIM_telephone.png
diff --git a/docs/Advanced_development/zh/QuecPythonWirelessNetwork/media/image-20210113192225821.png b/docs/Advanced_development/zh/QuecPythonWirelessNetwork/media/mediaQp_Advanced_development_QuecPythonWirelessNetwork_cellLocator_overview.png
old mode 100755
new mode 100644
similarity index 100%
rename from docs/Advanced_development/zh/QuecPythonWirelessNetwork/media/image-20210113192225821.png
rename to docs/Advanced_development/zh/QuecPythonWirelessNetwork/media/mediaQp_Advanced_development_QuecPythonWirelessNetwork_cellLocator_overview.png
diff --git a/docs/Advanced_development/zh/QuecPythonWirelessNetwork/sim.md b/docs/Advanced_development/zh/QuecPythonWirelessNetwork/sim.md
index 926823a2621c48e53e7fee67f71e03c5a5f157e7..7dbec0d56f6acf7bd344d6f3c5c1d8cd9a49e655 100644
--- a/docs/Advanced_development/zh/QuecPythonWirelessNetwork/sim.md
+++ b/docs/Advanced_development/zh/QuecPythonWirelessNetwork/sim.md
@@ -1,29 +1,30 @@
-## QuecPython SIM卡功能开发
+# QuecPython SIM卡功能开发
本文主要简介QuecPython SIM卡模块的使用。
-其包含的API有
+**模块功能:**
-- **sim.getImsi()**
-- **sim.getIccid()**
-- **sim.getPhoneNumber()**
-- **sim.getStatus()**
-- **sim.enablePin(pin)**
-- **sim.disablePin(pin)**
-- **sim.verifyPin(pin)**
-- **sim.unblockPin(puk, newPin)**
-- **sim.changePin(oldPin, newPin)**
-- **sim.readPhonebook(storage, start, end, username)**
-- **sim.writePhonebook(storage, index, username, number)**
+提供sim卡操作相关API,如查询sim卡状态、iccid、imsi等。
+
+**对应API:**
+
+- sim.getImsi()
+- sim.getIccid()
+- sim.getPhoneNumber()
+- sim.getStatus()
+- sim.enablePin(pin)
+- sim.disablePin(pin)
+- sim.verifyPin(pin)
+- sim.unblockPin(puk, newPin)
+- sim.changePin(oldPin, newPin)
+- sim.readPhonebook(storage, start, end, username)
+- sim.writePhonebook(storage, index, username, number)
具体的API 详解请参考[Quecpython sim - SIM卡库](https://python.quectel.com/wiki/api/#sim-sim)
-适用模块:
-- EC100Y-CN
-- EC600S-CN
-### SIM卡基本概述
+## SIM卡基本概述
SIM 分为手机卡和物联网卡。区别就是物联网卡没有电话号码不能收发短信,手机可以发短信。 常见的是手机卡。
@@ -33,7 +34,7 @@ SIM 分为手机卡和物联网卡。区别就是物联网卡没有电话号码
第四代标准的Nano卡。
-
+
EC600S-CN 需要的是第四代标准的 Nano 卡。
@@ -68,11 +69,11 @@ ICCID全称为Integrated Circuit Card Identifier,即集成电路卡识别码
Phonebook Memory Storage即为SIM卡电话薄存储区域。详情可参考 [ts_127007v100300p.pdf](https://www.etsi.org/deliver/etsi_ts/127000_127099/127007/10.03.00_60/ts_127007v100300p.pdf) 。
-
+
-### 快速开始
+## 快速开始
-#### 交互实验
+### 交互实验
```python
>>> import sim
@@ -93,7 +94,7 @@ Phonebook Memory Storage即为SIM卡电话薄存储区域。详情可参考 [ts_
(1, [(2, 'z', '18144786859')])
```
-#### 代码实验
+### 代码实验
使用命令行随机写SIM卡中的Phonebook。
@@ -173,13 +174,13 @@ if __name__ == "__main__":
```
-### 参考资料
+## 参考资料
**[ts_127007v100300p.pdf](https://www.etsi.org/deliver/etsi_ts/127000_127099/127007/10.03.00_60/ts_127007v100300p.pdf)**
-**[Quecpython sim - SIM卡库](https://python.quectel.com/wiki/api/#sim-sim)**
+**[Quecpython sim - SIM卡库]([QuecPython 类库 (quectel.com)](https://python.quectel.com/wiki/#/zh-cn/api/QuecPythonClasslib?id=sim-sim卡))**
-### 配套代码
+## 配套代码
下载代码
\ No newline at end of file
diff --git a/docs/FAQ/zh/sidebar.yaml b/docs/FAQ/zh/sidebar.yaml
index 5b5d68500f66f09b5a1691d77fde1a7d1c889214..8d08303be10cc6026aa243188539fda47fc88c7d 100644
--- a/docs/FAQ/zh/sidebar.yaml
+++ b/docs/FAQ/zh/sidebar.yaml
@@ -5,4 +5,4 @@ items:
- label: 参与贡献
file: join_us/README.md
- label: QuecPython_FAQ
- file: QuecPython_FAQ/QuecPython_FAQ.md
+ file: QuecPython_FAQ/QuecPython_FAQ.md
\ No newline at end of file