GSM MODULE 读取手机卡短信思路

Posted 1x11

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GSM MODULE 读取手机卡短信思路相关的知识,希望对你有一定的参考价值。

 

 

AT+CPMS? 命令获取到的是当前手机卡储存的短信数量。正常情况下可以当作短信序列号去读取短信,但是如果在你读取短信后,传输到服务器途中,又收到了新短信就会出现问题:

假如你通过上面命令读出来手机卡储存两条短信,你通过 AT+CMGR=2读出位置为 2 的短信,然后发送到服务器中途,又收到一条短信,此时会被储存在位置 3,当你把目前这条短信发送到服务器上,然后通过 AT+CMGD=2 删除之后,

再次通过 AT+CPMS? 获取短信数量,结果还是2,但是实际短信储存的位置序列为 1 和 3。所以我们需要另一种读取短信的方式:

首先读取 手机卡储存的短信数量,当数量大于1条时,写一个循环来读取实际短信

// 伪代码

for(int i=1;i<=50;i++){
  printf("AT+CMGR=%d ", i);
  if(read_success){
    // 记录当前 i
  }else{
    continue;
  }
}

总结就是当用 AT+CPMS? 发现手机上有短信时,就开启一个循环去读取短信,

当 AT+CPMS? 结果为 0 时,证明手机卡没有存储短信。完成已存短信的处理。

以上是关于GSM MODULE 读取手机卡短信思路的主要内容,如果未能解决你的问题,请参考以下文章

GSM协议PDU编码长短信方法

Arduino怎么完整读取GSM收到的短信,我缓冲区的大小也改了,但收到的短信还是不完整?

基于51单片机GSM的手机系统模拟设计-设计资料

基于51单片机GSM的手机系统模拟设计-电路分享

基于STM32实现的的短信实时传送位置----GPS+GSM

验证码短信,真的安全吗?