蜂窝网卡初始化流程
蜂窝无线网卡的初始化,需要经历如下几个阶段:
硬件初始化
这个阶段会先进行SIM卡的检测,判断是否插入了SIM卡。如果检测到插入SIM卡,会进行SIM卡相关初始化操作。对应上述流程图中的Initialize SIM Card
。如果没有检测到SIM卡,则不会再继续进行后面的步骤。
网络搜索
当SIM卡初始化完成后,UE会搜索周边可能存在的无线信号,并进行小区搜索。我们将这个过程称之为“网络搜索”,对应上述流程图中的Search Network
。
网络注册
UE在搜网过程中,找到合适的小区后,就会在该小区上发起附着流程(Attach procedure),我们将这个过程称之为“网络注册”,对应上述流程图中的Network Register
。模组只有网络注册成功了,才能进行无线网卡的激活操作。
UE的网络搜索和网络注册过程,都是由协议栈自动进行的,用户无法介入该过程。但是用户可以通过一些方法来确定UE网络注册是否成功。下面介绍两种方式来判断UE网络注册是否成功。
方法1:使用AT命令查询
用户可以发送如下AT命令来查询UE的网络注册状态:
AT+CREG?
# 如果网络注册成功,返回值如下,即第二个参数值为1或者5;如果是其他值则说明网络注册失败。
+CREG: 0,1
OK
步骤1:将终端设备通过USB数据线连接到电脑的USB端口上。
步骤2:在电脑上打开QPYcom工具,选择AT端口,按照图中所示选择配置参数并打开端口。
步骤3:发送AT查询指令,确认网络注册状态。
方法2:使用QuecPython的API查询
用户可以使用QuecPython的net.getState
方法来查询UE的网络注册状态。有关该方法的详细说明,请参考QuecPython官方网站API参考手册内获取网络注册信息部分。
步骤1:将终端设备通过USB数据线连接到电脑的USB端口上。
步骤2:在电脑上打开QPYcom工具,打开QuecPython的REPL命令端口(图示的 NMEA Port),进入到交互模式。
步骤3:在命令交互行,按照如下方式调用API查询注网状态。
import net
net.getState()
当net.getState
的返回值中,图中红框标注的参数值为1
或者5
的时候,表示网络注册成功。1
表示注册的是归属地网络,5
表示的注册的是漫游网络。
如果模组网络注册失败,请参考《网络异常处理》章节中如下部分进行排查:
激活网卡
当UE网络注册成功后,就会进行蜂窝无线网卡的激活操作。只有蜂窝无线网卡激活成功,UE才能获取到由核心网分配的IP地址等信息,并为系统的TCP/IP协议栈创建一路虚拟网卡。只有网卡创建并激活成功才能进行socket、http、mqtt等网络业务。该步骤对应上述流程图中的Activate NIC
。
用户可以通过dataCall
模块的dataCall.getInfo
方法来确定网卡是否激活成功,有关该方法的详细说明,请参考QuecPython官方网站API参考手册内获取拨号信息功能部分。
查询方法:
dataCall.getInfo(profileID, ipType)
第一个参数profileID
表示哪一路网卡,第二个参数ipType
表示IP协议类型。由于QuecPython默认开机自动激活第一路蜂窝无线网卡,并且使用的IP协议类型为IPv4,所以查询时,profileID
取值为1,ipType
取值为0。
当dataCall.getInfo
方法的返回值中,网卡激活状态为1
,并且IP不为0.0.0.0
,说明网卡激活成功。
如果模组无线网卡激活失败,请先请参考《网络异常处理》章节中如下部分进行排查: