• 欢迎大家分享资料!前往留言板评论即可!

Air724UG CSDK socket连接前的准备

合宙 模组资料网 2年前 (2021-05-15) 330次浏览 0个评论 扫描二维码
文章目录[隐藏]

![](http://openluatluatcommunity.oss-cn-hangzhou.aliyuncs.com/images/20200815112907421_Air724UG CSDK网络连接流程.png)

一、通信前的准备

1.1,初始化网络跟踪

用来设置网络状态主动上报,设置后当网络发生变更会主动上报状态,这样就可以及时获取当前网络状态了。
AT+CREG=2

1.2,等待网络注册成功

网络注册成功表示模块成功注册到2G或者4G网络,对于2G网络来说还存在CS域的注册和PS域的分别注册,而4G网络因为没有CS域,所以注册成功就表示PS域可用了。而真正使用socket建立连接又要等PS域注册成功后才能正常使用。所以为了简化这个流程,我们只需要判断主动上报信息中包含如下信息中的其中一个,就认为网络注册成功
* +CREG:1(2G/4G正常网络)
* +CREG:5(2G/4G漫游网络)
* +E_UTRAN Service (表示注册的是4G网络)
* +GSM Service(表示注册的是2G网络)
* ^MODE: 17,17(表示注册的是4G网络)
* ^MODE: 3,1(表示注册的是2G网络)

1.3,判断是否为4G网络

4G网络因为所有的交互都是基于数据域的,所以网络注册成功后,核心网默认会分配一个承载(默认PDP),这个承载就可以直接用来进行socket通信。如果注册的是2G网络,那就需要向网络发起建立PDP承载的请求,再由网络分配PDP链路来进行socket通信。判断是否为4G网络,可以通过2,等待网络注册成功中的主动上报来判断,也可以通过AT+CREG?指令来查询当前注册的网络

AT+CREG?
+CREG: <n>,<stat>[,<lac>,<ci>,<act>]
OK

act值为7的时候表示的是4G网络,0/1/3表示的是2G网络。

1.4,等待PDP激活

承载激活成功后会主动上报*CGEV: ACT开头的URC信息

*CGEV: ACT,<cid>,<apn>,<ip>

1.5,获取激活PDP的IP地址

PDP激活后,可以根据*CGEV的上报来获取IP地址,也可以通过AT+CGDCONT?指令查询IP地址

AT+CGDCONT?

+CGDCONT: <cid>,<PDP_type>,<APN>,<PDP_addr>,
<d_comp>,<h_comp>
OK

其中PDP_addr字段表示的是当前IP地址

1.6,绑定IP地址

调用socket接口中的bind接口来绑定当前PDP的IP地址,来进行socket通信

1.7,建立socket连接

这步就不去赘述了,不是本文的重点。

二、被动掉网问题

在处理掉网问题之前首先要搞清楚掉网这个概念,掉网其实对于模块来说分好几种情况:
* 1,断网:信号差或者基站繁忙而造成的掉网,也就是彻底失去了无线网络连接,也无法进行任何数据业务了,包括语音业务
* 2,PDP去激活:这种情况下其实模块和基站之间还是能保证无线通信的,只不过无法上网了。
* 3,PS无法附着:这种情况只出现在非4G网络下,这个时候只能打电话,而无法上网。
* 4,被服务器断开,这种断开只是TCP/IP应用协议断开,和模块无线通信其实没任何关系,断开只要重新进行socket连接就可以了。

2.1,断网

断网后,模块会尝试自动恢复,如果长时间未能恢复可以尝试重启设备或者进出飞行模式来恢复。

2.2,PDP去激活

pdp去激活,一般是由核心网主动发起的,可能是因为网络繁忙或者2G网络下长时间未进行数据通信。这种情况下,要想恢复,需要区分当前的网络是4G网还是2G网:
* 1,4G网络下由于PDP是由网络主动分配的,所以一般发生这种情况可以通过进出飞行模式来恢复
* 2,2G网络下可以通过重新激活PDP来恢复网络


转载请注明原文链接:Air724UG CSDK socket连接前的准备
喜欢 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址