正在使用Sim300,尝试通过串行通信接收atmega16上的短信。 当我发送" * 23#"从我的手机短信到gsm调制解调器,gsm发送 " \ r \ N + CMGR:\ S" REC \ sUNREAD"&#34 + 919762148043" ,," 14/03 / 13,23:04:32 + 22" \ r \ n * 23#\ r \ n \ r \ nOK \ r \ n" 作为串口的响应。 我在atmega16上获得了这些数据,但仅限于此 " \ r \ N + CMGR:\ S" REC \ sUNREAD"&#34 + 919762148043" ,," 14/03 / 13,23:04:32 + 22" \ r" 这么多的字符串在那里" * 23#"是我的实际短信,我对" 23"感兴趣。 我的固件看起来像这样,
while(Serial.available())
{
char tempChar = Serial.read();
if(tempChar == '+')
{
isPreSms = true;
lcd.print('+');
}
else if((tempChar == '\r') && (isPreSms == true))
{
isPreSms = false;
lcd.print('r');
}
else if(tempChar == '*')
{
digitalWrite(OKLed, HIGH);
isSms = true;
lcd.print('*');
}
else if((tempChar == '#') && (isSms == true))
{
digitalWrite(powerLed, HIGH);
isSms = false;
lcd.print(sms);
}
else if(isSms)
{
digitalWrite(alertLed, HIGH);
sms += tempChar;
}
}
lcd.print('@');
}
我期待" +++ r * 23 @"作为lcd的输出。我已经检查过,它收到了' +'以及' \ r'但不是' *'并进一步。我被困在这里,请帮忙,出了什么问题。
答案 0 :(得分:0)
现在我解决了。 串行缓冲区的大小有问题。我把它的大小增加到了128个字节,现在工作正常。