2014-03-13 66 views
0

我在Sim300上工作,試圖通過串行通信在atmega16上接收短信。 當我從我的手機發送「* 23#」短信給gsm調制解調器時,gsm發送 「\ r \ n + CMGR:\ s」REC \ sUNREAD「,」+ 919762148043「,」14/03/13,23 :04:32 + 22「\ r \ n * 23#\ r \ n \ r \ nOK \ r \ n」 作爲串行端口的響應。 我在atmega16上獲取這些數據,但只有 「\ r \ n + CMGR:\ s」REC \ sUNREAD「,」+ 919762148043「,,」14/03/13,23:04:32 + 22「\ r 「 這個」* 23#「是我真正的短信,對」23「感興趣。 我的固件是這樣的,GSM Sim300響應沒有在atmega16接收

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

現在我解決了它。 串行緩衝區的大小有問題。我把它的大小增加到了128字節,現在它工作的很好。