Это мой первый раз, когда я использую GSM Shield для своего Arduino, поэтому я немного запутался, поэтому мне нужны указания. Моя цель - прочитать сообщение, отправленное на мой GSM-экран, а затем сравнить это сообщение с определенной строкой. если они одинаковые, ардуино что-то сделает. Например, GSM-шилд получил текстовое сообщение, содержащее СТАТУС, ардуино что-то сделает. Проблема, с которой я сейчас столкнулся, заключается в том, как прочитать входящие символы из модуля gsm в одну строку, а затем сравнить эту строку с определенным словом. У меня есть этот код на данный момент.
#include <SoftwareSerial.h>
#include <String.h>
char inchar[255];
SoftwareSerial cell(2,3);
int led1 = 22;
#define powerOn 4
int i;
//char comparestring[160];
char command[]={'S','T','A','T','U','S','\0'}; // this is a string for command ended with null terminator
void setup()
{
// ilagay sa loob ng setup
digitalWrite(powerOn, HIGH);
delay(1500);
digitalWrite(powerOn, LOW);
delay(5000);
pinMode(led1, OUTPUT);
digitalWrite(led1, LOW);
Serial.begin(9600);
cell.b-egin(9600);
delay(30000);
cell.println("AT+CMGF=1"); // set SMS mode to text
delay(200);
cell.println("AT+CNMI=1,2,0,0,0 "); // set module to send SMS data to serial out upon receipt
delay(200);
Serial.println("GSM SHIELD IS NOW OK AND READY");
}
void loop()
{
while(cell.available() >0)
{
inchar[i]=cell.read();
i++;
inchar[i] = '\0';
Serial.print(inchar);
if (inchar==command)
{
digitalWrite(led1, HIGH);
cell.write("AT+CMGS=\"");
cell.write("09267955775");
cell.write("\"\r");
delay(1000);
cell.write("\nTerminal Monitoring System");
delay(1000);
cell.write(0x1A); // End the SMS with a control-z
}
else
{
Serial.println("\nInvalid Keyword! Type ?");
dig-italWrite(led1, LOW);
}
}
}
эти коды - это коды, которые должны помочь, но я думаю, что они не работают. Я надеюсь, что вы можете научить меня правильному пути. Благодарю вас!
while(cell.available() >0)
{
inchar[i]=cell.read();
i++;
inchar[i] = '\0';
Serial.print(inchar);
if (inchar==command)