项目概述
本案例使用移远通信EG800Z-CN开发板和UniRTOS,通过调用UniRTOS中注网相关的功能函数,让开发板快速连接蜂窝网络,获取IP地址。
现象演示
开发准备
硬件要求

- USB数据线(USB-A转USB-C),点此购买。


软件要求
- Quectel USB驱动,点此获取。
- UniRTOS SDK,请联系技术支持获取。
- EPAT工具:移芯平台日志调试工具,点此获取。
快速上手
下载项目
示例代码位于UniRTOS官方创客仓库,点此访问下载。
添加项目到UniRTOS SDK
SDK新增Demo,固件编译和烧录请参考UniRTOS板块的快速启动。
硬件连接

1. 按卡槽丝印提示方向拨开卡槽盖,将SIM卡放入,再扣好盖子。
2.使用数据线连接开发板和电脑。
日志展示

代码概览
示例流程图

主要功能接口
unir_test_demo_init
功能:DataCall 拨号演示功能的入口与初始化函数。主要职责是创建并启动独立任务,让联网拨号逻辑在后台运行,不阻塞主程序。
关键操作:
- 任务创建:调用qosa_task_create创建名为QDATACALLDEMO的任务,执行datacall_demo_task函数。
- 任务配置:栈大小 4 KB,使用普通优先级,保证联网流程稳定运行。
- 重要性:用户需在应用初始化流程中调用,以启动DataCall自动拨号、联网、重连全套功能。
datacall_demo_task
功能:DataCall演示核心主处理函数。在独立任务中完成网络附着、PDP配置、拨号建立、IP获取、掉线自动重连的全生命周期逻辑。
关键操作:
- 消息队列创建:用于接收网络事件,实现异步事件处理。
- 网络附着等待:调用qosa_datacall_wait_attached等待注网成功,超时 300 秒。
- 事件回调注册:注册PDN断开与PDP状态变化回调,监听网络状态。
- PDP上下文配置:设置APN、IP类型(IPv4/IPv6),调用qosa_datacall_set_pdp_context。
- 创建并启动拨号:qosa_datacall_conn_new 创建连接,qosa_datacall_start执行同步拨号。
- 获取并打印IP信息:支持IPv4/IPv6地址解析与日志输出。
- 无限循环监听事件:等待消息队列,处理PDP断开事件并自动重拨。
- 掉线重连机制:最多重试10次,每次间隔20秒,重连成功后重新获取IP。
- 重要性:完整封装蜂窝数据拨号从上线到异常恢复的全套流程,是物联网设备联网的核心逻辑。
datacall_nw_deact_pdp_cb
功能:PDN网络去激活(掉线)事件回调函数。当网络/基站主动断开PDP时被系统自动调用。
关键操作:
- 获取掉线信息:解析simid和pdpid。
- 封装事件消息:通过消息队列发给主任务,触发重连流程。
- 重要性:实现掉线感知,是自动重连机制的触发入口。
datacall_pdp_change_cb
功能:PDP拨号状态变化回调函数。用于监听拨号激活/去激活状态上报。
关键操作:
- 接收PDP状态事件,可扩展用于状态监控、日志记录、上层通知等。
- 重要性:用于实时监控拨号链路状态,便于调试与业务联动。