SIM900 gsm sketch no longer working

I had my SIM900A module working fine a few weeks ago with a test sketch to call me back if it received a message starting and ending with a #

I now have to finish off the unit, but I cannot get the test sketch/module to work properly again. ( it is running on a 2 amp psu , and I did top up the SIMCcard ))

Instead of displaying the numbers on the serial monitor, and then calling back to acknowledge, I just get as below :- any ideas where I have goofed up, I have had a very long day and it could be stupid.

Ready…
buf 0 = ÿ
buf 1 = ÿ
buf 2 = ÿ
buf 3 = ÿ
buf 4 = ÿ
buf 5 = ÿ
buf 6 = ÿ
buf 7 = ÿ
buf 8 = ÿ
buf 9 = ÿ
buf 10 = ÿ
buf 11 = ÿ
valid data
in sendack

#include <SoftwareSerial.h> 
char inchar; // Will hold the incoming character from the GSM shield
SoftwareSerial SIM900(10, 11);
char buf [12];
int thisunit = 25;
void setup()
{
  Serial.begin(19200);
  SIM900.begin(19200);
  delay(6000);  // give time to log on to network.
  SIM900.print("AT+CMGF=1\r");  // set SMS mode to text
  delay(100);
  SIM900.print("AT+CNMI=2,2,0,0,0\r"); 
  // blurt out contents of new SMS upon receipt to the GSM shield's serial out
  delay(100);
  Serial.println("Ready...");
}
void loop() 
{
  //If a character comes in from the cellular module...
  if(SIM900.available() >0)
  {
    inchar=SIM900.read(); 
    if (inchar=='#')
      Serial.println(inchar);
    { 
      for ( int j=0; j<=11; j++ ) {

        buf [j] = inchar;  
        Serial.print("buf "); 
        Serial.print(j); 
        Serial.print("  = "); 
        Serial.println( char ( buf[j] ));
        delay(10);
        inchar=SIM900.read();        
      } // end for j=0to 7     

      if ( buf [11] = '*' ) {   
        Serial.println("valid data ");

        sendack ();    

      }// end of if buf7=*
      delay ( 1000 );
      SIM900.println("AT+CMGDA"); // delete all SMS

    } // end if #  
  } // end if SIM900 avail
} // end loop   


void sendack ()
{
  Serial.print("in sendack ");  

  SIM900.print("AT+CMGF=1\r");                     // AT command to send SMS message
  delay(100);
  SIM900.println("AT + CMGS = \"+27myphone\"");  // recipient's mobile number, in international format
  delay(100);
  SIM900.print("unit "); 
  SIM900.print(thisunit);  
  SIM900.println("  updated. ");                              // message to send
  delay(100);
  SIM900.println((char)26);                        // End AT command with a ^Z, ASCII code 26
  delay(100); 
  SIM900.println();
  delay(5000);                                     // give module time to send SMS
  //SIM900power();                                   // turn off module
}

I have added a serial print and all the data is 255 from the gsm, but I dont see how the valid data works , if it doesnt see a # ?

I got a couple of hours sleep, and when I connected it up again, it churned out loads od SMS messages to my phone, but the data in still reads -1 ( no data )