Skip to content

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卡卡槽的功能。获取到的信息通过日志打印输出。