SIM卡信息查询与设置
本文档介绍了SIM卡相关设置的接口,并且通过demo_sim.c举例测试
SIM卡信息查询
查询IMSI 信息
函数 :yopen_sim_get_imsi(uint8_t nSim, char *imsi, size_t imsi_len)
功能 :该函数用于获取(U)SIM卡的IMSI
参数 :
参数 | 说明 |
---|---|
nSim |
所用的(U)SIM卡 |
imsi |
(U)SIM卡的IMSI |
imsi_len |
imsi数组的长度 |
示例 :
执行代码
char imsi_data[64];// 定义一个缓冲区用于存储IMSI信息
yopen_sim_get_imsi(0, imsi_data, sizeof(imsi_data));// 调用函数获取SIM卡的IMSI信息
DEMO_SIM_TRACE(" yopen_sim_get_imsi %s ", data);//打印查询数据
打印结果
yopen_sim_get_imsi 460025248050765//查询到的ims号为460025248050765
查询ICCID 信息
函数 :yopen_sim_get_iccid(uint8_t nSim, char *iccid, size_t iccid_len)
功能 :用于获取(U)SIM卡的ICCID
参数 :
参数 | 说明 |
---|---|
nSim |
所用的(U)SIM卡 |
iccid |
SIM卡的ICCID |
iccid_len |
SIM卡的ICCID数组长度 |
示例 :
执行代码
char iccid_data[64];// 定义一个缓冲区用于存储ICCID信息
yopen_sim_get_iccid(0, iccid_data, sizeof(iccid_data));// 调用函数获取SIM卡的ICCID信息
DEMO_SIM_TRACE(" yopen_sim_get_iccid %s ", data);//打印查询数据
打印结果
yopen_sim_get_iccid 898602A2125344800657//查询到的iccid号为898602A2125344800657
查询手机号码
函数 :yopen_sim_get_phonenumber(uint8_t nSim, char *phonenumber,size_t phonenumber_len)
功能 :用于获取(U)SIM卡的本机号码
参数 :
参数 | 说明 |
---|---|
nSim |
所用的(U)SIM卡 |
phonenumber |
SIM卡的本机号码 |
phonenumber_len |
SIM卡的本机号码数组长度 |
示例 :
执行代码
char phone_data[64];// 定义一个缓冲区用于存储手机号码信息
yopen_sim_get_phonenumber(0, phone_data, sizeof(phone_data));// 调用函数获取SIM卡关联的手机号码
DEMO_SIM_TRACE(" yopen_sim_get_phonenumber %s ", data);//打印查询数据
打印结果
yopen_sim_get_phonenumber +86……//查询到的电话号码(号码查询依靠SIM卡存储信息,大部分SIM卡查询不到)
查询SIM 卡状态
函数 :yopen_sim_get_card_status(uint8_t nSim, yopen_sim_status_e *card_status)
功能 :用于获取(U)SIM卡状态信息
参数 :
参数 | 说明 |
---|---|
nSim |
所用的(U)SIM卡 |
card_status |
SIM卡状态信息,详情参考yopen_sim.c |
示例 :
执行代码
yopen_sim_status_e card_status;// 定义一个变量用于存储SIM卡状态
yopen_sim_get_card_status(0, &card_status);// 调用函数获取SIM卡状态
DEMO_SIM_TRACE(" yopen_sim_get_card_status %d ", card_status);//打印查询数据
打印结果
yopen_sim_get_card_status 0//(U)SIM卡已就绪
查询当前SIM卡卡槽ID
函数 :yopen_sim_get_operate_id(void)
功能 :用于获取当前操作的(U)SIM卡卡槽ID,该函数仅适用于双卡单待应用
返回值 :
返回值 | 说明 |
---|---|
0 | (U)SIM卡1 |
1 | (U)SIM卡2 |
示例 :
执行代码
ret = yopen_sim_get_operate_id();//获取当前SIM卡卡槽ID
DEMO_SIM_TRACE("========== yopen_sim_get_operate_id %d ==========", ret);//打印查询数据
打印结果
yopen_sim_get_operate_id 0//查询到SIM卡卡槽为SIM1
查询SIM卡软件检测周期
函数 :yopen_sim_get_present_det(uint8_t nSim, uint16_t* period)
功能 :用于获取当前设置的SIM卡在位检测周期
参数:
参数 | 说明 |
---|---|
nSim |
所用的(U)SIM卡 |
period |
检测周期 |
示例 :
执行代码
int period;
yopen_sim_get_present_det(0,period);//获取当前SIM卡在位检测周期
DEMO_SIM_TRACE("yopen_sim_get_present_det %d ==========", period);//打印查询数据
打印结果
yopen_sim_get_present_det 29//查询到SIM卡在位检测周期时间为29s
SIM卡设置
切换 SIM 卡槽
函数 :yopen_sim_set_operate_id(uint8_t nSim)
功能 :用于设置需要操作的(U)SIM卡卡槽ID,默认值为0。该函数仅适用于双卡单待应用,以切换操作的物理卡槽。
注:切换卡槽前需要进入CFUN0模式
参数:
参数 | 说明 |
---|---|
nSim |
所用的(U)SIM卡 0:SIM1 1:SIM2 |
示例 :
执行代码
int target_sim = 1;// 定义目标SIM卡槽
yopen_dev_set_modem_fun(YOPEN_DEV_CFUN_MIN, 0, 0);//进入CFUN0模式
int ret = yopen_sim_set_operate_id(target_sim);// 调用函数切换到目标SIM卡槽
DEMO_SIM_TRACE(" yopen_sim_set_operate_id %d ret %d ", target_sim, ret);//根据返回值判断函数是否执行成功
yopen_dev_set_modem_fun(YOPEN_DEV_CFUN_FULL, 0, 0);//退出CFUN0模式
打印结果
yopen_sim_get_operate_id 1 ret 0//成功切换卡槽到SIM2
设置SIM 卡软件检测
函数 :yopen_sim_errcode_e yopen_sim_set_present_det(uint8_t nSim, uint16_t period)
功能 :用于设置SIM卡在位检测
参数:
参数 | 说明 |
---|---|
nSim |
所用的(U)SIM卡 |
period |
检测周期,单位s,0表示关闭,目前只支持0和29 |
示例 :
执行代码
int=yopen_sim_errcode_e yopen_sim_set_present_det(0, 29);//调用函数设置卡在位检测
DEMO_SIM_TRACE(" yopen_sim_set_present_det ret %d ",ret);//根据返回值判断函数是否执行成功
打印结果
yopen_sim_set_present_det ret 0//执行成功
举例演示
demo_sim.c通过调用以上接口实现查询IMSI,ICCID,手机号码,SIM卡状态,卡槽ID,并切换SIM卡卡槽的功能。获取到的信息通过日志打印输出。
- 打开
demo_sim.c
,经编译运行后烧录至开发板,具体过程参考Yopen 入门篇开发入门 - 打开EPAT工具查看打印log,工具使用方法请参考工具篇抓日志工具EPAT使用指南