Problem with GSM Arduino based LCD Scrolling Display

Hii all, I am doing project GSM based digital notice board using arduino with home automation. I have done all the requirements. But the problem is that when ever we send message length greater than 10 characters it is not receiving. It is trying continue sly. Here is my code please go help to rectify my problem.

 #include<LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

#define Fan 7
#define Light 6
#define TV 8

int temp=0,i=0;
int led=13;

char str[146];

void setup()
{
  lcd.begin(16,2);
  Serial.begin(9600);
  pinMode(led, OUTPUT);
   pinMode(Fan, OUTPUT);
    pinMode(Light, OUTPUT);
     pinMode(TV, OUTPUT);
  
  lcd.setCursor(0,0);
  lcd.print("GSM Control Home");
  lcd.setCursor(0,1);
  lcd.print("   Automaton    ");
  delay(2000);

  Serial.println("AT+CNMI=2,2,0,0,0");
  delay(500);
  Serial.println("AT+CMGF=1");
  delay(1000);
 // lcd.clear();

}

void loop()
{
 
serialEvent();
  if(temp==1)
  {
     //lcd.print(str); 
    check();
    temp=0;
    i=0;
    
     
//lcd.clear();
//lcd.print(".");
//delay(5000);
        
}
    
for (int positionCounter = 0; positionCounter < 50; positionCounter++) 
        {
          // scroll one position left:
          lcd.scrollDisplayLeft();
          // wait a bit:
          delay(200);
        }
  
  for (int positionCounter = 50; positionCounter >0; positionCounter--) 
        {
          // scroll one position left:
          lcd.scrollDisplayRight();
          // wait a bit:
          delay(200);
        } 
}

 void serialEvent() 
 {
  while(Serial.available()>0) 
  {
    if(Serial.find("#"))
    {
      digitalWrite(led, HIGH);
      delay(1000);
      digitalWrite(led, LOW);
      while (Serial.available()>0) 
      {
        
      Serial.println("read data from serial please wait....");
      delay(100);
      char inChar=Serial.read();
      str[i++]=inChar;
      if(inChar=='*')
      {
              temp=1;
//       int n=size(str)
       
        return;
      }
    //  str[i++]=inChar; 
       
       Serial.println("checking....please wait");
       
      } 
    }
   }
 }

void check()
{
   if(!(strncmp(str,"tv on",5)))
    {
     // lcd.clear();
     //  lcd.setCursor(0,0); 
      Serial.println("tv on");
      digitalWrite(TV, HIGH);
     // lcd.setCursor(13,1); 
     // lcd.print("TV ON");
      delay(200);
    }  
   
   else if(!(strncmp(str,"tv off",6)))
    {
      //lcd.clear();
       //lcd.setCursor(0,0); 
      Serial.println("tv off");
      digitalWrite(TV, LOW);
     // lcd.setCursor(13,1); 
     // lcd.print("TV OFF");
      delay(200);
    }
  
    else if(!(strncmp(str,"fan on",6)))
    {
      //lcd.clear();
      // lcd.setCursor(0,0); 
      digitalWrite(Fan, HIGH);
      //lcd.setCursor(0,1); 
      //lcd.print("FAN ON");
      delay(200);
    }
 
    else if(!(strncmp(str,"fan off",7)))
    {
      //lcd.clear();
       //lcd.setCursor(0,0); 
      Serial.println("fan off");
      digitalWrite(Fan, LOW);
      //lcd.setCursor(0,1); 
      //lcd.print("FAN OFF");
      delay(200);
    }
 
    else if(!(strncmp(str,"light on",8)))
    {
     // lcd.clear();
     //  lcd.setCursor(0,0); 
      Serial.println("light on");
      digitalWrite(Light, HIGH);
     // lcd.setCursor(7,1); 
     // lcd.print("LIGHT ON");
      delay(200);
    }
 
    else if(!(strncmp(str,"light off",9)))
    {
    //  lcd.clear();
     //  lcd.setCursor(0,0); 
      Serial.println("light off");
      digitalWrite(Light, LOW);
     // lcd.setCursor(7,1); 
     // lcd.print("LIGHT OFF ");
      delay(200);
    } 
    
    else if(!(strncmp(str,"all on",6)))
    {
     // lcd.clear();
     //  lcd.setCursor(0,0); 
      Serial.println("all on");
     // lcd.print("-:LOADS:-");
      digitalWrite(Light, HIGH);
      digitalWrite(Fan, HIGH);
      digitalWrite(TV, HIGH);
     // lcd.setCursor(0,1); 
     // lcd.print("1_ON 2_ON 3_ON");
      delay(200);
    }
 
    else if(!(strncmp(str,"all off",7)))
    {
     // lcd.clear();
     //  lcd.setCursor(0,0); 
     //  lcd.print("-:LOADS:-");
      Serial.println("all off");
      digitalWrite(Light, LOW);
      digitalWrite(Fan, LOW);
      digitalWrite(TV, LOW);
     // lcd.setCursor(0,1); 
     // lcd.print("1_OFF 2_OFF 3_OFF");
      delay(200);
    }  
    else
    {
         lcd.clear();
      lcd.setCursor(0,0); 
      lcd.print(str);
      lcd.print("        "); 
    }
}