如何读取嵌入式C从GSM调制解调器的消息?(How to read messages from GS

2019-09-27 23:55发布

我目前的工作下的域“物联网”我的小项目。 我选择了设计使用GSM模块的无线公告板。

我分了项目分成两个模块。 首先,Arduino的LED基板界面,其完美地完成。

其次,GSM-Arduino的接口。 基本上,一个消息/短信从手机发送到GSM模块,然后我们有读取使用的Arduino从GSM模块消息。 我在这里面临的一个问题。 该消息被发送到GSM调制解调器,但我不能读它。 我试着写不同的代码,但它不工作。 不被显示的消息。

这里是代码片段我试过了。

`#include SoftwareSerial.h

SoftwareSerial SIM900A(2,3);// RX | TX

// Connect the SIM900A TX to Arduino pin 2 RX 

// Connect the SIM900A RX to Arduino pin 3 TX.


void setup()
{ 

      SIM900A.begin(9600);   // Setting the baud rate of GSM Module 

      Serial.begin(9600);    // Setting the baud rate of Serial Monitor(Arduino)

      Serial.println ("SIM900A Ready");

      delay(100);

      Serial.println (" Press s to send and r to recieve ");

}

 void loop()
 {

     if (Serial.available()>0)

     switch(Serial.read())

     {

       case 's':  SendMessage();
               break;

       case 'r':  RecieveMessage();
               break;

      }

    if (SIM900A.available()>0)

        Serial.write(SIM900A.read());

}


 void SendMessage()
{

     SIM900A.println("AT+CMGF=1");    //Sets the GSM Module in Text Mode

     delay(1000);  // Delay of 1000 milli seconds or 1 second

     Serial.println ("Set SMS Number");

     SIM900A.println("AT+CMGS=\"+91xxxxxxxxxx\"\r"); //Replace with your mobileno.

     delay(1000);

     Serial.println ("Set SMS Content");

    SIM900A.println("Hello, I am SIM900A GSM Module");// The SMS text you want to send

     delay(100);

     Serial.println ("Finish");

     SIM900A.println((char)26);// ASCII code of CTRL+Z

     delay(1000);

     Serial.println (" ->SMS Sent");
}


 void RecieveMessage()
{

     Serial.println ("SIM900A Receiving SMS");

     delay (1000);

     SIM900A.println("AT+CNMI=2,2,0,0,0"); // AT Command to receive a live SMS

     delay(1000);

     Serial.write (" ->Unread SMS Recieved");

 }`

Answer 1:

您可能需要设置短信的首选存储使用命令SIM卡:

SIM900A.print("AT+CPMS=\"SM\"\r");

此外,移动这个命令设置():

SIM900A.print("AT+CMGF=1\r");

最后,注意如何我已经使用SIM900A.print()而不是SIM900A.println(),并发送一个“\ R”或每个命令后0X0D。 的println()发送一个“\ n \ r”和导致在某些调制解调器问题。



文章来源: How to read messages from GSM modem in Embedded C?