在MN316 OpenCPU开发中,SIM卡cpin状态、imei、imsi、iccid、sn、cm_ver、base_ver、storage_states、heap_states变量值的获取对于应用程序的开发十分重要。
cpin状态:卡状态是驻网和应用层协议的基础,读卡不成功会直接导致模组不能驻网,也就无法连接TCP\UDP等网络协议;
imei:国际移动设备识别码,相当于通信设备的身份证;
sn:产品序列号,它是用来保障用户的正版权益,享受合法服务的;
imsi:国际移动用户识别码,是用于区分蜂窝网络中不同用户的、在所有蜂窝网络中不重复的识别码;
iccid:集成电路卡识别码,即SIM卡卡号,相当于手机号码的身份证;
cm_ver:模组当前SDK版本号,便于用户版本管理和版本迭代更新;
base_ver:模组当前SDK 基线版本,便于了解模组芯片基线版本的迭代更新;
storage_states:系统当前flash、ram、data等当前状态;
heap_states:堆当前总量、已分配、剩余可分配大小等状态。
一、开机初始化流程图及接口函数说明
1.1开机初始化流程图
图1 模组初始化流程
1.2获取SIM卡状态函数接口
图2 获取SIM卡状态函数接口
该函数用来获取SIM卡的状态,返回为0则代表读卡正常;小于0则代表读卡失败;其他值代表SIM卡加密提示。
1.3获取模组IMEI函数接口
图3 获取模组IMEI函数接口
该函数用来获取模组的IMEI号。
1.4获取SIM卡IMSI函数接口
图4 获取SIM卡IMSI函数接口
该函数用来获取SIM卡的IMSI。
1.5获取SIM卡ICCID函数接口
图5 获取SIM卡ICCID函数接口
该函数用来获取SIM卡的ICCID。
1.6获取模组SN号函数接口
图6 获取模组SN号函数接口
该函数用来获取模组的SN号。
1.7获取模组SDK版本号接口
图7 获取模组SDK版本号函数接口
该函数用来获取模组的SDK版本号。
1.8获取模组SDK基线版本号接口
图8 获取模组SDK基线版本号函数接口
该函数用来获取模组的SDK基线版本号。
1.9获取系统storage函数接口
图9 获取系统storage函数接口
该函数用来获取系统storage状态,其中结构体指针cm_storage_stats_t *stats指向的结构体具体定义为:
图10 系统storage结构体定义
1.10获取系统heap状态函数接口
图11 获取系统heap状态函数接口
该函数用来获取系统heap状态,其中结构体指针cm_heap_stats_t *stats指向的结构体具体定义为:
图12 系统heap结构体定义
二、测试代码
2.1定义SIM卡cpin状态、imei、imsi、iccid、sn、cm_ver、base_ver、storage_states、heap_states变量,并进行变量初始化,测试函数代码如下:
图13 变量定义与初始化
其中变量值长度具体定义为:
图14 变量长度定义
2.2调用对应的函数接口获取SIM卡cpin状态、imei、imsi、iccid、sn、cm_ver、base_ver、storage_states、heap_states变量值。
图15 变量值获取
2.3调用cm_demo_printf函数打印获取到的SIM卡cpin状态、imei、imsi、iccid、sn、cm_ver、base_ver、storage_states、heap_states变量值。
图16 变量值打印
三、结果展示
开机驻网成功后,等待串口打印please input cmds提示后,输入CM:SYS调用sys函数demo,测试结果如下:
图17 串口工具测试结果1
图18 串口工具测试结果2
四、注意事项
1、SDK demo 打印口默认为串口UART1,波特率为9600;
2、获取ICCID和IMSI之前,需要先确保SIM卡状态正常。