搜索
bottom↓
回复: 3
打印 上一主题 下一主题

短信中发送人号码,信息怎样提取?

[复制链接]

出0入0汤圆

跳转到指定楼层
1
发表于 2013-10-26 09:15:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
接收到短信,怎样提取发送人号码和信息内容呢?比如收到:
:"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都是空的。
大家帮看看,是什么原因呢?另外,你们有没有类似的参考算法?

出0入0汤圆

2
发表于 2013-11-3 07:27:19 | 只看该作者
直接跳过头,我的方法是去SIM存储区读数据,读完就删除,未读短信头都是固定的,直接跳过取数据

出0入0汤圆

3
发表于 2013-11-3 07:28:29 | 只看该作者
设置 AT+CNMI=0,0,0,0,0

出0入0汤圆

4
发表于 2014-5-2 14:56:21 | 只看该作者
q491790850 发表于 2013-11-3 07:27
直接跳过头,我的方法是去SIM存储区读数据,读完就删除,未读短信头都是固定的,直接跳过取数据 ...

赞同,,,,,
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-20 04:42

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表