如何从嵌入式C中的GSM调制解调器读取消息?

我目前正在“物联网”领域开展我的迷你项目。 我选择使用GSM模块设计无线公告板。

我将项目分为两个模块。 首先,Arduino-LED板接口完美完成。

二,GSM-Arduino接口。 基本上,消息/ SMS将从移动电话发送到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"); }` 

您可能必须使用以下命令将首选SMS存储设置为SIM卡:

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

另外,将此命令移动到setup():

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

最后,请注意我如何使用SIM900A.print()而不是SIM900A.println()并在每个命令后发送’\ r’或0x0d。 println()发送一个“\ n \ r”,这会导致某些调制解调器出现问题。