net - 网络相关功能

该模块包含了模组网络相关的功能,提供配置和查询网络模式信息等接口,比如获取注网状态,设置搜网模式等。

建议用户使用不同运营商的SIM卡时,则配置对应运营商的APN信息;如果不配置或者配置错误,可能会导致模组无法注网。用户具体如何配置APN信息,参考dataCall.setPDPContext方法。

获取CSQ信号强度

net.csqQueryPoll

net.csqQueryPoll()

该方法用于获取csq信号强度。

返回值描述:

成功返回整型的csq信号强度值,失败返回整型值-1,返回值为99表示异常。

信号强度值范围0 ~ 31,值越大表示信号强度越好。

示例:

>>> import net
>>> net.csqQueryPoll()
31

获取小区信息

net.getCellInfo

net.getCellInfo()

该方法用于获取邻近小区的信息。

返回值描述:

失败返回整型值-1,成功返回包含三种网络系统(GSM、UMTS、LTE)的信息的list,如果对应网络系统信息为空,则返回空的List。格式和说明如下:

([(flag, cid, mcc, mnc, lac, arfcn, bsic, rssi)], [(flag, cid, licd, mcc, mnc, lac, uarfcn, psc, rssi)], [(flag, cid, mcc, mnc, pci, tac, earfcn, rssi, rsrq),...])

  • GSM网络系统返回值说明
参数 参数意义
flag 小区类型,范围0 - 3, 0:当前服务小区,1:邻区,2:同频邻区 ,3:异频邻区
cid 返回GSM网络下的cell id信息,0则为空,范围0 ~ 65535
mcc 移动设备国家代码,范围 0 ~ 999
注意:EC600N/EC600E/EC800E/EC200A/EC600M/EC800M/BG95系列的模组,该值需要转化成十六进制,比如下面示例中的十进制数1120,用十六进制表示为0x460,表示移动设备国家代码460,其他型号模组,该值直接用十进制表示,比如移动设备国家代码460,就是用十进制的460来表示。
mnc 移动设备网络代码,范围 0 ~ 99
注意:EC600N/EC600E/EC800E/EC200A/EC600M/EC800M/BG95系列的模组,该值需要转化成十六进制。
lac 位置区码,范围 1 ~ 65535
arfcn 无线频道编号,范围 0 ~ 65535
bsic 基站识别码,范围 0 ~ 63
rssi GSM网络下,该值表示接收电平,描述接收到信号强度,99表示未知或者无法检测到,该值的计算方式如下:
rssi = RXLEV - 111,单位dBm,RXLEV 的范围是 0 ~ 63,所以rssi范围是 -111 ~ -48 dBm;
  • UMTS网络系统返回值说明
参数 参数意义
flag 小区类型,范围0 - 3,0:当前服务小区,1:邻区,2:同频邻区 ,3:异频邻区
cid 表示UMTS网络下的 Cell identity ,Cell identity = RNC_ID * 65536 + Cell_ID,Cell identity范围 0x0000000 ~ 0xFFFFFFF(注意这里是28bits);即Cell identity前两个字节是RNC_ID,后两个字节是Cell_ID,Cell_ID的范围是0 ~ 65535
lcid URA ID,范围 0 ~ 65535,0表示该信息不存在
mcc 移动设备国家代码,范围 0 ~ 999
mnc 移动设备网络代码,范围 0 ~ 99
lac 位置区码,范围 1 ~ 65535
uarfcn 无线频道编号,范围 0 ~ 65535
psc 主扰码,该参数确定所扫描的小区的主要扰码,范围 0 ~ 511
rssi UMTS网络下,该值表示RSCP即CPICH/PCCPCH 接收信号码功率,该值的计算方式如下:
rssi = RSCP - 115,单位dBm ,范围 -121 ~ -25 dBm;
  • LTE网络系统返回值说明
参数 参数意义
flag 小区类型,范围0 - 3,0:当前服务小区,1:邻区,2:同频邻区 ,3:异频邻区
cid 表示LTE网络下的小区标识(Cell Identity),也叫ECI(E-UTRAN Cell Identifier),ECI = eNodeB ID *256 + Cell ID组成,范围0x0000000 ~ 0xFFFFFFF(注意是28bits),前20bit表示基站标识(eNodeB ID),后8bit表示LTE小区ID(Cell ID)
mcc 移动设备国家代码,范围 0 ~ 999
mnc 移动设备网络代码,范围 0 ~ 99
pci 物理层小区标识号,0 ~ 503
tac 跟踪区域码,0 ~ 65535
earfcn 无线频道编号,范围 0 ~ 65535
rssi LTE网络下,rssi:表示接收的所有信号强度,单位dBm,范围 -140 ~ -44 dBm
注:目前除BC25系列和BG95系列,其它平台均无法获取rssi,使用RSRP代替:
RSRP:表示接收到的有效信号强度,单位dBm,范围 -140 ~ -44 dBm
rsrq LTE网络参考信号接收质量,范围 -20 ~ -3
注:理论上rsrq的范围应该是-19.5 ~ -3,但由于计算方法问题,目前能给出的是-20 ~ -3
目前仅BC25系列、BG95系列和EC600E/EC800E系列获取该参数有意义,其它平台该参数无意义

该接口搜小区时会一直阻塞,一般是3-5秒,在无信号的地方会更长;

BC32系列模组仅NB网络支持。

示例:

>>> import net
>>> net.getCellInfo()
([], [], [(0, 232301375, 1120, 17, 378, 26909, 1850, -66, -8), (3, 110110494, 1120, 17, 10, 26909, 2452, -87, -17), (3, 94542859, 1120, 1, 465, 56848, 1650, -75, -10), 
(3, 94472037, 1120, 1, 369, 56848, 3745, -84, -20)])

>>> net.getCellInfo()
([], [], [(0, 17104243, 460, 4, 121, 19472, 3688, -76, -15)])

网络制式及漫游配置

net.getConfig

net.getConfig()

该方法用于获取当前网络模式及漫游配置。

返回值描述:

失败返回整型值-1,成功返回一个元组,包含当前首选的网络制式与漫游打开状态,说明如下:

  • 网络制式
网络制式 网络制式
0 GSM 17 UMTS_LTE(双链路)
1 UMTS 18 GSM_UMTS_LTE(双链路)
2 GSM_UMTS(自动) 19 CATM,BG95系列支持
3 GSM_UMTS(GSM 优先) 20 GSM_CATM(GSM 优先), BG95系列支持
4 GSM_UMTS(UMTS 优先) 21 CATNB, BG95系列支持
5 LTE 22 GSM_CATNB(GSM 优先), BG95/BC32系列支持
6 GSM_LTE(自动) 23 CATM_CATNB(CATM 优先), BG95系列支持
7 GSM_LTE(GSM 优先) 24 GSM_CATM_CATNB(GSM 优先), BG95系列支持
8 GSM_LTE(LTE 优先) 25 CATM_GSM(CATM 优先), BG95系列支持
9 UMTS_LTE(自动) 26 CATNB_GSM(CATNB 优先), BG95/BC32系列支持
10 UMTS_LTE(UMTS 优先) 27 CATNB_CATM(CATNB 优先), BG95系列支持
11 UMTS_LTE(LTE 优先) 28 GSM_CATNB_CATM(GSM 优先), BG95系列支持
12 GSM_UMTS_LTE(自动) 29 CATM_GSM_CATNB(CATM 优先), BG95系列支持
13 GSM_UMTS_LTE(GSM 优先) 30 CATM_CATNB_GSM(CATM 优先), BG95系列支持
14 GSM_UMTS_LTE(UMTS 优先) 31 CATNB_GSM_CATM(CATNB 优先), BG95系列支持
15 GSM_UMTS_LTE(LTE 优先) 32 CATNB_CATM_GSM(CATNB 优先), BG95系列支持
16 GSM_LTE(双链路) 33 CATNB_GSM(企标), BC32系列支持

BC25系列不支持此方法;

BG95-M1系列仅支持CATM制式;

BG95-M2系列仅支持包含CATM和CATNB两种制式;

BG95-M3/M8系列支持CATM,CATNB和GSM全部三种制式;

BC32系列与企标相关的配置需要重启生效;改变网络制式需要在cfun=0的情况下进行。

示例:

>>> import net
>>>net.getConfig ()
(8, False)

net.setConfig

net.setConfig(mode [, roaming])

该方法用于设置网络制式及漫游配置。

参数描述:

  • mode - 网络制式,整型值,详见上述网络制式表格

  • roaming - 漫游开关,整型值,可选参数(0:关闭, 1:开启)

返回值描述:

设置成功返回整型值0,设置失败返回整型值-1

  • roaming为可选参数,不支持的平台,该参数可不写
  • BC25系列不支持此方法
  • EC200U/EC600U/EG915U/EG912U系列模组不支持漫游参数配置,且仅支持设置网络制式0/5/6/8,
    其中6/8底层都是都是LTE优先,当设置为8时,查询为6。
  • EC600G/EC800G系列模组不支持漫游参数配置,且仅支持设置网络支持为5/6,其中5/6底层都是都是LTE ONLY,当设置为6时,查询为5。
  • EC600E/EC800E/EC600K/EC800K/EC600M/EC800M/EG810M/EG800P系列模组仅支持LTE ONLY。
  • UC200A系列模组仅支持2G/3G。
  • EC200A/UC200A系列模组设置后掉电不保存。

示例:

>>> import net
>>>net.setConfig(6)
0

>>>net.getConfig ()
(6, False)

获取网络配置模式

net.getNetMode

net.getNetMode()

该方法用于获取网络配置模式。

返回值描述:

失败返回整型值-1,成功返回一个元组,格式为:(selection_mode, mcc, mnc, act)参数说明如下:

参数 类型 参数说明
selection_mode 整型 方式,0 - 自动,1 - 手动
mcc 字符串 移动设备国家代码
mnc 字符串 移动设备网络代码
act 整型 首选网络的ACT模式

ACT模式枚举值参照下表:

ACT模式
0 GSM
1 COMPACT
2 UTRAN
3 GSM wEGPRS
4 UTRAN wHSDPA
5 UTRAN wHSUPA
6 UTRAN wHSDPA HSUPA
7 E UTRAN
8 UTRAN HSPAP
9 E UTRAN CA
10 NONE

BG95系列模组ACT模式枚举值参照下表:

ACT模式
0 GSM
1 GSM COMPACT
2 UTRAN
3 GSM wEGPRS
4 UTRAN wHSDPA
5 UTRAN wHSUPA
6 UTRAN wHSDPA HSUPA
7 E_UTRAN
8 UTRAN HSPAP
9 E_UTRAN_CA
10 E_UTRAN_NBIOT
11 E_UTRAN_EMTC
12 NONE

示例:

>>> import net
>>> net.getNetMode()
(0, '460', '46', 7)

获取详细信号强度

net.getSignal

net.getSignal([sinrEnable])

该方法用于获取详细信号强度。

参数描述:

  • sinrEnable - 使能是否获取sinr数值,整型值,可选参数,取值范围见下表:
取值 含义
0 不获取sinr数值
1 获取sinr数值

返回值描述:

失败返回整型值-1,成功返回一个元组,包含两个List(GW 、LTE),返回值格式和说明如下:

([rssi, bitErrorRate, rscp, ecno], [rssi, rsrp, rsrq, cqi, sinr])

  • GSM/WCDMA返回值参数说明:
参数 参数意义
rssi GSM和WCDMA网络下,该值表示接收电平,描述接收到信号强度,99表示未知或者无法检测到,该值的计算方式如下
rssi = RXLEV - 111,单位dBm,RXLEV 的范围是 0 ~ 63
bitErrorRate 误码率,范围 0 ~ 7,99表示未知或者无法检测到
rscp 接收信号码功率,范围 -121 ~ -25 dBm,255表示未知或者无法检测到
ecno 导频信道,范围 -24 ~ 0,255表示未知或者无法检测到
  • LTE返回值参数说明:
参数 参数意义
rssi 接收的信号强度,范围 -140 ~ -44 dBm,99表示未知或者无法检测到
rsrp 下行参考信号的接收功率,范围 -140 ~ -44 dBm,99表示未知或者无法检测到
rsrq 下行特定小区参考信号的接收质量,范围 -20 ~ -3 dBm,值越大越好 ,255表示未知或者无法检测到
cqi 信道质量,255表示未知或者无法检测到
sinr 干扰信噪比,范围 -10 ~ 40 dBm,255表示未知或者无法检测到
  • sinrEnable为可选参,不支持的平台可不写,不写默认不获取sinr
  • BC25/BC32系列不支持获取sinr,其余模组型号均支持
  • BC32系列模组仅NB网络支持。

示例:

>>> import net
>>>net.getSignal()
([99, 99, 255, 255], [-51, -76, -5, 255])
>>>net.getSignal(0)
([99, 99, 255, 255], [-51, -76, -5, 255])
>>>net.getSignal(1)
([99, 99, 255, 255], [-51, -76, -5, 255, 18])

获取当前基站时间

net.nitzTime

net.nitzTime()

该方法用于获取当前基站时间。这个时间是基站在模块开机注网成功时下发的时间。

返回值描述:

失败返回整型值-1,成功返回一个元组,包含基站时间与对应时间戳与闰秒数(0表示不可用),格式为:(date, abs_time, leap_sec),说明如下:

参数 类型 参数意义
date 字符串 基站时间,其中关于时区的部分,不同系列有所区别,具体见示例。
如果需要设置和获取时区,请使用utime模块的setTimeZone(offset)getTimeZone()接口,
不同平台,这两个接口的单位都是小时,具体参考utime模块的说明。
abs_time 整型 基站时间的绝对秒数表示
leap_sec 整型 闰秒数

示例:

>>> import net
>>> net.nitzTime() 
# EC100Y/EC200N/EC600N/EC600S/EC800N/EG912N/EG915N/EC600M/EC800M/EG810M/EC200A系列的返回值,时区单位小时,这里8即表示东八区
('21/10/26 06:08:03 8 0', 1635228483, 0)  
# BC25/BC32/EC600E/EC800E/EC200U/EC600U/EG912U/EG915U/EC600G/EC800G系列返回值,时区单位15分钟,这里+32即表示东八区
('20/11/26 02:13:25 +32 0', 1606356805, 0)
# BG95系列的返回值,无时区部分
('23/02/14 02:25:13', 1676312713, 0)

获取运营商信息

net.operatorName

net.operatorName()

该接口用于获取当前注网的运营商信息。

返回值描述:

失败返回整型值-1,成功返回一个元组,包含注网的运营商信息,格式为: (long_eons, short_eons, mcc, mnc),说明如下:

参数 类型 参数说明
long_eons 字符串 运营商信息全称
short_eons 字符串 运营商信息简称
mcc 字符串 移动设备国家代码
mnc 字符串 移动设备网络代码

示例:

>>> import net
>>> net.operatorName()
('CHN-UNICOM', 'UNICOM', '460', '01')

获取网络注册信息

net.getState

net.getState()

该接口用于获取当前网络注册信息。

返回值描述:

失败返回整型值-1,成功返回一个元组,包含电话和网络注册信息,元组中voice开头的表示电话注册信息,data开头的表示网络注册信息,格式为:([voice_state, voice_lac, voice_cid, voice_rat, voice_reject_cause, voice_psc], [data_state, data_lac, data_cid, data_rat, data_reject_cause, data_psc])

  • 返回值参数说明:
参数 参数说明
state 网络注册状态,具体见下表
lac 位置区码,范围 1 ~ 65534
cid cell id,范围 0x00000000 ~ 0x0FFFFFFF,具体见上面net.getCellInfo()中返回值
rat 接入技术,access technology,具体见后面表格
reject_cause 注册被拒绝的原因,EC200U/EC600U/EG915U/BC25系列该参数保留,不作为有效参数
psc 主扰码,Primary Scrambling Code,EC200U/EC600U/EG915U/BC25系列该参数保留,不作为有效参数
  • 网络注册状态state枚举值见下表:
状态说明
0 没有注册,MT也没有再搜索
1 注册完成,本地网络
2 没有注册,但是MT在尝试搜索
3 拒绝注册
4 未知状态
5 注册完成, 漫游网络
6 注册为“仅限短信”,本地网络 (不适用)
7 注册为“仅限短信”,漫游网络(不适用)
8 紧急attach仅限紧急承载服务
9 注册为“CSFB不优先”,本地网络 (不适用)
10 注册为“CSFB不优先”,漫游网络(不适用)
11 仅限紧急承载服务
  • 接入技术access technology
说明
0 GSM
1 GSM COMPACT
2 UTRAN
3 GSM wEGPRS
4 UTRAN wHSDPA
5 UTRAN wHSUPA
6 UTRAN wHSDPA HSUPA
7 E_UTRAN
8 UTRAN HSPAP
9 E_UTRAN_CA
10 NONE

BG95系列参照下表

说明
0 GSM
1 GSM COMPACT
2 UTRAN
3 GSM wEGPRS
4 UTRAN wHSDPA
5 UTRAN wHSUPA
6 UTRAN wHSDPA HSUPA
7 E_UTRAN
8 UTRAN HSPAP
9 E_UTRAN_CA
10 E_UTRAN_NBIOT
11 E_UTRAN_EMTC
12 NONE

示例:

>>> import net
>>> net.getState()
([11, 26909, 232301323, 7, 0, 466], [0, 26909, 232301323, 7, 0, 0])

获取小区ID

net.getCi

net.getCi()

该方法用于获取附近小区ID。该接口获取结果即为net.getCellInfo()接口获取结果中的cid集合。

返回值描述:

成功返回一个list类型的数组,包含小区id,格式为:[id, ……, id]。数组成员数量并非固定不变,位置不同、信号强弱不同等都可能导致获取的结果不一样。

失败返回整型值-1

示例:

>>> net.getCi()
[14071232, 0]

net.getServingCi

net.getServingCi()

该方法用于获取服务小区ID。该接口获取结果即为net.getCellInfo()接口获取结果中的cid集合。

返回值描述:

成功返回服务小区ID。失败返回整型值-1

示例:

>>> import net
>>> net.getServingCi()
94938399

获取小区的MNC

net.getMnc

net.getMnc()

该方法用于获取附近小区的mnc。该接口获取结果即为net.getCellInfo()接口获取结果中的mnc集合。

返回值描述:

成功返回一个list类型的数组,包含小区mnc,格式为:[mnc, ……, mnc]。数组成员数量并非固定不变,位置不同、信号强弱不同等都可能导致获取的结果不一样。

失败返回整型值-1

示例:

>>> import net
>>> net.getMnc()
[0, 0]

net.getServingMnc

net.getServingMnc()

该方法用于获取服务小区的mnc。该接口获取结果即为net.getCellInfo()接口获取结果中的mnc集合。

返回值描述:

成功返回服务小区mnc。失败返回整型值-1

示例:

>>> import net
>>> net.getServingMnc()
1

获取小区的MCC

net.getMcc

net.getMcc()

该方法用于获取附近小区的mcc。该接口获取结果即为net.getCellInfo()接口获取结果中的mcc集合。

返回值描述:

成功返回一个list类型的数组,包含小区mcc,格式为:[mcc, ……, mcc]。数组成员数量并非固定不变,位置不同、信号强弱不同等都可能导致获取的结果不一样。

失败返回整型值-1

EC600N/EC600E/EC800E/EC200A/EC600M/EC800M/BG95系列的模组,该值需要转化成十六进制,比如下面示例中的十进制数1120,十六进制即0x460,表示移动设备国家代码460,其他型号模组,该值直接用十进制表示,比如移动设备国家代码460,就是用十进制的460来表示。

示例:

>>> import net
>>> net.getMcc()
[1120, 0]

net.getServingMcc

net.getServingMcc()

该方法用于获取服务小区的mcc。该接口获取结果即为net.getCellInfo()接口获取结果中的mcc集合。

返回值描述:

成功返回服务小区的mcc,失败返回整型值-1

EC600N/EC600E/EC800E/EC200A/EC600M/EC800M/BG95系列的模组,该值需要转化成十六进制,比如下面示例中的十进制数1120,十六进制即0x460,表示移动设备国家代码460,其他型号模组,该值直接用十进制表示,比如移动设备国家代码460,就是用十进制的460来表示。

示例:

>>> import net
>>> net.getServingMcc()
1120

获取小区的Lac

net.getLac

net.getLac()

该方法用于获取附近小区的Lac。该接口获取结果即为net.getCellInfo()接口获取结果中的lac集合。

返回值描述:

成功返回一个list类型的数组,包含小区lac,格式为:[lac, ……, lac]。数组成员数量并非固定不变,位置不同、信号强弱不同等都可能导致获取的结果不一样。

失败返回整型值-1

示例:

>>> import net
>>> net.getLac()
[21771, 0]

net.getServingLac

net.getServingLac()

该方法用于获取服务小区的Lac。该接口获取结果即为net.getCellInfo()接口获取结果中的lac集合。

返回值描述:

成功返回服务小区lac,失败返回整型值-1

示例:

>>> import net
>>> net.getServingLac()
56848

工作模式配置

net.getModemFun

net.getModemFun()

该方法用于获取模组当前的功能模式。

返回值描述:

成功返回当前模组工作模式,失败返回整型值-1;模组工作模式详细如下:

模式 说明
0 最小功能模式。该模式下,整个射频网络协议栈全部关闭,SIM卡模块停止供电。
1 全功能模式(默认)。该模式下,射频网络协议栈正常运行,设备可以发送和接收RF信号。
4 飞行模式。该模式下,会禁用终端设备的无线射频功能,即禁止设备发送和接收RF信号,但是SIM卡模块依然是正常供电。

BC32系列不支持模式4.

示例:

>>> import net
>>> net.getModemFun()
1

net.setModemFun

net.setModemFun(fun [, rst])

该方法用于设置当前模组工作模式。

参数描述:

  • fun - 模组工作模式,整型值
模式 说明
0 最小功能模式。该模式下,整个射频网络协议栈全部关闭,SIM卡模块停止供电。
1 全功能模式(默认)。该模式下,射频网络协议栈正常运行,设备可以发送和接收RF信号。
4 飞行模式。该模式下,会禁用终端设备的无线射频功能,即禁止设备发送和接收RF信号,但是SIM卡模块依然是正常供电。
  • rst - 重启标志,整型值,可选参数
说明
0 设置完不重启(默认)
1 设置完重启

返回值描述:

设置成功返回整型值0,设置失败返回整型值-1

示例:

>>> import net
>>> net.setModemFun(4)
0

band设置与获取

net.setBand

net.setBand(netRat, gsmBand, bandTuple)

该方法用于设置需要的band,即在模组支持的前提下,锁定用户指定的band。

  • band值对照表
网络制式 band值
EGPRS(GSM) EGSM900 - 0x1
DCS1800 - 0x2
GSM850 - 0x4
PCS1900 - 0x8
LTE/eMTC/NB-IoT BAND1 - 0x1
BAND2 - 0x2
BAND3 - 0x4
BAND4 - 0x8
BAND5 - 0x10
BAND7 - 0x40
BAND8 - 0x80
BAND12 - 0x800
BAND13 - 0x1000
BAND18 - 0x20000
BAND19 - 0x40000
BAND20 - 0x80000
BAND25 - 0x1000000
BAND26 - 0x2000000
BAND27 - 0x4000000
BAND28 - 0x8000000
BAND31 - 0x40000000
BAND66 - 0x20000000000000000
BAND71 - 0x400000000000000000
BAND72 - 0x800000000000000000
BAND73 - 0x1000000000000000000
BAND85 - 0x1000000000000000000000

参数描述:

  • netRat - 网络模式,整型值,表示制定要设置的是哪种网络模式下的band
rat值 说明
0 设置GSM网络的band
1 设置LTE网络的band
2 设置CATM网络的band
3 设置NB网络的band
  • gsmBand - GSM网络的band值,整型值,参照上述band值对照表

  • bandtuple - 设置GSM网络之外的其他网络模式的band值,是一个包含4个元素的元组,每个成员最大不能超过4字节,具体形式:(band_hh, band_hl, band_lh, band_ll),每个元素说明如下:

band_hh - band值的高8字节的高4字节
band_hl - band值的高8字节的低4字节
band_lh - band值的低8字节的高4字节
band_ll - band值的低8字节的低4字节
如果用户最终要设置的band值为band_value,那么计算方式如下:
band_hh = (band_value & 0xFFFFFFFF000000000000000000000000) >> 96
band_hl = (band_value & 0x00000000FFFFFFFF0000000000000000) >> 64
band_lh = (band_value & 0x0000000000000000FFFFFFFF00000000) >> 32
band_ll = (band_value & 0x000000000000000000000000FFFFFFFF)

返回值描述:

设置成功返回整型值0,失败返回整型值-1

  • 当前可支持模组型号:BG95/EG912N/EG915N/EC600N/EC800N系列
  • BG95不支持设置上述模式1(LTE)下的band
  • EG912N/EG915N/EC600N/EC800N系列仅支持上述模式0(GSM)和模式1(LTE)

示例:

import net
import utime

'''
用户可直接使用下面两个接口来设置band和获取band
'''
def set_band(net_rat, band_value):
    if net_rat == 0:
        retval = net.setBand(0, band_value, (0, 0, 0, 0))
    else:
        band_hh = (band_value & 0xFFFFFFFF000000000000000000000000) >> 96
        band_hl = (band_value & 0x00000000FFFFFFFF0000000000000000) >> 64
        band_lh = (band_value & 0x0000000000000000FFFFFFFF00000000) >> 32
        band_ll = (band_value & 0x000000000000000000000000FFFFFFFF)
        retval = net.setBand(net_rat, 0, (band_hh, band_hl, band_lh, band_ll))
    return retval


def get_band(net_rat):
    return net.getBand(net_rat)

#======================================================================================================

'''
设置GSM网络band为0xa,即 DCS1800 + PCS1900
0xa = 0x2(DCS1800) + 0x8(PCS1900)
'''
def set_gsm_band_example():
    print('Set GSM band to 0xa example:')
    gsm_band = get_band(0)
    print('GSM band value before setting:{}'.format(gsm_band))
    ret = set_band(0, 0xa)
    if ret == 0:
        print('Set GSM band successfully.')
    else:
        print('Set GSM band failed.')
    utime.sleep(1) # 设置band需要一定时间,延时一段时间再获取新的结果
    gsm_band = get_band(0)
    print('GSM band value after setting:{}'.format(gsm_band))
    return ret


'''
设置eMTC网络band为0x15,即设置 BAND1+BAND3+BAND5
0x15 = 0x1(BAND1) + 0x4(BAND3) + 0x10(BAND5)
'''
def set_camt_band_example():
    print('Set CATM band to 0x15 example:')
    catm_band = get_band(2)
    print('CATM band value before setting:{}'.format(catm_band))
    ret = set_band(2, 0x15)
    if ret == 0:
        print('Set CATM band successfully.')
    else:
        print('Set CATM band failed.')
    utime.sleep(1) # 设置band需要一定时间,延时一段时间再获取新的结果
    catm_band = get_band(2)
    print('CATM band value after setting:{}'.format(catm_band))
    return ret


'''
设置NB-IoT网络band为0x1000800000000000020011,即设置 BAND1+BAND5+BAND18+BAND71+BAND85
0x1000400000000000020011 = 0x1 + 0x10 + 0x20000 + 0x400000000000000000 + 0x1000000000000000000000
'''
def set_nb_band_example():
    print('Set NB band to 0x1000400000000000020011 example:')
    nb_band = get_band(3)
    print('NB band value before setting:{}'.format(nb_band))
    ret = set_band(3, 0x1000400000000000020011)
    if ret == 0:
        print('Set NB band successfully.')
    else:
        print('Set NB band failed.')
    utime.sleep(1) # 设置band需要一定时间,延时一段时间再获取新的结果
    nb_band = get_band(3)
    print('NB band value after setting:{}'.format(nb_band))
    return ret


def main():
    set_gsm_band_example()
    utime.sleep(1)
    set_camt_band_example()
    utime.sleep(1)
    set_nb_band_example()


if __name__ == '__main__':
    main()


#===================================================================================================
#运行结果
Set GSM band to 0xa example:
GSM band value before setting:0xf
Set GSM band successfully.
GSM band value after setting:0xa

Set CATM band to 0x15 example:
CATM band value before setting:0x10000200000000090e189f
Set CATM band successfully.
CATM band value after setting:0x15

Set NB band to 0x1000400000000000020011 example:
NB band value before setting:0x10004200000000090e189f
Set NB band successfully.
NB band value after setting:0x1000400000000000020011

net.getBand

net.getBand(netRat)

该方法用于获取当前某个网络制式下的band设置值。

参数描述:

  • netRat - 网络模式,整型值,表示制定要设置的是哪种网络模式下的band
rat值 说明
0 设置GSM网络的band
1 设置LTE网络的band
2 设置CATM网络的band
3 设置NB网络的band

返回值描述:

返回十六进制字符串形式的band值。

  • 当前可支持模组型号:BG95/EG912N/EG915N/EC600N/EC800N系列
  • BG95不支持设置上述模式1(LTE)下的band
  • EG912N/EG915N/EC600N/EC800N系列仅支持上述模式0(GSM)和模式1(LTE)

示例:

>>> import net
>>> net.getBand(2)
'0x10000200000000090e189f'  # 这是字符串,用户如果需要int型,可通过int(data)来自行转换

net.bandRst

net.bandRst()

该方法用于恢复band初始设定值。

返回值描述:

成功返回整型值0,失败返回整型值-1

当前可支持模组型号:EG912N/EG915N/EC600N/EC800N系列

示例:

'''
先设置成其他band,调用该接口,看是否成功恢复成初始值
EG912NENAA平台初始值:gsm_band:0x3(EGSM900/DCS1800 )  lte_band:0x8000000000480800D5(B1/B3/B5/B7/B8/B20/B28/B31/B72 )
'''
>>> import net
>>> net.bandRst()
0