码迷,mamicode.com
首页 > 移动开发 > 详细

GSM MODULE 读取手机卡短信思路

时间:2020-03-13 01:10:49      阅读:85      评论:0      收藏:0      [点我收藏+]

标签:出现   方式   传输   循环   短信发送   cpm   tin   style   success   

 

 

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\r\n", i);
  if(read_success){
    // 记录当前 i
  }else{
    continue;
  }
}

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

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

GSM MODULE 读取手机卡短信思路

标签:出现   方式   传输   循环   短信发送   cpm   tin   style   success   

原文地址:https://www.cnblogs.com/1x11/p/12483828.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!