Error getting data from GSM SIM900
In your code the following function call is wrong:

serial_Tx(data1[i]);


Because data1[i] has a type of char but void serial_Tx(char *str) expects a char*, this function is for sending strings, not single characters. This way it causes runtime error, hence you won't get the expected output. 

Though, it won't generate a compilation error, but the compiler will give a warning like this: 



It is recommended to check and fix these warnings, because as you could see they could cause troubles in runtime.

So, replace the function above with the void uart_put(char data) function, like:

uart_put(data[i]);


and it will work.