From e093379a9746912c3b86731ecb7c9de03953714a Mon Sep 17 00:00:00 2001 From: "burols.wang" Date: Tue, 5 Sep 2023 10:37:30 +0800 Subject: [PATCH 1/6] =?UTF-8?q?=20(sim/sms/esim):=20ST=E6=96=87?= =?UTF-8?q?=E6=A1=A3=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 固件版本: N 是否需要文案翻译: 是 --- ...2\345\244\215\346\255\243\345\270\270.png" | Bin 0 -> 22222 bytes .../zh/network-comm/esim/README.md | 35 +- .../sim/Common-exception-handling.md | 7 +- .../sim/Frequently-Asked-Questions.md | 4 +- ...python-SIM-function-application-example.md | 1597 +++++++++-------- .../Troubleshoot-SIM-card-abnormalities.md | 2 +- docs/Application_guide/zh/network-comm/sms.md | 4 +- 7 files changed, 854 insertions(+), 795 deletions(-) create mode 100644 "docs/Application_guide/zh/media/network-comm/sim/\351\207\215\345\220\257\345\220\216SIM\345\215\241\347\212\266\346\200\201\346\201\242\345\244\215\346\255\243\345\270\270.png" diff --git "a/docs/Application_guide/zh/media/network-comm/sim/\351\207\215\345\220\257\345\220\216SIM\345\215\241\347\212\266\346\200\201\346\201\242\345\244\215\346\255\243\345\270\270.png" "b/docs/Application_guide/zh/media/network-comm/sim/\351\207\215\345\220\257\345\220\216SIM\345\215\241\347\212\266\346\200\201\346\201\242\345\244\215\346\255\243\345\270\270.png" new file mode 100644 index 0000000000000000000000000000000000000000..ad96db1ca00e7c8e572042f4fb6d9f37db869f9b GIT binary patch literal 22222 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 TD5x|`a4c+TYJ2{fF)aRXz>q{| literal 0 HcmV?d00001 diff --git a/docs/Application_guide/zh/network-comm/esim/README.md b/docs/Application_guide/zh/network-comm/esim/README.md index 710d75db..1f8a08c6 100644 --- a/docs/Application_guide/zh/network-comm/esim/README.md +++ b/docs/Application_guide/zh/network-comm/esim/README.md @@ -116,7 +116,7 @@ M2M的远程SIM配置使用服务器驱动(推送模式)来配置和远程 * 跨境设备 -设备移动跨境场景需要进行运营商网络切换普通 SIM 卡无法满足,全球漫游卡资费又比较昂贵,通过eSIM 可以自由切换到当地运营商,而无需改动硬件。 +设备移动跨境场景需要进行运营商网络切换,普通 SIM 卡无法满足,全球漫游卡资费又比较昂贵,通过eSIM 可以自由切换到当地运营商,而无需改动硬件。 @@ -141,17 +141,17 @@ Quecpython现支持eSIM功能具体型号如下表: ### 工具介绍 -esimtools软件主要用于处理eSIM空卡情况,esimtools软件需要从运营商服务器下载数据,需要个人电脑可以正常访问因特网。 +QEsimTool软件主要用于处理eSIM空卡情况,QEsimTool软件需要从运营商服务器下载数据,需要个人电脑可以正常访问因特网。 -esimtools软件的运行机制:用户从运营商获取AccCode,将AccCode作为参数传给esimtools,esimtools通过AccCode解析出运营商服务器地址,并向运营商服务器发送下载profile数据请求。当esimtools下载profile数据完成后,将通过AT指令将数据发送到设备中,进而将profile写入eSIM卡中。 +QEsimTool软件的运行机制:用户从运营商获取AccCode,将AccCode作为参数传给QEsimTool,QEsimTool通过AccCode解析出运营商服务器地址,并向运营商服务器发送下载profile数据请求。当QEsimTool下载profile数据完成后,将通过AT指令将数据发送到设备中,进而将profile写入eSIM卡中。 -esimtools软件获取方式:请到[quectel](https://www.quectel.com/)官网,联系客服进行领取。 +QEsimTool软件获取方式:请到[quectel](https://www.quectel.com/)官网,联系客服进行领取。 ### 界面介绍 -esimtools软件附有应用指导文档,以下仅做简单介绍。 +QEsimTool软件附有应用指导文档,以下仅做简单介绍。 -esimtools软件启动界面如下: +QEsimTool软件启动界面如下: ![](../../media/network-comm/esim/1-1.png) @@ -163,7 +163,7 @@ Baud rate :串口波特率。 OPEN :以指定的波特率打开Port。 -AccCode :AccCode需要运营商提供,填入esimtools中,作为参数。 +AccCode :AccCode需要运营商提供,填入QEsimTool中,作为参数。 DownloadProfile :点击此按钮将解析AccCode,通过网络下载profile。 @@ -183,7 +183,7 @@ DeleteProfile :删除和ICCID对应的profile。 用户可以按照如下步骤进行操作: -* 正常启动模组设备后,在个人电脑中打开esimtools软件。 +* 正常启动模组设备后,在个人电脑中打开QEsimTool软件。 * 检查个人电脑是否可以正常访问因特网。 @@ -248,7 +248,7 @@ from sim import esim def usrFun(result): ''' :param result :OTA下载profile结果。 - :type result :整形,0:成功 1:失败 + :type result :整型,0:成功 1:失败 ''' print("OTA result:{}".format(result)) @@ -287,7 +287,7 @@ print("Get all profile :{}".format(profile_list)) ### 下载安装运营商profile -用户可通过如下接口下载安装运营商的profile。如eSIM为空卡,请使用esimtools工具进行安装首个profile。为确保此接口可以正常下载profile信息,需eSIM卡当前启用的profile能够正常注网,并且可以正常和AccCode中的运营商服务器地址进行网络数据交互。在此接口调用后,必须等下载结果通知到达后才能调用eSIM接口进行别的操作,否则将影响下载安装结果。 +用户可通过如下接口下载安装运营商的profile。如eSIM为空卡,请使用QEsimTool工具进行安装首个profile。为确保此接口可以正常下载profile信息,需eSIM卡当前启用的profile能够正常注网,并且可以正常和AccCode中的运营商服务器地址进行网络数据交互。在此接口调用后,必须等下载结果通知到达后才能调用eSIM接口进行别的操作,否则将影响下载安装结果。 接口如下: @@ -304,7 +304,7 @@ from sim import esim def usrFun(result): ''' :param result :OTA下载profile结果。 - :type result :整形,0:成功 1:失败 + :type result :整型,0:成功 1:失败 ''' print("OTA result:{}".format(result)) @@ -438,9 +438,9 @@ class pyesim(): self.stage, self.state = checkNet.waitNetworkReady(60) if self.stage == 3 and self.state == 1: print("network is success!") - self.debug_enbale = True - self.ota_result = False - pass + self.debug_enbale = True + self.ota_result = False + pass def esim_log(self,args): if self.debug_enbale == True: print("esim {}".format(args)) @@ -530,14 +530,14 @@ if __name__ == '__main__': ### 无法下载安装profile * AccCode是否错误,可向运营商进行确认。 -* 当前的设备或PC机是否可以正常访问从AccCode中解析除的url地址。 +* 当前的设备或PC机是否可以正常访问从AccCode中解析出的url地址。 * 是否重复下载安装profile。 * 是否运营商进行限制,同一个AccCode只能使用一次,需和运营商进行确定。 * 网络信号是否太弱,网络不稳定。 ### 下载安装profile后无法上网 -如遇到下载安装profile成功后无法上网,请做一次CFUN=0,1的切换操作。如依然无法上网,请按如下方面进行检查。 +如遇到下载安装profile成功后无法上网,请做一次CFUN=0/1的切换操作。如依然无法上网,请按如下方面进行检查。 * SIM卡状态是否异常 * 下载安装的profile是否已正常激活。 @@ -546,4 +546,5 @@ if __name__ == '__main__': ### 提示eSIM卡未插卡 -请参考Quecptyhon官网wik蜂窝无线网卡[网络异常处理]()。 +请参考QuecPtyhon官网wik蜂窝无线网卡[网络异常处理](https://python.quectel.com/doc/Application_guide/zh/network-comm/nic/cellular/exception-handling.html#开机时网络异常处理)。 + diff --git a/docs/Application_guide/zh/network-comm/sim/Common-exception-handling.md b/docs/Application_guide/zh/network-comm/sim/Common-exception-handling.md index 866fd518..e5f4a867 100644 --- a/docs/Application_guide/zh/network-comm/sim/Common-exception-handling.md +++ b/docs/Application_guide/zh/network-comm/sim/Common-exception-handling.md @@ -1,5 +1,5 @@ # 常见异常处理 -SIM卡状态异常以及注网、拨号异常,请参考Quecpython官网wiki蜂窝无线网卡[网络异常处理]()部分 +SIM卡状态异常以及注网、拨号异常,请参考QuecPython官网wiki蜂窝无线网卡[网络异常处理](https://python.quectel.com/doc/Application_guide/zh/network-comm/nic/cellular/exception-handling.html)部分 ## 无法发短信 * 检查SIM卡状态是否异常。 @@ -19,8 +19,9 @@ SIM卡状态异常以及注网、拨号异常,请参考Quecpython官网wiki蜂 ## 注网拨号成功URL无法访问 * SIM卡是否欠费,运营商不转发对端回复数据或不转发请求报文到对端。如欠费请充费。 -* 其他异常情况参考Quecpython官网wiki蜂窝无线网卡[网络异常处理]()部分。 +* 其他异常情况参考QuecPython官网wiki蜂窝无线网卡[网络异常处理](https://python.quectel.com/doc/Application_guide/zh/network-comm/nic/cellular/exception-handling.html)部分。 ## 某些协议数据不能正常交互 * 对于此类SIM卡运营商是否对指定的某些协议做了限制,例如NTP协议,某些运营商对NTP协议限制只能发送到指定的NTP服务地址,否则无法交互。和运营商核实,开通此类业务。 -* 其他异常情况参考Quecpython官网wiki蜂窝无线网卡[网络异常处理]()部分。 +* 其他异常情况参考QuecPython官网wiki蜂窝无线网卡[网络异常处理](https://python.quectel.com/doc/Application_guide/zh/network-comm/nic/cellular/exception-handling.html)部分。 + diff --git a/docs/Application_guide/zh/network-comm/sim/Frequently-Asked-Questions.md b/docs/Application_guide/zh/network-comm/sim/Frequently-Asked-Questions.md index 64773bfd..cecf445c 100644 --- a/docs/Application_guide/zh/network-comm/sim/Frequently-Asked-Questions.md +++ b/docs/Application_guide/zh/network-comm/sim/Frequently-Asked-Questions.md @@ -2,13 +2,13 @@ ## 新办理SIM卡首次使用需要做什么 新办理SIM卡一般需要激活SIM卡,可以通过电话或者运营商提供的url地址进行操作。 ## SIM卡为什么无法发送短信 -* 未能正常设置短信验证码 +* 未能正常设置短信中心号码 * 未开通短信业务 * 运营商不支持 * 未正常联网 ## 为什么不能拨打电话 -* SIM卡是未流量卡不支持打电话 +* SIM卡是流量卡不支持打电话 * 设备不在服务区 * 信号太弱 * 设备未能正常注网 diff --git a/docs/Application_guide/zh/network-comm/sim/Quecpython-SIM-function-application-example.md b/docs/Application_guide/zh/network-comm/sim/Quecpython-SIM-function-application-example.md index 1ecb0fa2..fb69f9ba 100644 --- a/docs/Application_guide/zh/network-comm/sim/Quecpython-SIM-function-application-example.md +++ b/docs/Application_guide/zh/network-comm/sim/Quecpython-SIM-function-application-example.md @@ -1,770 +1,827 @@ -# Quecpython SIM卡API说明 - -## 查询SIM卡信息 - -### 查询IMSI - -用户可通过如下接口获取SIM卡的IMSI号码,以方便用户对IMSI的应用。 - -接口如下: - -```python -sim.getImsi() -``` - -示例 - -```python -# -*- coding: UTF-8 -*- -#示例 -import sim - -imsi = sim.getImsi() -print("Get IMSI : {}".format(imsi)) - -``` - -### 查询ICCID - -用户可通过如下接口查询SIM卡的ICCID,以方便用户对SIM卡的ICCID的应用。 - -接口如下: - -```python -sim.getIccid() -``` - -示例 - -```python -# -*- coding: UTF-8 -*- -#示例 -import sim - -iccid = sim.getIccid() -print("Get IMSI : {}".format(iccid)) - -``` - - - -### 查询电话号码 - -用户可通过如下接口查询SIM卡电话号码,SIM电话号码需要先设置后查询。 - -接口如下: - -```python -sim.getPhoneNumber() -``` - -示例 - -```python -# -*- coding: UTF-8 -*- -#示例 -import sim - -phone_num = sim.getPhoneNumber() -print("Get Phone Number is : {}".format(phone_num)) - -``` - -### 应用场景 - -应用程序启动后,等待注网成功,然后查询SIM卡信息,为后续处理业务做准备。 - -```python -# -*- coding: UTF-8 -*- -#示例 -import sim -import checkNet - -sim_status_dict={ - 0:"SIM卡不存在/被移除", - 1:"SIM已经准备好", - 2:"SIM卡已锁定,等待CHV1密码", - 3:"SIM卡已被阻拦,需要CHV1密码解锁密码", - 4:"由于SIM/USIM个性化检查失败,SIM卡被锁定", - 5:"由于PCK错误导致SIM卡被阻拦,需要MEP密码解除阻拦", - 6:"需要隐藏电话簿条目的密钥", - 7:"需要解锁隐藏密钥的编码", - 8:"SIM卡已锁定,等待CHV2密码", - 9:"SIM卡被阻拦,需要CHV2解锁密码", - 10:"由于网络个性化检查失败,SIM卡被锁定", - 11:"由于NCK不正确,SIM卡被阻拦,需要MEP解锁密码", - 12:"由于子网络锁个性化检查失败,SIM卡被锁定", - 13:"由于错误的NSCK,SIM卡被阻拦,需要MEP解锁密码", - 14:"由于服务提供商个性化检查失败,SIM卡被锁定", - 15:"由于SPCK错误,SIM卡被阻拦,需要MEP解锁密码", - 16:"由于企业个性化检查失败,SIM卡被锁定", - 17:"由于CCK不正确,SIM卡被阻止,需要MEP解锁密码", - 18:"SIM正在初始化,等待完成", - 19:"CHV1/CHV2/PIN错误", - 20:"SIM卡无效", - 21:"未知状态" -} - -if __name__ == '__main__': - - # 1、查询SIM卡状态 - sim_status = sim.getStatus() - if sim_status not in sim_status_dict: - print("接口返回失败") - exit() - if sim_status != 1: - print("Get SIM status : {}".format(sim_status_dict[sim_status])) - exit() - - # 2、等待注网成功 - stage, state = checkNet.waitNetworkReady(30) - if stage == 3 and state == 1: - print('Network connection successful.') - else: - print('Network connection failed, stage={}, state={}'.format(stage, state)) - exit() - - # 3、查询开机注网后的SIM卡信息 - - imsi = sim.getImsi() - if type(imsi).__name__ == 'int': - print("Get IMSI failed !") - exit() - print("Get IMSI is : {}".format(imsi)) - - iccid = sim.getIccid() - if type(iccid).__name__ == 'int': - print("Get ICCID failed !") - exit() - print("Get ICCID is : {}".format(iccid)) - - phone_number= sim.getPhoneNumber() - if type(phone_number).__name__ == 'int': - print("Get phone_number failed !") - exit() - print("Get phone number is : {}".format(phone_number)) - -``` - - - -## 查询SIM卡状态 - -用户可通过如下接口获取当前SIM卡的状态,通过SIM卡状态判断SIM卡是否可以正常使用。 - -接口如下: - -``` -sim.getStatus() -``` - -示例 - -```python -# -*- coding: UTF-8 -*- -#示例 -import sim -sim_status_dict={ - 0:"SIM卡不存在/被移除", - 1:"SIM已经准备好", - 2:"SIM卡已锁定,等待CHV1密码", - 3:"SIM卡已被阻拦,需要CHV1密码解锁密码", - 4:"由于SIM/USIM个性化检查失败,SIM卡被锁定", - 5:"由于PCK错误导致SIM卡被阻拦,需要MEP密码解除阻拦", - 6:"需要隐藏电话簿条目的密钥", - 7:"需要解锁隐藏密钥的编码", - 8:"SIM卡已锁定,等待CHV2密码", - 9:"SIM卡被阻拦,需要CHV2解锁密码", - 10:"由于网络个性化检查失败,SIM卡被锁定", - 11:"由于NCK不正确,SIM卡被阻拦,需要MEP解锁密码", - 12:"由于子网络锁个性化检查失败,SIM卡被锁定", - 13:"由于错误的NSCK,SIM卡被阻拦,需要MEP解锁密码", - 14:"由于服务提供商个性化检查失败,SIM卡被锁定", - 15:"由于SPCK错误,SIM卡被阻拦,需要MEP解锁密码", - 16:"由于企业个性化检查失败,SIM卡被锁定", - 17:"由于CCK不正确,SIM卡被阻止,需要MEP解锁密码", - 18:"SIM正在初始化,等待完成", - 19:"CHV1/CHV2/PIN错误", - 20:"SIM卡无效", - 21:"未知状态" -} - -sim_status = sim.getStatus() -if sim_status not in sim_status_dict: - print("接口返回失败") - exit() - if sim_status != 1: - print("Get SIM status status : {}".format(sim_status_dict[sim_status])) - exit() -print("Get sim_status is : {}".format(sim_status_dict[sim_status])) - -``` - - - -## PIN码验证功能 - -用户可通过开启PIN码验证功能来保证SIM卡的使用安全。PIN码是SIM卡的安全识别码,用于验证用户的身份和保护个人信息安全。开启PIN码验后,每次重启设备后(或CFUN0/1切换后)均需进行PIN码验证,在验证通过后SIM卡才能正常使用。PIN码验证连续3次输入错误后SIM卡将被锁定,需要用PUK码进行解码。 - -### 开启PIN验证 - -用户可通过如下接口开启SIM卡PIN码验证功能,用以保证SIM卡的使用安全。 - -接口如下: - -```python -sim.enablePin(pin) -``` - -示例 - -```python -# -*- coding: UTF-8 -*- -#示例 -import sim - -result = sim.enablePin("1234") -print("Enable PIN : {}".format(result)) - -``` - - - -### 关闭PIN验证 - -用户可通过如下接口关闭PIN码验证功能,在保证SIM卡是在安全的环境下使用时,可以关闭PIN码验证功能来简化应用程序。 - -接口如下: - -```python -sim.disablePin(pin) -``` - -示例 - -```python -# -*- coding: UTF-8 -*- -#示例 -import sim - -#根据实际PIN码输入,此处"1234"为示例PIN码 -result = sim.disablePin("1234") -print("Disable PIN : {}".format(result)) - -``` - - - -### PIN验证 - -用户可通过如下接口来完成SIM卡的PIN码验证,开启PIN码验证后,SIM卡需完成PIN码验证后才能将状态将切换到正常状态,之后应用程序才能进行业务处理。 - -接口如下: - -```python -sim.verifyPin(pin) -``` - -示例 - -```python -# -*- coding: UTF-8 -*- -#示例 -import sim - -#根据实际PIN码输入 -result = sim.verifyPin("1234") -print("Verify PIN result is : {}".format(result)) -``` - - - -### 修改PIN - -用户可定期通过如下接口修改SIM卡的PIN码,提高SIM卡使用的安全性。 - -接口如下: - -```python -sim.changePin(oldPin, newPin) -``` - -示例 - -```python -# -*- coding: UTF-8 -*- -#示例 -import sim - -sim.changePin("1234", "4321") -``` - -### 应用场景 - -用户为了安全应用SIM卡,需要在开启PIN码验证功能的情况下进行业务处理。 - -```python -# -*- coding: UTF-8 -*- -#示例 -import sim -import checkNet - -sim_status_dict={ - 0:"SIM卡不存在/被移除", - 1:"SIM已经准备好", - 2:"SIM卡已锁定,等待CHV1密码", - 3:"SIM卡已被阻拦,需要CHV1密码解锁密码", - 4:"由于SIM/USIM个性化检查失败,SIM卡被锁定", - 5:"由于PCK错误导致SIM卡被阻拦,需要MEP密码解除阻拦", - 6:"需要隐藏电话簿条目的密钥", - 7:"需要解锁隐藏密钥的编码", - 8:"SIM卡已锁定,等待CHV2密码", - 9:"SIM卡被阻拦,需要CHV2解锁密码", - 10:"由于网络个性化检查失败,SIM卡被锁定", - 11:"由于NCK不正确,SIM卡被阻拦,需要MEP解锁密码", - 12:"由于子网络锁个性化检查失败,SIM卡被锁定", - 13:"由于错误的NSCK,SIM卡被阻拦,需要MEP解锁密码", - 14:"由于服务提供商个性化检查失败,SIM卡被锁定", - 15:"由于SPCK错误,SIM卡被阻拦,需要MEP解锁密码", - 16:"由于企业个性化检查失败,SIM卡被锁定", - 17:"由于CCK不正确,SIM卡被阻止,需要MEP解锁密码", - 18:"SIM正在初始化,等待完成", - 19:"CHV1/CHV2/PIN错误", - 20:"SIM卡无效", - 21:"未知状态" -} - -if __name__ == '__main__': - - sim_status = sim.getStatus() - if sim_status not in sim_status_dict: - print("接口返回失败") - exit() - - if sim_status == 2: - # 开启了PIN码验证,需要验证PIN码 - PIN="1234" #PIN码-请根据SIM卡真实的PIN码填写 - pin_result = sim.verifyPin(PIN) - if pin_result != 0: - print("Error PIN ! Please input right PIN!") - exit() - - # 验证成功后关闭PIN码验证,下次不再需要进行PIN码验证 - # result = sim.disablePin(PIN) - #if result != 0: - # print("Error PIN ! Please input right PIN!") - # exit() - - # 查询SIM状态 - sim_status = sim.getStatus() - if sim_status not in sim_status_dict: - print("接口返回失败") - exit() - if sim_status != 1: - print("Get SIM status : {}".format(sim_status_dict[sim_status])) - exit() - - print("Get sim_status is : {}".format(sim_status_dict[sim_status])) - - #等待注网成功,进行业务处理 - stage,state = checkNet.waitNetworkReady(30) - if stage == 3 and state == 1: - print('Network connection successful.') - else: - print('Network connection failed, stage={}, state={}'.format(stage, state)) - -``` - - - -## SIM卡解锁 - -用户可通过如下接口处理连续3次输入PIN码错误导致锁PIN的情况。这个接口在用PUK码解锁的同时重新设置了PIN码。需要注意PUK码错误10次后SIM卡将被永久锁定,自动报废。 - -接口如下: - -``` -sim.unblockPin(puk, newPin) -``` - -示例 - -```python -# -*- coding: UTF-8 -*- -#示例 -import sim - -sim.unblockPin("12345678", "0000") - -``` - -## 电话薄功能 - -用户在实际项目应用过程中,如需保存对端电话号码,需要用到电话薄功能。此接口可以提供保存电话号码信息的功能。此功能接口支持情况请参考Quecpython官网wiki[电话薄功能](https://python.quectel.com/doc/API_reference/zh/iotlib/sim.html#%E7%94%B5%E8%AF%9D%E7%B0%BF%E5%8A%9F%E8%83%BD) - -### 读取电话薄 - -用户可通过如下接口读取电话薄。其中电话号码存储位置参考Quecpython官网wiki中`sim.readPhonebook()`[接口参数描述](https://python.quectel.com/doc/API_reference/zh/iotlib/sim.html#%3Ccode%3Esim.readPhonebook%3C/code%3E)。需注意start-end差值需要小于等于20。 - -接口如下: - -```python -sim.readPhonebook(storage, start, end, username) -``` - -示例 - -```python -# -*- coding: UTF-8 -*- -#示例 -import sim - -# 读取本SIM卡电话薄中索引值1到4的电话信息 -sim_phone_boo = sim.readPhonebook(9, 1, 4, "") -print("SIM卡中电话薄 : {}".format(miss_call)) - -# 读取未接来电中索引值1到4的电话信息 -miss_call = sim.readPhonebook(4, 1, 4, "") -print("未接来电 : {}".format(miss_call)) - -``` - - - -### 设置电话薄 - -用户可通过如下接口来保存电话号码信息到电话簿中: - -``` -sim.writePhonebook(storage, index, username, number) -``` - -示例 - -```python -# -*- coding: UTF-8 -*- -#示例 -import sim - -# 保存Tom电话号码保存到SIM卡电话薄索引位置1的位置上 -sim.writePhonebook(9, 1, 'Tom', '18144786859') - -``` - -### 应用场景 - -在项目运行中,获取到电话号码,并保存电话号码到SIM卡电话薄中。 - -```python -# -*- coding: UTF-8 -*- -#示例 -import sim - -def save_phone_number_to_simbook(index,name,phonenumber,type = 0 ): - # type = 0,如果设置保存电话号码位置已经存在电话号码,直接返回,不覆盖保存 - if type == 0: - # 查询当前位置是否已有电话号码信息 - phone_info = sim.readPhonebook(9, index, index, "") - if type(phone_info).__name__ == 'int': - print("不存在") - elif phone_info[1][0][1] == name and phone_info[1][0][2] == phonenumber: - # 电话号码已存在 - print("已存在") - return - else: - print("不存在") - else: - pass - # 保存姓名,电话号码到SIM卡电话薄中index地址处 - result = sim.writePhonebook(9, index, name, phonenumber) - -def get_name_phone(): - return 'Tom','18144786858' - -if __name__ == '__main__': - name,phonenumber = get_name_phone() - - # 姓名电话号码已存在则不保存 - save_phone_number_to_simbook(1,name,phonenumber,0) - - #姓名电话号码已存在覆盖保存 - save_phone_number_to_simbook(1,name,phonenumber,1) -``` - - - -## SIM卡热插拔 - -在项目中,用户如需监测SIM卡插拔情况,可以用如下接口注册回调函数。当SIM卡插入或者拔出时,系统将会调用如下接口注册的回调函数,回调函数会上送SIM卡插入或者拔出的事件给应用层。用户可以根据通知事件来判断SIM卡是插入还是拔出。Quecpython模组对此接口支持情况请参考Quecpython官网wiki[热插拔功能](https://python.quectel.com/doc/API_reference/zh/iotlib/sim.html#%E7%83%AD%E6%8F%92%E6%8B%94%E5%8A%9F%E8%83%BD) - -### 注册热插拔回调 - -用户可通过如下接口注册SIM卡热插拔回调函数。 - -接口如下: - -```python -sim.setCallback(usrFun) -``` - -示例 - -```python -# -*- coding: UTF-8 -*- -#示例 -import sim - -def sim_hot_call(event): - if event == 1: - # SIM 卡插入 - print("Get SIM Inster event : {}".format(event)) - elif event == 2: - # SIM 卡拔出 - print("Get SIM Unplug event : {}".format(event)) - else: - # 未知事件 - print("Get SIM Unkown event : {}".format(event)) - -sim.setCallback(sim_hot_call) - -``` - - - -### 获取SIM卡热插拔配置 - -用户可通过如下接口查询SIM卡热插拔功能的当前配置信息,根据配置信息可以判断当前是否开启了热插拔功能。 - -接口如下: - -```python -sim.getSimDet() -``` - -示例 - -```python -# -*- coding: UTF-8 -*- -#示例 -import sim - -sim_hot_conf = sim.getSimDet() -print("Get Current SIM config info : {}".format(sim_hot_conf)) -if sim_hot_conf[0] == 1: - # SIM卡热插拔功能启用 - print("Current SIM Hotplug is enable") -``` - - - -### 配置SIM卡热插拔 - -用户可通过如下接口启用或者关闭SIM卡热插拔功能。 - -接口如下: - -```python -sim.setSimDet(switch, triggerLevel) -``` - -示例 - -```python -# -*- coding: UTF-8 -*- -#示例 -import sim - -# 先判断SIM卡插入时,电平是高电平还是低电平,在此以SIM插入时为高电平为例 - -# 1、注册热插拔回调函数 -def sim_hot_call(event): - print("Get SIM event : {}".format(event)) - -sim.setCallback(sim_hot_call) - -sim_hot_conf = sim.getSimDet() -# 2、开启SIM卡热插拔功能并标记模组SIM卡插入时,电平为高电平 -if sim_hot_conf[0] == 0: - print("SIM hot-swapping is not currently enabled") - print("Will enable this function") - sim.setSimDet(1, 1) -else: - print("Already enbale this function") - -``` - -### 应用场景 - -用户在项目中,检测SIM卡插拔事件,并设置标识,标记发生了SIM卡插入或者拔出事件。(用户可以根据需要决定是否通知应用程序中其他模块发生了SIM卡插拔事件)。 - -```python -# -*- coding: UTF-8 -*- -#示例 -import sim -import net -insert_flag = False -def sim_hot_call(event): - global insert_flag - print("Get SIM event : {}".format(event)) - if event == 1: - #检测到SIM卡插入,设置标记SIM卡被插入 - insert_flag = True - else: - insert_flag = False - -if __name__ == '__main__': - sim_hot_conf = sim.getSimDet() - if sim_hot_conf[0] == 0: - - #为开启SIM卡热插拔功能,在位电平标记请根据实际SIM卡在位电平设置 - #此处以SIM卡在为电平为1为例 - print("enable this function") - sim.setSimDet(1, 1) - - else: - print("Already enbale this function") - - #设置回调函数检测SIM卡的插拔动作 - sim.setCallback(sim_hot_call) - -``` - - - -## 双卡切换 - -用户在项目应用过程中,为了网络稳定,满足多种网络场景,需要两张不同SIM卡可以随时切换的功能,以应对各种网络异常情况。Quecpython模组对于此功能支持情况请参考Quecpython官网wiki中[SIM卡切卡功能](https://python.quectel.com/doc/API_reference/zh/iotlib/sim.html#SIM%E5%8D%A1%E5%88%87%E5%8D%A1%E5%8A%9F%E8%83%BD)。 - -### 注册切卡回调函数 - -用户可通过如下接口注册回调函数监测切卡事件。当发生了切卡事件,系统将通过注册的回调函数发出切卡事件通知应用层,应用层收到切卡事件通知后,将进行切卡导致的网络异常情况的处理。 - -接口如下: - -```python -sim.setSwitchcardCallback(usrFun) -``` - -示例 - -```python -# -*- coding: UTF-8 -*- -#示例 -import sim -import net - -def switch_sim_call(result): - print("Get switch SIM card event : {}".format(reslut)) - if result == 7: - # SIM卡切卡成功,通知应用层,SIM卡切卡成功 - print("SIM switch success!") - elif result == 9: - print("SIM switch failed!") - -if __name__ == '__main__': - - sim.setSwitchcardCallback(switch_sim_call) - -``` - - - -### 查询当前 SIM卡ID - -用户可通过如下接口查询当前启用的SIM卡ID。 - -接口如下 : - -```python -sim.getCurSimid() -``` - -示例 - -```python -# -*- coding: UTF-8 -*- -#示例 -import sim - -simid = sim.getCurSimid() -print("Current SIM is : {}".format(simid)) -``` - - - -### 切换SIM卡 - -用户可通过如下接口切换到指定SIM卡。如当前SIM卡出现不可恢复的异常网络情况,可用此接口将正在使用的SIM卡切换到另一张SIM卡,使应用程序可以继续处理业务。 - -接口如下: - -```python -sim.switchCard(simId) -``` - -示例 - -```python -# -*- coding: UTF-8 -*- -#示例 -import sim - -simid = sim.getCurSimid() -print("Current SIM is : {}".format(simid)) - -if simid == 0: - # 启用SIM2 - print("Current is SIM 1 and Will switch to SIM2") - sim.switchCard(1) - -``` - -### 应用场景 - -以下场景根据客户需求和业务流程,可能需要切卡操作。 - -* 检测到当前卡信号弱满足不了业务需求就尝试切到另一张卡, 比如单车,对讲机。 -* 一张卡接入公网,一张卡接入专网,公网卡主要做数据业务, 专网卡处理一些特殊任务, 比如电网客户。 - -* 用户应用程序在启动时检测到当前SIM卡状态无效,无法进行网络交互,切换到另一张SIM卡。 - -```python -# -*- coding: UTF-8 -*- -#示例 -import sim -import net - -def switch_sim_call(result): - print("Get switch SIM card event : {}".format(reslut)) - if result == 7: - print("SIM switch success!") - net.setModemFun(0) - net.setModemFun(1) - elif result == 9: - print("SIM switch failed!") - - -if __name__ == '__main__': - - sim.setSwitchcardCallback(switch_sim_call) - - sim_status = sim.getStatus() - if sim_status not in sim_status_dict: - print("接口返回失败") - exit() - if sim_status != 20: - # sim卡状态无效 - print("Get SIM status status : {}".format(sim_status_dict[sim_status])) - - #查询当前使用SIM卡 - sim_id = sim.getCurSimid() - - #切换到另一张卡上运行 - if sim_id == 0: - sim.switchCard(1) - else: - sim.switchCard(0) - -``` - - +# QuecPython SIM卡API说明 + +## 查询SIM卡信息 + +### 查询IMSI + +用户可通过如下接口获取SIM卡的IMSI号码,以方便用户对IMSI的应用。 + +接口如下: + +```python +sim.getImsi() +``` + +示例 + +```python +# -*- coding: UTF-8 -*- +#示例 +import sim + +imsi = sim.getImsi() +print("Get IMSI : {}".format(imsi)) + +``` + +### 查询ICCID + +用户可通过如下接口查询SIM卡的ICCID,以方便用户对SIM卡的ICCID的应用。 + +接口如下: + +```python +sim.getIccid() +``` + +示例 + +```python +# -*- coding: UTF-8 -*- +#示例 +import sim + +iccid = sim.getIccid() +print("Get IMSI : {}".format(iccid)) + +``` + + + +### 查询电话号码 + +用户可通过如下接口查询SIM卡电话号码,SIM电话号码需要先设置后查询。 + +接口如下: + +```python +sim.getPhoneNumber() +``` + +示例 + +```python +# -*- coding: UTF-8 -*- +#示例 +import sim + +phone_num = sim.getPhoneNumber() +print("Get Phone Number is : {}".format(phone_num)) + +``` + +### 查询信息应用场景 + +应用程序启动后,等待注网成功,然后查询SIM卡信息,为后续处理业务做准备。 + +```python +# -*- coding: UTF-8 -*- +#示例 +import sim +import checkNet +import sys + +sim_status_dict={ + 0:"SIM卡不存在/被移除", + 1:"SIM已经准备好", + 2:"SIM卡已锁定,等待CHV1密码", + 3:"SIM卡已被阻拦,需要CHV1密码解锁密码", + 4:"由于SIM/USIM个性化检查失败,SIM卡被锁定", + 5:"由于PCK错误导致SIM卡被阻拦,需要MEP密码解除阻拦", + 6:"需要隐藏电话簿条目的密钥", + 7:"需要解锁隐藏密钥的编码", + 8:"SIM卡已锁定,等待CHV2密码", + 9:"SIM卡被阻拦,需要CHV2解锁密码", + 10:"由于网络个性化检查失败,SIM卡被锁定", + 11:"由于NCK不正确,SIM卡被阻拦,需要MEP解锁密码", + 12:"由于子网络锁个性化检查失败,SIM卡被锁定", + 13:"由于错误的NSCK,SIM卡被阻拦,需要MEP解锁密码", + 14:"由于服务提供商个性化检查失败,SIM卡被锁定", + 15:"由于SPCK错误,SIM卡被阻拦,需要MEP解锁密码", + 16:"由于企业个性化检查失败,SIM卡被锁定", + 17:"由于CCK不正确,SIM卡被阻止,需要MEP解锁密码", + 18:"SIM正在初始化,等待完成", + 19:"CHV1/CHV2/PIN错误", + 20:"SIM卡无效", + 21:"未知状态" +} + +if __name__ == '__main__': + + # 1、查询SIM卡状态 + sim_status = sim.getStatus() + if sim_status not in sim_status_dict: + print("接口返回失败") + sys.exit() + print("Get SIM status : {}".format(sim_status_dict[sim_status])) + if sim_status != 1: + sys.exit() + + # 2、等待注网成功 + stage, state = checkNet.waitNetworkReady(30) + if stage == 3 and state == 1: + print('Network connection successful.') + else: + print('Network connection failed, stage={}, state={}'.format(stage, state)) + sys.exit() + + # 3、查询开机注网后的SIM卡信息 + + imsi = sim.getImsi() + if type(imsi).__name__ == 'int': + print("Get IMSI failed !") + sys.exit() + print("Get IMSI is : {}".format(imsi)) + + iccid = sim.getIccid() + if type(iccid).__name__ == 'int': + print("Get ICCID failed !") + sys.exit() + print("Get ICCID is : {}".format(iccid)) + + phone_number= sim.getPhoneNumber() + if type(phone_number).__name__ == 'int': + print("Get phone_number failed !") + sys.exit() + print("Get phone number is : {}".format(phone_number)) + +``` + + + +## 查询SIM卡状态 + +用户可通过如下接口获取当前SIM卡的状态,通过SIM卡状态判断SIM卡是否可以正常使用。 + +接口如下: + +``` +sim.getStatus() +``` + +示例 + +```python +# -*- coding: UTF-8 -*- +#示例 +import sim +import sys + +sim_status_dict={ + 0:"SIM卡不存在/被移除", + 1:"SIM已经准备好", + 2:"SIM卡已锁定,等待CHV1密码", + 3:"SIM卡已被阻拦,需要CHV1密码解锁密码", + 4:"由于SIM/USIM个性化检查失败,SIM卡被锁定", + 5:"由于PCK错误导致SIM卡被阻拦,需要MEP密码解除阻拦", + 6:"需要隐藏电话簿条目的密钥", + 7:"需要解锁隐藏密钥的编码", + 8:"SIM卡已锁定,等待CHV2密码", + 9:"SIM卡被阻拦,需要CHV2解锁密码", + 10:"由于网络个性化检查失败,SIM卡被锁定", + 11:"由于NCK不正确,SIM卡被阻拦,需要MEP解锁密码", + 12:"由于子网络锁个性化检查失败,SIM卡被锁定", + 13:"由于错误的NSCK,SIM卡被阻拦,需要MEP解锁密码", + 14:"由于服务提供商个性化检查失败,SIM卡被锁定", + 15:"由于SPCK错误,SIM卡被阻拦,需要MEP解锁密码", + 16:"由于企业个性化检查失败,SIM卡被锁定", + 17:"由于CCK不正确,SIM卡被阻止,需要MEP解锁密码", + 18:"SIM正在初始化,等待完成", + 19:"CHV1/CHV2/PIN错误", + 20:"SIM卡无效", + 21:"未知状态" +} + +if __name__ == '__main__': + sim_status = sim.getStatus() + if sim_status not in sim_status_dict: + print("接口返回失败") + sys.exit() + if sim_status != 1: + print("Get SIM status status : {}".format(sim_status_dict[sim_status])) + sys.exit() + print("Get sim_status is : {}".format(sim_status_dict[sim_status])) + +``` + + + +## PIN码验证功能 + +用户可通过开启PIN码验证功能来保证SIM卡的使用安全。PIN码是SIM卡的安全识别码,用于验证用户的身份和保护个人信息安全。开启PIN码验后,每次重启设备后(或CFUN0/1切换后)均需进行PIN码验证,在验证通过后SIM卡才能正常使用。PIN码验证连续3次输入错误后SIM卡将被锁定,需要用PUK码进行解码。 + +### 开启PIN验证 + +用户可通过如下接口开启SIM卡PIN码验证功能,用以保证SIM卡的使用安全。 + +接口如下: + +```python +sim.enablePin(pin) +``` + +示例 + +```python +# -*- coding: UTF-8 -*- +#示例 +import sim + +result = sim.enablePin("1234") +print("Enable PIN : {}".format(result)) + +``` + + + +### 关闭PIN验证 + +用户可通过如下接口关闭PIN码验证功能,在保证SIM卡是在安全的环境下使用时,可以关闭PIN码验证功能来简化应用程序。 + +接口如下: + +```python +sim.disablePin(pin) +``` + +示例 + +```python +# -*- coding: UTF-8 -*- +#示例 +import sim + +#根据实际PIN码输入,此处"1234"为示例PIN码 +result = sim.disablePin("1234") +print("Disable PIN : {}".format(result)) + +``` + + + +### PIN验证 + +用户可通过如下接口来完成SIM卡的PIN码验证,开启PIN码验证后,SIM卡需完成PIN码验证后才能将状态将切换到正常状态,之后应用程序才能进行业务处理。 + +接口如下: + +```python +sim.verifyPin(pin) +``` + +示例 + +```python +# -*- coding: UTF-8 -*- +#示例 +import sim + +#根据实际PIN码输入 +result = sim.verifyPin("1234") +print("Verify PIN result is : {}".format(result)) +``` + + + +### 修改PIN + +用户可定期通过如下接口修改SIM卡的PIN码,提高SIM卡使用的安全性。 + +接口如下: + +```python +sim.changePin(oldPin, newPin) +``` + +示例 + +```python +# -*- coding: UTF-8 -*- +#示例 +import sim + +sim.changePin("1234", "4321") +``` + +### PIN码应用场景 + +用户为了安全应用SIM卡,需要在开启PIN码验证功能的情况下进行业务处理。 + +```python +# -*- coding: UTF-8 -*- +#示例 +import sim +import checkNet +import sys + +sim_status_dict={ + 0:"SIM卡不存在/被移除", + 1:"SIM已经准备好", + 2:"SIM卡已锁定,等待CHV1密码", + 3:"SIM卡已被阻拦,需要CHV1密码解锁密码", + 4:"由于SIM/USIM个性化检查失败,SIM卡被锁定", + 5:"由于PCK错误导致SIM卡被阻拦,需要MEP密码解除阻拦", + 6:"需要隐藏电话簿条目的密钥", + 7:"需要解锁隐藏密钥的编码", + 8:"SIM卡已锁定,等待CHV2密码", + 9:"SIM卡被阻拦,需要CHV2解锁密码", + 10:"由于网络个性化检查失败,SIM卡被锁定", + 11:"由于NCK不正确,SIM卡被阻拦,需要MEP解锁密码", + 12:"由于子网络锁个性化检查失败,SIM卡被锁定", + 13:"由于错误的NSCK,SIM卡被阻拦,需要MEP解锁密码", + 14:"由于服务提供商个性化检查失败,SIM卡被锁定", + 15:"由于SPCK错误,SIM卡被阻拦,需要MEP解锁密码", + 16:"由于企业个性化检查失败,SIM卡被锁定", + 17:"由于CCK不正确,SIM卡被阻止,需要MEP解锁密码", + 18:"SIM正在初始化,等待完成", + 19:"CHV1/CHV2/PIN错误", + 20:"SIM卡无效", + 21:"未知状态" +} + +if __name__ == '__main__': + + sim_status = sim.getStatus() + if sim_status not in sim_status_dict: + print("接口返回失败") + sys.exit() + + if sim_status == 2: + # 开启了PIN码验证,需要验证PIN码 + PIN="1234" #PIN码-请根据SIM卡真实的PIN码填写 + pin_result = sim.verifyPin(PIN) + if pin_result != 0: + print("Error PIN ! Please input right PIN!") + sys.exit() + + # 验证成功后关闭PIN码验证,下次不再需要进行PIN码验证 + # result = sim.disablePin(PIN) + #if result != 0: + # print("Error PIN ! Please input right PIN!") + # sys.exit() + + # 查询SIM状态 + sim_status = sim.getStatus() + if sim_status not in sim_status_dict: + print("接口返回失败") + sys.exit() + if sim_status != 1: + print("Get SIM status : {}".format(sim_status_dict[sim_status])) + sys.exit() + + print("Get sim_status is : {}".format(sim_status_dict[sim_status])) + + #等待注网成功,进行业务处理 + stage,state = checkNet.waitNetworkReady(30) + if stage == 3 and state == 1: + print('Network connection successful.') + else: + print('Network connection failed, stage={}, state={}'.format(stage, state)) + +``` + + + +## SIM卡解锁 + +用户可通过如下接口处理连续3次输入PIN码错误导致锁PIN的情况。这个接口在用PUK码解锁的同时重新设置了PIN码。需要注意PUK码错误10次后SIM卡将被永久锁定,自动报废。 + +接口如下: + +``` +sim.unblockPin(puk, newPin) +``` + +示例 + +```python +# -*- coding: UTF-8 -*- +#示例 +import sim + +sim.unblockPin("12345678", "0000") + +``` + +## 电话薄功能 + +用户在实际项目应用过程中,如需保存对端电话号码,需要用到电话薄功能。此接口可以提供保存电话号码信息的功能。此功能接口支持情况请参考QuecPython官网wiki[电话薄功能](https://python.quectel.com/doc/API_reference/zh/iotlib/sim.html#%E7%94%B5%E8%AF%9D%E7%B0%BF%E5%8A%9F%E8%83%BD) + +### 读取电话薄 + +用户可通过如下接口读取电话薄。其中电话号码存储位置参考QuecPython官网wiki中`sim.readPhonebook()`[接口参数描述](https://python.quectel.com/doc/API_reference/zh/iotlib/sim.html#%3Ccode%3Esim.readPhonebook%3C/code%3E)。需注意start-end差值需要小于等于20。 + +接口如下: + +```python +sim.readPhonebook(storage, start, end, username) +``` + +示例 + +```python +# -*- coding: UTF-8 -*- +#示例 +import sim + +# 读取本SIM卡电话薄中索引值1到4的电话信息 +sim_phone_boo = sim.readPhonebook(9, 1, 4, "") +print("SIM卡中电话薄 : {}".format(miss_call)) + +# 读取未接来电中索引值1到4的电话信息 +miss_call = sim.readPhonebook(4, 1, 4, "") +print("未接来电 : {}".format(miss_call)) + +``` + + + +### 设置电话薄 + +用户可通过如下接口来保存电话号码信息到电话簿中: + +``` +sim.writePhonebook(storage, index, username, number) +``` + +示例 + +```python +# -*- coding: UTF-8 -*- +#示例 +import sim + +# 保存Tom电话号码保存到SIM卡电话薄索引位置1的位置上 +sim.writePhonebook(9, 1, 'Tom', '18144786859') + +``` + +### 电话薄应用场景 + +在项目运行中,获取到电话号码,并保存电话号码到SIM卡电话薄中。 + +```python +# -*- coding: UTF-8 -*- +#示例 +import sim + +def save_phone_number_to_simbook(index,name,phonenumber,input_type = 0 ): + # type = 0,如果设置保存电话号码位置已经存在电话号码,直接返回,不覆盖保存 + if input_type == 0: + # 查询当前位置是否已有电话号码信息 + phone_info = sim.readPhonebook(9, index, index, name) + if type(phone_info).__name__ == 'int': + print("不存在") + elif phone_info[1][0][1] == name and phone_info[1][0][2] == phonenumber: + # 电话号码已存在 + print("已存在") + return + else: + print("不存在") + else: + pass + # 保存姓名,电话号码到SIM卡电话薄中index地址处 + result = sim.writePhonebook(9, index, name, phonenumber) + +def get_name_phone(): + return 'Tom','18144786858' + +if __name__ == '__main__': + name,phonenumber = get_name_phone() + + # 姓名电话号码已存在则不保存 + save_phone_number_to_simbook(1,name,phonenumber,0) + + #姓名电话号码已存在覆盖保存 + save_phone_number_to_simbook(1,name,phonenumber,1) + +``` + + + +## SIM卡热插拔 + +在项目中,用户如需监测SIM卡插拔情况,可以用如下接口注册回调函数。当SIM卡插入或者拔出时,系统将会调用如下接口注册的回调函数,回调函数会上送SIM卡插入或者拔出的事件给应用层。用户可以根据通知事件来判断SIM卡是插入还是拔出。QuecPython模组对此接口支持情况请参考QuecPython官网wiki[热插拔功能](https://python.quectel.com/doc/API_reference/zh/iotlib/sim.html#%E7%83%AD%E6%8F%92%E6%8B%94%E5%8A%9F%E8%83%BD) + +### 注册热插拔回调 + +用户可通过如下接口注册SIM卡热插拔回调函数。 + +接口如下: + +```python +sim.setCallback(usrFun) +``` + +示例 + +```python +# -*- coding: UTF-8 -*- +#示例 +import sim + +def sim_hot_call(event): + if event == 1: + # SIM 卡插入 + print("Get SIM Inster event : {}".format(event)) + elif event == 2: + # SIM 卡拔出 + print("Get SIM Unplug event : {}".format(event)) + else: + # 未知事件 + print("Get SIM Unkown event : {}".format(event)) + +sim.setCallback(sim_hot_call) + +``` + + + +### 获取SIM卡热插拔配置 + +用户可通过如下接口查询SIM卡热插拔功能的当前配置信息,根据配置信息可以判断当前是否开启了热插拔功能。 + +接口如下: + +```python +sim.getSimDet() +``` + +示例 + +```python +# -*- coding: UTF-8 -*- +#示例 +import sim + +sim_hot_conf = sim.getSimDet() +print("Get Current SIM config info : {}".format(sim_hot_conf)) +if sim_hot_conf[0] == 1: + # SIM卡热插拔功能启用 + print("Current SIM Hotplug is enable") +``` + + + +### 配置SIM卡热插拔 + +用户可通过如下接口启用或者关闭SIM卡热插拔功能。 + +接口如下: + +```python +sim.setSimDet(switch, triggerLevel) +``` + +示例 + +```python +# -*- coding: UTF-8 -*- +#示例 +import sim + +# 先判断SIM卡插入时,电平是高电平还是低电平,在此以SIM插入时为高电平为例 + +# 1、注册热插拔回调函数 +def sim_hot_call(event): + print("Get SIM event : {}".format(event)) + +sim.setCallback(sim_hot_call) + +sim_hot_conf = sim.getSimDet() +# 2、开启SIM卡热插拔功能并标记模组SIM卡插入时,电平为高电平 +if sim_hot_conf[0] == 0: + print("SIM hot-swapping is not currently enabled") + print("Will enable this function") + sim.setSimDet(1, 1) +else: + print("Already enbale this function") + +``` + +### SIM卡热插拔应用场景 + +用户在项目中,检测SIM卡插拔事件,并设置标识,标记发生了SIM卡插入或者拔出事件。(用户可以根据需要决定是否通知应用程序中其他模块发生了SIM卡插拔事件)。 + +```python +# -*- coding: UTF-8 -*- +#示例 +import sim +import net +insert_flag = False +def sim_hot_call(event): + global insert_flag + print("Get SIM event : {}".format(event)) + if event == 1: + #检测到SIM卡插入,设置标记SIM卡被插入 + insert_flag = True + else: + insert_flag = False + +if __name__ == '__main__': + sim_hot_conf = sim.getSimDet() + if sim_hot_conf[0] == 0: + + #为开启SIM卡热插拔功能,在位电平标记请根据实际SIM卡在位电平设置 + #此处以SIM卡在为电平为1为例 + print("enable this function") + sim.setSimDet(1, 1) + + else: + print("Already enbale this function") + + #设置回调函数检测SIM卡的插拔动作 + sim.setCallback(sim_hot_call) + +``` + + + +## 双卡切换 + +用户在项目应用过程中,为了网络稳定,满足多种网络场景,需要两张不同SIM卡可以随时切换的功能,以应对各种网络异常情况。QuecPython模组对于此功能支持情况请参考QuecPython官网wiki中[SIM卡切卡功能](https://python.quectel.com/doc/API_reference/zh/iotlib/sim.html#SIM%E5%8D%A1%E5%88%87%E5%8D%A1%E5%8A%9F%E8%83%BD)。 + +### 注册切卡回调函数 + +用户可通过如下接口注册回调函数监测切卡事件。当发生了切卡事件,系统将通过注册的回调函数发出切卡事件通知应用层,应用层收到切卡事件通知后,将进行切卡导致的网络异常情况的处理。 + +接口如下: + +```python +sim.setSwitchcardCallback(usrFun) +``` + +示例 + +```python +# -*- coding: UTF-8 -*- +#示例 +import sim +import net + +sim_status_dict={ + 0:"SIM卡不存在/被移除", + 1:"SIM已经准备好", + 2:"SIM卡已锁定,等待CHV1密码", + 3:"SIM卡已被阻拦,需要CHV1密码解锁密码", + 4:"由于SIM/USIM个性化检查失败,SIM卡被锁定", + 5:"由于PCK错误导致SIM卡被阻拦,需要MEP密码解除阻拦", + 6:"需要隐藏电话簿条目的密钥", + 7:"需要解锁隐藏密钥的编码", + 8:"SIM卡已锁定,等待CHV2密码", + 9:"SIM卡被阻拦,需要CHV2解锁密码", + 10:"由于网络个性化检查失败,SIM卡被锁定", + 11:"由于NCK不正确,SIM卡被阻拦,需要MEP解锁密码", + 12:"由于子网络锁个性化检查失败,SIM卡被锁定", + 13:"由于错误的NSCK,SIM卡被阻拦,需要MEP解锁密码", + 14:"由于服务提供商个性化检查失败,SIM卡被锁定", + 15:"由于SPCK错误,SIM卡被阻拦,需要MEP解锁密码", + 16:"由于企业个性化检查失败,SIM卡被锁定", + 17:"由于CCK不正确,SIM卡被阻止,需要MEP解锁密码", + 18:"SIM正在初始化,等待完成", + 19:"CHV1/CHV2/PIN错误", + 20:"SIM卡无效", + 21:"未知状态" +} + +def switch_sim_call(result): + print("Get switch SIM card event : {}".format(reslut)) + if result == 7: + # SIM卡切卡成功,通知应用层,SIM卡切卡成功 + print("SIM switch success!") + elif result == 9: + print("SIM switch failed!") + +if __name__ == '__main__': + + sim.setSwitchcardCallback(switch_sim_call) + +``` + + + +### 查询当前 SIM卡ID + +用户可通过如下接口查询当前启用的SIM卡ID。 + +接口如下 : + +```python +sim.getCurSimid() +``` + +示例 + +```python +# -*- coding: UTF-8 -*- +#示例 +import sim + +simid = sim.getCurSimid() +print("Current SIM is : {}".format(simid)) +``` + + + +### 切换SIM卡 + +用户可通过如下接口切换到指定SIM卡。如当前SIM卡出现不可恢复的异常网络情况,可用此接口将正在使用的SIM卡切换到另一张SIM卡,使应用程序可以继续处理业务。 + +接口如下: + +```python +sim.switchCard(simId) +``` + +示例 + +```python +# -*- coding: UTF-8 -*- +#示例 +import sim + +simid = sim.getCurSimid() +print("Current SIM is : {}".format(simid)) + +if simid == 0: + # 启用SIM2 + print("Current is SIM 1 and Will switch to SIM2") + sim.switchCard(1) + +``` + +### 双卡切换应用场景 + +以下场景根据客户需求和业务流程,可能需要切卡操作。 + +* 检测到当前卡信号弱满足不了业务需求就尝试切到另一张卡, 比如单车,对讲机。 +* 一张卡接入公网,一张卡接入专网,公网卡主要做数据业务, 专网卡处理一些特殊任务, 比如电网客户。 + +* 用户应用程序在启动时检测到当前SIM卡状态无效,无法进行网络交互,切换到另一张SIM卡。 + +```python +# -*- coding: UTF-8 -*- +#示例 +import sim +import net +import sys + +sim_status_dict={ + 0:"SIM卡不存在/被移除", + 1:"SIM已经准备好", + 2:"SIM卡已锁定,等待CHV1密码", + 3:"SIM卡已被阻拦,需要CHV1密码解锁密码", + 4:"由于SIM/USIM个性化检查失败,SIM卡被锁定", + 5:"由于PCK错误导致SIM卡被阻拦,需要MEP密码解除阻拦", + 6:"需要隐藏电话簿条目的密钥", + 7:"需要解锁隐藏密钥的编码", + 8:"SIM卡已锁定,等待CHV2密码", + 9:"SIM卡被阻拦,需要CHV2解锁密码", + 10:"由于网络个性化检查失败,SIM卡被锁定", + 11:"由于NCK不正确,SIM卡被阻拦,需要MEP解锁密码", + 12:"由于子网络锁个性化检查失败,SIM卡被锁定", + 13:"由于错误的NSCK,SIM卡被阻拦,需要MEP解锁密码", + 14:"由于服务提供商个性化检查失败,SIM卡被锁定", + 15:"由于SPCK错误,SIM卡被阻拦,需要MEP解锁密码", + 16:"由于企业个性化检查失败,SIM卡被锁定", + 17:"由于CCK不正确,SIM卡被阻止,需要MEP解锁密码", + 18:"SIM正在初始化,等待完成", + 19:"CHV1/CHV2/PIN错误", + 20:"SIM卡无效", + 21:"未知状态" +} + +def switch_sim_call(result): + print("Get switch SIM card event : {}".format(reslut)) + if result == 7: + print("SIM switch success!") + net.setModemFun(0) + net.setModemFun(1) + elif result == 9: + print("SIM switch failed!") + + +if __name__ == '__main__': + + sim.setSwitchcardCallback(switch_sim_call) + + sim_status = sim.getStatus() + if sim_status not in sim_status_dict: + print("接口返回失败") + sys.exit() + if sim_status != 20: + # sim卡状态无效 + print("Get SIM status status : {}".format(sim_status_dict[sim_status])) + + #查询当前使用SIM卡 + sim_id = sim.getCurSimid() + + #切换到另一张卡上运行 + if sim_id == 0: + sim.switchCard(1) + else: + sim.switchCard(0) + +``` + + diff --git a/docs/Application_guide/zh/network-comm/sim/Troubleshoot-SIM-card-abnormalities.md b/docs/Application_guide/zh/network-comm/sim/Troubleshoot-SIM-card-abnormalities.md index b143d1d3..c5281fe7 100644 --- a/docs/Application_guide/zh/network-comm/sim/Troubleshoot-SIM-card-abnormalities.md +++ b/docs/Application_guide/zh/network-comm/sim/Troubleshoot-SIM-card-abnormalities.md @@ -56,7 +56,7 @@ SIM卡状态异常是指通过`sim.getStatus()`这个API查询的值既不是0 步骤3:重启设备,再次查询SIM卡状态,确认是否恢复正常。 -![img](https://gitee.com/no1-wgw/teedoc_with_qpydoc/raw/app_guide/docs/Application_guide/zh/media/network-comm/nic/cellular/%E9%87%8D%E5%90%AF%E5%90%8ESIM%E5%8D%A1%E7%8A%B6%E6%80%81%E6%81%A2%E5%A4%8D%E6%AD%A3%E5%B8%B8.png) +![img](../../media/network-comm/sim/重启后SIM卡状态恢复正常.png) - 当SIM卡状态值是3时 diff --git a/docs/Application_guide/zh/network-comm/sms.md b/docs/Application_guide/zh/network-comm/sms.md index aa2b19b0..b635eb53 100644 --- a/docs/Application_guide/zh/network-comm/sms.md +++ b/docs/Application_guide/zh/network-comm/sms.md @@ -255,7 +255,7 @@ PDU类型对于SMS-DELIVER,结构图如下: ### 短信接收流程 -短信先从网络接收到短信,之后移动设备终端回复CP-ACK报文到网络,当短信解析完成,移动设备终端再次发送RP-ACK,网络层回复CP-ACK。 +移动设备先从网络侧接收到短信,之后移动设备终端回复CP-ACK报文到网络,当短信解析完成,移动设备终端再次发送RP-ACK,网络层回复CP-ACK。 如下图: @@ -1240,7 +1240,7 @@ SM和ME短信存储空间均已满,导致短信接收不到,只有清除短 * 应用场景7 -短信存储空间为SM,SM存储空间已满的情况下,想保留短信同时也保证短信可以正常接收,可以更换短信接收存储空间为ME。如果ME存储空间也已满。只有删除短信,才能正常接收到短信。 +短信存储空间为SM,SM存储空间已满的情况下,想保留短信同时也保证短信可以正常接收,可以更换短信接收存储空间为ME。如果ME存储空间也已满,只有删除短信,才能正常接收到短信。 * 应用场景8 -- Gitee From be06c43770f9c20ca7ba3d7cfef65f49e52fbdd1 Mon Sep 17 00:00:00 2001 From: "burols.wang" Date: Sun, 10 Sep 2023 12:21:53 +0800 Subject: [PATCH 2/6] =?UTF-8?q?<>=20(sim/esim):=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E6=8F=8F=E8=BF=B0=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 固件版本: N 是否需要文案翻译: 是 --- docs/Application_guide/zh/network-comm/esim/README.md | 4 ++-- .../sim/Quecpython-SIM-function-application-example.md | 2 +- docs/Application_guide/zh/network-comm/sim/README.md | 2 +- docs/Application_guide/zh/sidebar.yaml | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/Application_guide/zh/network-comm/esim/README.md b/docs/Application_guide/zh/network-comm/esim/README.md index 1f8a08c6..8d6ed2a2 100644 --- a/docs/Application_guide/zh/network-comm/esim/README.md +++ b/docs/Application_guide/zh/network-comm/esim/README.md @@ -137,7 +137,7 @@ Quecpython现支持eSIM功能具体型号如下表: -## QuecPython eSIM工具 +## eSIM工具 ### 工具介绍 @@ -200,7 +200,7 @@ DeleteProfile :删除和ICCID对应的profile。 -## QuecPython eSIM API介绍 +## eSIM API介绍 以下接口均是以LPA方式实现,需要用户和卡商确认eSIM卡是否支持LPA功能。 diff --git a/docs/Application_guide/zh/network-comm/sim/Quecpython-SIM-function-application-example.md b/docs/Application_guide/zh/network-comm/sim/Quecpython-SIM-function-application-example.md index fb69f9ba..a078535a 100644 --- a/docs/Application_guide/zh/network-comm/sim/Quecpython-SIM-function-application-example.md +++ b/docs/Application_guide/zh/network-comm/sim/Quecpython-SIM-function-application-example.md @@ -1,4 +1,4 @@ -# QuecPython SIM卡API说明 +# SIM卡API说明 ## 查询SIM卡信息 diff --git a/docs/Application_guide/zh/network-comm/sim/README.md b/docs/Application_guide/zh/network-comm/sim/README.md index 8df489e1..7b4a69c3 100644 --- a/docs/Application_guide/zh/network-comm/sim/README.md +++ b/docs/Application_guide/zh/network-comm/sim/README.md @@ -56,7 +56,7 @@ vSIM,全称为Virtual SIM,即虚拟SIM卡。它的核心思想是把物理SI -## QuecPython支持的SIM卡类型 +## 支持的SIM卡类型 QuecPython所有模组都支持卡片式SIM卡,部分平台的模组支持eSIM,但是需要定制版本才能支持,QuecPython不支持vSIM。目前,支持定制eSIM的平台如下: diff --git a/docs/Application_guide/zh/sidebar.yaml b/docs/Application_guide/zh/sidebar.yaml index 4801ff89..03aecda5 100644 --- a/docs/Application_guide/zh/sidebar.yaml +++ b/docs/Application_guide/zh/sidebar.yaml @@ -170,7 +170,7 @@ items: file: network-comm/sim/SIM-APDU.md - label: SIM双卡功能 file: network-comm/sim/SIM-dual-SIM-capability.md - - label: QuecPython SIM功能应用示例 + - label: SIM功能应用示例 file: network-comm/sim/Quecpython-SIM-function-application-example.md - label: 常见异常处理 file: network-comm/sim/Common-exception-handling.md @@ -230,4 +230,4 @@ items: - label: Helios SDK开发指南__进阶 file: helios-sdk/junior.md - label: Helios SDK开发指南__高级 - file: helios-sdk/advanced.md \ No newline at end of file + file: helios-sdk/advanced.md -- Gitee From 5e665929f50362813fa43aa5a9fc12c6bde35cb3 Mon Sep 17 00:00:00 2001 From: "burols.wang" Date: Sun, 10 Sep 2023 12:25:25 +0800 Subject: [PATCH 3/6] =?UTF-8?q?=20(Timer):=20ST=E6=A3=80=E6=9F=A5?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 固件版本: N 是否需要文案翻译: 是 --- docs/Application_guide/zh/system/Timer.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/Application_guide/zh/system/Timer.md b/docs/Application_guide/zh/system/Timer.md index c947dac6..63d8d479 100644 --- a/docs/Application_guide/zh/system/Timer.md +++ b/docs/Application_guide/zh/system/Timer.md @@ -54,7 +54,7 @@
图2-2
-内部结构简图见图2-3。RCC用AHB时钟分频除以8对其提供外部时钟源。 +内部结构简图见图2-3,RCC用AHB时钟分频除以8对其提供外部时钟源。 ![image-20230831211006225](../media/system/Timer/2-3.png) @@ -577,7 +577,7 @@ if __name__ == "__main__": **问题1:定时器失效有哪些可能?** * 检查系统是否压力过大,导致定时器回调函数未能正常执行。 -* 检查是否定时器已经被删除或被停止。 +* 检查定时器是否已经被删除或被停止。 * 是否虚拟机进行了重启,未重新创建定时器。 -- Gitee From 7125bb12d194135994a099ca75fcac6b82902d49 Mon Sep 17 00:00:00 2001 From: "burols.wang" Date: Sun, 10 Sep 2023 12:21:53 +0800 Subject: [PATCH 4/6] =?UTF-8?q?=20(sim/esim):=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E6=8F=8F=E8=BF=B0=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 固件版本: N 是否需要文案翻译: 是 --- docs/Application_guide/zh/network-comm/esim/README.md | 4 ++-- .../sim/Quecpython-SIM-function-application-example.md | 2 +- docs/Application_guide/zh/network-comm/sim/README.md | 2 +- docs/Application_guide/zh/sidebar.yaml | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/Application_guide/zh/network-comm/esim/README.md b/docs/Application_guide/zh/network-comm/esim/README.md index 1f8a08c6..8d6ed2a2 100644 --- a/docs/Application_guide/zh/network-comm/esim/README.md +++ b/docs/Application_guide/zh/network-comm/esim/README.md @@ -137,7 +137,7 @@ Quecpython现支持eSIM功能具体型号如下表: -## QuecPython eSIM工具 +## eSIM工具 ### 工具介绍 @@ -200,7 +200,7 @@ DeleteProfile :删除和ICCID对应的profile。 -## QuecPython eSIM API介绍 +## eSIM API介绍 以下接口均是以LPA方式实现,需要用户和卡商确认eSIM卡是否支持LPA功能。 diff --git a/docs/Application_guide/zh/network-comm/sim/Quecpython-SIM-function-application-example.md b/docs/Application_guide/zh/network-comm/sim/Quecpython-SIM-function-application-example.md index fb69f9ba..a078535a 100644 --- a/docs/Application_guide/zh/network-comm/sim/Quecpython-SIM-function-application-example.md +++ b/docs/Application_guide/zh/network-comm/sim/Quecpython-SIM-function-application-example.md @@ -1,4 +1,4 @@ -# QuecPython SIM卡API说明 +# SIM卡API说明 ## 查询SIM卡信息 diff --git a/docs/Application_guide/zh/network-comm/sim/README.md b/docs/Application_guide/zh/network-comm/sim/README.md index 8df489e1..7b4a69c3 100644 --- a/docs/Application_guide/zh/network-comm/sim/README.md +++ b/docs/Application_guide/zh/network-comm/sim/README.md @@ -56,7 +56,7 @@ vSIM,全称为Virtual SIM,即虚拟SIM卡。它的核心思想是把物理SI -## QuecPython支持的SIM卡类型 +## 支持的SIM卡类型 QuecPython所有模组都支持卡片式SIM卡,部分平台的模组支持eSIM,但是需要定制版本才能支持,QuecPython不支持vSIM。目前,支持定制eSIM的平台如下: diff --git a/docs/Application_guide/zh/sidebar.yaml b/docs/Application_guide/zh/sidebar.yaml index 4801ff89..03aecda5 100644 --- a/docs/Application_guide/zh/sidebar.yaml +++ b/docs/Application_guide/zh/sidebar.yaml @@ -170,7 +170,7 @@ items: file: network-comm/sim/SIM-APDU.md - label: SIM双卡功能 file: network-comm/sim/SIM-dual-SIM-capability.md - - label: QuecPython SIM功能应用示例 + - label: SIM功能应用示例 file: network-comm/sim/Quecpython-SIM-function-application-example.md - label: 常见异常处理 file: network-comm/sim/Common-exception-handling.md @@ -230,4 +230,4 @@ items: - label: Helios SDK开发指南__进阶 file: helios-sdk/junior.md - label: Helios SDK开发指南__高级 - file: helios-sdk/advanced.md \ No newline at end of file + file: helios-sdk/advanced.md -- Gitee From 89c93ffd11df9f87b4375a34fec3c823f1ef1569 Mon Sep 17 00:00:00 2001 From: "burols.wang" Date: Sun, 10 Sep 2023 12:25:25 +0800 Subject: [PATCH 5/6] =?UTF-8?q?=20(Timer):=20ST=E6=A3=80=E6=9F=A5?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 固件版本: N 是否需要文案翻译: 是 --- docs/Application_guide/zh/system/Timer.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/Application_guide/zh/system/Timer.md b/docs/Application_guide/zh/system/Timer.md index c947dac6..63d8d479 100644 --- a/docs/Application_guide/zh/system/Timer.md +++ b/docs/Application_guide/zh/system/Timer.md @@ -54,7 +54,7 @@
图2-2
-内部结构简图见图2-3。RCC用AHB时钟分频除以8对其提供外部时钟源。 +内部结构简图见图2-3,RCC用AHB时钟分频除以8对其提供外部时钟源。 ![image-20230831211006225](../media/system/Timer/2-3.png) @@ -577,7 +577,7 @@ if __name__ == "__main__": **问题1:定时器失效有哪些可能?** * 检查系统是否压力过大,导致定时器回调函数未能正常执行。 -* 检查是否定时器已经被删除或被停止。 +* 检查定时器是否已经被删除或被停止。 * 是否虚拟机进行了重启,未重新创建定时器。 -- Gitee From 75914ca2923916a16563ffcb97f4f34bae00ba0a Mon Sep 17 00:00:00 2001 From: "burols.wang" Date: Sun, 10 Sep 2023 15:05:28 +0800 Subject: [PATCH 6/6] =?UTF-8?q?=20(esim):=20Quecpython=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E4=B8=BAQuecPython?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 固件版本: N 是否需要文案翻译: 是 --- docs/Application_guide/zh/network-comm/esim/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Application_guide/zh/network-comm/esim/README.md b/docs/Application_guide/zh/network-comm/esim/README.md index 8d6ed2a2..a6915b31 100644 --- a/docs/Application_guide/zh/network-comm/esim/README.md +++ b/docs/Application_guide/zh/network-comm/esim/README.md @@ -122,7 +122,7 @@ M2M的远程SIM配置使用服务器驱动(推送模式)来配置和远程 ## eSIM支持型号 -Quecpython现支持eSIM功能具体型号如下表: +QuecPython现支持eSIM功能具体型号如下表: | 型号 | | :----------------- | -- Gitee