amobbs.com 阿莫电子技术论坛
标题:
短信中发送人号码,信息怎样提取?
[打印本页]
作者:
cinple
时间:
2013-10-26 09:15
标题:
短信中发送人号码,信息怎样提取?
接收到短信,怎样提取发送人号码和信息内容呢?比如收到:
:"SM",1
AT+CMGR=1
+CMGR:"RECUNREAD","13100000000",,"13/10/26,00:34:30+32"
A1=15,A2=20;B1=20.6,B2=37.2;FLAG=TRUE
OK
我的做法是根据"来定位信息,第5个"到第6个"之间的内容为发件人的号码,第8个"之后到换行符之间为信息内容。算法如下(所有变量都以定义):
——————————algorithm begin——————————
for( i = 0; i < length ; i++ ){
if( RecieveBuff[i] == '\"' ){
num = num + 1; // num 记录"的个数
continue;
}
if( num ==5 ){
if( RecieveBuff[ i ] >= '0' && REcieveBuff[ i ] <= '9' ){
PhoneBuff[ j ] = RecieveBuff[ i ] ;
j = j + 1 ;
continue;
}
}
if( num == 8 ){
if( RecieveBuff[ i ] != 0x0d && RecieveBuff[ i ] != 0x0a ){ //换行符
MessageBuff[ t ] = RecieveBuff[ i ] ;
t = t + 1;
continue;
}
else{
break;
}
}
}
PhoneBuff[ j ] = '\0' ; //添加结束符
MessageBuff[ t ] = '\0' ; //添加结束符
——————————algorithm end——————————
但是这样检测的数据有误,错误是Phone和MessageBuff都是空的。
大家帮看看,是什么原因呢?另外,你们有没有类似的参考算法?
作者:
q491790850
时间:
2013-11-3 07:27
直接跳过头,我的方法是去SIM存储区读数据,读完就删除,未读短信头都是固定的,直接跳过取数据
作者:
q491790850
时间:
2013-11-3 07:28
设置 AT+CNMI=0,0,0,0,0
作者:
aragon
时间:
2014-5-2 14:56
q491790850 发表于 2013-11-3 07:27
直接跳过头,我的方法是去SIM存储区读数据,读完就删除,未读短信头都是固定的,直接跳过取数据 ...
赞同,,,,,
欢迎光临 amobbs.com 阿莫电子技术论坛 (https://www.amobbs.com/)
Powered by Discuz! X3.4