GSM Sim300响应未在atmega16中接收

时间:2014-03-13 18:03:46

标签: arduino

正在使用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'但不是' *'并进一步。我被困在这里,请帮忙,出了什么问题。

1 个答案:

答案 0 :(得分:0)

现在我解决了。 串行缓冲区的大小有问题。我把它的大小增加到了128个字节,现在工作正常。