Arduino SIM900 GSM, как присоединиться к Char на String - PullRequest
1 голос
/ 20 сентября 2019

В настоящее время я делаю проект Arduino с GSM900 GSM GPRS.В этом проекте я должен получать данные, отправленные с телефона.Я мог легко получить данные с одним символом, но я не могу присоединиться к символу, чтобы получить полное слово (String).Я должен использовать это полное слово внутри оператора If, если это слово равно этому другому слову (строке), сделать что-то ...

#include <SoftwareSerial.h>

// Configure software serial port
SoftwareSerial SIM900(7, 8);
//Variable to save incoming SMS characters
char incoming_char=0;
String newchar = "";

void setup() {
  // Arduino communicates with SIM900 GSM shield at a baud rate of 19200
  SIM900.begin(19200);
  Serial.begin(19200); 

  // Give time to your GSM shield log on to network
  delay(20000);

  // AT command to set SIM900 to SMS mode
  SIM900.print("AT+CMGF=1\r"); 
  delay(100);
  // Set module to send SMS data to serial out upon receipt 
  SIM900.print("AT+CNMI=2,2,0,0,0\r");
  delay(100);
}

void loop() {
  if(SIM900.available() >0) {
    incoming_char=SIM900.read(); 
    Serial.print(incoming_char); 
  }
}

Я попытался поместить эту команду в оператор if внутри цикла, но после того, как я попытался сравнить слова, это не сработало бы.

void loop() {
  if(SIM900.available() >0) {
    incoming_char=SIM900.read();
    newString = incoming_char + "";
    Serial.print(incoming_char); 
  }
  if (newString == "Test"){
       Serial.println("It worked");
    }
}

Вывод, который я получаю из последовательного монитора, таков: + CMT: "+ myNumber", "", "19/09 /20,16: 31: 05-12 "Тест

Ответы [ 2 ]

1 голос
/ 20 сентября 2019
void loop() {
    if (SIM900.available() >0) {
        incoming_char=SIM900.read();
        newString += incoming_char;
        Serial.print(incoming_char); 
    }

    if (newString.endsWith("Test")) {
        Serial.println("It worked");
    }
}
0 голосов
/ 20 сентября 2019

Для тех, кому интересно, как это закончилось: благодаря phoenixstudio ...

void loop() {
  if(SIM900.available() >0) {
    incoming_char=SIM900.read();
    newString += incoming_char;
    Serial.print(incoming_char);
  }

  if (newString.endsWith("Test1")){
    Serial.println("Worked1"); 
  }
  if (newString.endsWith("Test2")){
    Serial.println("Worked2"); 
  }
  if (newString.endsWith("Test3"){
    Serial.println("Worked3"); 
  }
}

...