将char的值传递给字符串以用于比较

时间:2015-01-13 03:02:04

标签: c++ arduino gsm

我正在开展一个项目,我将使用Arduino(ATMEGA328)和GSM(SIM900)。

收到的消息存储在inchar中。我能够在串行监视器上打印inchar的值,但我想在inchar内找到一个特定的单词。

有没有办法将该char传递给字符串,所以我可以使用string的子字符串函数?

请帮忙。这是我的代码片段:

#include <SoftwareSerial.h> 
#include <string.h>

char inchar; // Will hold the incoming character from the GSM shield

SoftwareSerial SIM900(2, 3);
//String inchar1;

void setup()
{
  Serial.begin(9600);

  // wake up the GSM shield
  SIM900power(); 
  SIM900.begin(9600);
  delay(20000);
  SIM900.print("AT+CMGF=1\r");
  delay(100);
  SIM900.print("AT+CNMI=2,2,0,0,0\r"); 
  delay(100);
  Serial.println("Ready....");
}

void SIM900power()
{
  digitalWrite(9, HIGH);
  delay(1000);
  digitalWrite(9, LOW);
  delay(7000);
}

 void loop() 
{

if(SIM900.available() >0)
  {
    inchar=SIM900.read();
    Serial.print(inchar);


}
}

以下是串行监视器中的输出:

+CMT: "+1234567890","","15/01/13,10:51:29+32"
amessage deleted!

我只想比较+1234567890并丢弃其他人。有没有办法做到这一点?

1 个答案:

答案 0 :(得分:0)

您可能希望使用String类而不是数组。见这里:http://arduino.cc/en/Reference/StringObject

yourString.index(",")将允许您找到“,”的第一个出现。

然后,您将能够使用yourString.substring(start, stop)剪切字符串。