通过Arduino上的gprs屏蔽接收短信

时间:2014-02-18 06:08:56

标签: c++ arduino gprs

我一直在网上搜索试图找到一些示例代码,看看如何监听短信并阅读它。我是命令的新手所以我试图看一些例子。我的意图是听短信和阅读内容。如果消息包含单词:'forward',我希望它运行某个功能。我正在使用带有我的arduino uno的seeedstudio GPRS v1.4防护罩。

我找到了一个库,但我对readSMS()函数感到困惑。该库位于:https://github.com/Seeed-Studio/Seeeduino_GPRS

我有当前的代码:

GPRS gprsTest(8,7,9,9600,"1818XXXXXXXXX");//TX,RX,PWR,BaudRate,PhoneNumber

void setup() {
  Serial.begin(9600);
  gprsTest.preInit();
  delay(1000);
  while(0 != gprsTest.init()) {
      delay(1000);
      Serial.print("init error\r\n");
  }  
}

void loop() {
  //nothing to do
  gprsTest.readSMS();
}

我的问题是我不确定将什么放入readSMS函数的参数中。

根据api,函数接受一个int,string和另一个int。

int readSMS(int messageIndex, char *message, int length);

有什么想法吗?没有关于接收短信的任何文件

1 个答案:

答案 0 :(得分:2)

我不熟悉Seeed-studio(它在头文件中的注释也不是很好,为了给你一些帮助)但这里有一个基本的想法:
收到的文本消息存储在所选消息存储器(SIM或电话,在您的情况下将是调制解调器)上的独立索引上。新消息通常采用最小的未使用索引(索引从1开始)。

检测新短信有两种方法 1)调制解调器在输出端口发送一个字符串以指示新的SMS(如中断)
2)您必须自己阅读未读消息的数量(轮询)

这些方法需要了解与硬件相关的AT命令。如果您想了解/了解正在发生的事情,请给AT命令 CMGR CMGF 读取

也就是说,您明确要求的信息可以在 gprs.cpp readSMS 函数中找到。
messageIndex是存储消息的所选内存的索引 *message是消息将被读入的缓冲区 length是要读取的字节长度 返回状态始终为0(不是一个好的策略)。

我建议使用自定义代码区分已读和未读邮件。这取决于您的申请