我正在开展一个项目,我将使用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
并丢弃其他人。有没有办法做到这一点?
答案 0 :(得分:0)
您可能希望使用String
类而不是数组。见这里:http://arduino.cc/en/Reference/StringObject
yourString.index(",")
将允许您找到“,”的第一个出现。
然后,您将能够使用yourString.substring(start, stop)
剪切字符串。