在线时间237 小时
UID146802
注册时间2015-3-6
NXP金币0
TA的每日心情 | 开心 2019-7-11 19:28 |
---|
签到天数: 141 天 连续签到: 1 天 [LV.7]常住居民III
金牌会员
 
- 积分
- 2492
- 最后登录
- 2020-9-16
|
GSM的电话本是放到SIM卡中,分别是存储和读取,使用指令为 AT+CPBR=1和AT+CPBW=1,"XXXXXX" 程序流程,
1,初始化模块
2,读取SIM卡的短信, 这里只有 存电话本指令,和读电话本指令可以使用
3, 如果是存电话本,格式是 TEL:1.XXXXXX, 把后面的XXXX存入第一个电话本位置,
4,如果是读取电话本,格式是 TEL?, 这里连读到取9个电话本,并把内容以短信格式回发
- /*
- 针对短信内容进行处理
- */
- INT8U sms_event_deal(INT8U *str,INT8U *str_tel,INT8U *str_code)
- { INT32U i;
- INT8U j,t;
- INT8U tmp_buf[25];
- INT8U tmp_buf2[4];
- /*
- 格式:TEL:1,15000298662
- 功能:向SIM卡里的电话本内存一个号码,号码为150XXXX
- */
- i= strsearch("TEL:",str_code);
- if(i)//i为当前内容所在位置+1
- { i=i+3;j=0;
- if(str_code[i]>'0'&&str_code[i]<'9')
- { j=str_code[i]-'0';i++;
- }
- if(str_code[i]==','||str_code[i]<'.')
- {i=i+1;}
- else return (0);
- //向 tmp_buf里放入电话号码,这里一定要是数字,否可能失败
- for(t=0;t<20;t++)
- { if(str_code[i]==0) break;
- tmp_buf[t]=str_code[i++];
- }
- tmp_buf[t]=0;
- /* SIM卡内的电话本存入方式
- AT+CPBW=1,"15000298662"
-
- */
- i=0;tmp_buf2[i++]=(j/10)+'0';tmp_buf2[i++]=(j%10)+'0';
- tmp_buf2[i++]= ',';
- tmp_buf2[i++]=0;
- //进行AT指令组织及发送
- strcpya(str,"AT+CPBW=");strcata(str,tmp_buf2);
- strcata(str,""");
- strcata(str,tmp_buf); strcata(str,""");
- strcata(str,"\x0d");com1_send(str);
- myDelay(500);
- //---------------------------
- //存完内容后回一条短信,表示已经存上子
- gms_sms_send(str,str_tel,"TEL OK!");
- return (1);
- }
- /*
- 格式:TEL?
- 功能:向SIM卡里的电话本内1-9的所有号码,
- */
- i= strsearch("TEL?",str_code);
- if(i)//i为当前内容所在位置+1
- { //这里直接进行内容处理
- /*
- 电话本读取格式是,
- AT+CPBR=1
- AT+CPBR=2
- AT+CPBR=3
- 回复格式:
- AT+CPBR=1
- +CPBR: 1,"13818120592",129,""
- OK
- */
- str_code[0]=0;
- for(t=1;t<10;t++)
- { if(t!=1) //内容回复格式之1
- { strcata(str_code," \x0a");
- }
-
- i=0;tmp_buf2[i++]=(t/10)+'0';tmp_buf2[i++]=(t%10)+'0';tmp_buf2[i++]= 0;
-
- //进行AT指令组织及发送
- strcpya(str,"AT+CPBR=");strcata(str,tmp_buf2);
- strcata(str,"\x0d");
- //因为要读取电话本,所以这里要进行等待并查询接收区内容
- i=com1_send(tmp_buff);
- for(j=0;j<20;j++)
- { myDelay(2);
- if(at_cont2)
- { myDelay(30);
- i= strsearch("+CPBR: ",at_buff2);
- {break; }
- }
- }
-
- if(i)
- { i= strsearch("+CPBR: ",at_buff2);
- if(i)
- { strcata(str_code,tmp_buf2); //内容回复格式之1
- strcata(str_code,",");
- j=i+9;i=0;
- do
- { tmp_buf[i++]= at_buff2[j++];
- if( at_buff2[j]=='"')
- { tmp_buf[i++]=0;
- break; }
- }while(i<20);
- strcata(str_code,tmp_buf);
- }
- }
-
- myDelay(10);
- //---------------
- }//for
- //查完后进行回复
- gms_sms_send(str,str_tel,str_code);
- return (1);
- }
-
- return (0);
- }
复制代码 调试效果,串口监听到的数据
硬件连接图 :
附件:
GSM-phone-book.zip
(963.8 KB, 下载次数: 9)
|
|