【发布时间】:2014-07-21 03:22:47
【问题描述】:
我正在尝试发送包含多个值作为字符串的短信,然后 Arduino 板将作为 Serial.read() 接收该短信;命令。例如,如果我将以下 SMS 发送到董事会,“用户名电话号码电子邮件”。然后代码将接收 SMS 并将其划分为不同的字符串值,然后我可以在代码中使用这些值。
到目前为止,我已经能够做到所有这些,我目前面临的问题是,我似乎可以将文本消息作为字符串值接收,这意味着董事会没有将其作为字符串接收,而是将其作为 char[] 接收。
结果,当我尝试打印该值时,我得到以下输出,
> 1: U
2:
3:
1: s
2:
3:
1: e
2:
3:
1: r
2:
3:
1: n
2:
3:
1: ame
2: PhoneNu
3:
1: mber
2: Email
3:
我想要的是得到这个输出,
1:UserName
2:PhoneNumber
3:Email
以下是我正在使用的代码:
void setup()
{
Serial.begin(9600);
}
void loop()
{
if(Serial.available()>0)
{
char string[100];
char byteRead;
int availableBytes = Serial.available();
for(int i=0; i<availableBytes; i++)
{
string[i] = Serial.read();
string[i+1] = '\0'; // Append a null
}
String dj = string;
//char inchar=Serial.read();
String split= dj;
String word1 = getValue(split, ' ', 0);
Serial.println("1: "+word1);
String word2 = getValue(split, ' ', 1);
Serial.println("2: "+word2);
String word3 = getValue(split, ' ', 2);
Serial.println("3: "+word3);
}
}
String getValue(String data, char separator, int index)
{
int found = 0;
int strIndex[] = {0, -1};
int maxIndex = data.length()-1;
for(int i=0; i<=maxIndex && found<=index; i++){
if(data.charAt(i)==separator || i==maxIndex){
found++;
strIndex[0] = strIndex[1]+1;
strIndex[1] = (i == maxIndex) ? i+1 : i;
}
}
return found>index ? data.substring(strIndex[0], strIndex[1]) : "";
}
我希望用户名进入字符串 1,电话号码进入字符串 2,电子邮件进入字符串 3。
谢谢!! :D
【问题讨论】:
标签: c arrays string arduino arduino-ide