surepic:
@nickgammon
Before if(serial.available()) im printing whatever is in buffer via Serial.println(Serial.available()) shouldnt it show me if there are 10 chars or more left? it shows only 1 char is left.
Look, if the bus company dispatches 10 buses along your road, and you go outside and watch, and wait until you don't see a bus, does that mean they have all passed? No, it means you can't see the next one yet, which might come a minute later. Serial sending is not instantaneous - it takes time, and that time is referred to as the "baud rate".
The idea of waiting until you don't see anything else is fundamentally flawed, however adding in a delay will help, assuming the sending end puts gaps between packets of data.