Estoy interactuando con GSM SIM900. Escribí un programa para poder leer el SMS en SIM900. He hecho una función para transmitir y recibir. Cada vez que llega msg, GSM responde con +CMT
junto con el número de ranura. Estoy tratando de extraer ese número de ranura que está en dígitos, pero obtengo valores de basura
Aquí está el código:
while(1)
{
if (serial_Rx() != NULL) // SOMETHING PRESENT TO BE READ
{
serial_Tx("done"); // print done
PORTC = 0x01; // turn on led
for (int i=0;i<=14;i++)
{
data[i] = serial_Rx(); //storing received in data
if(isdigit(data[i]))
{
serial_Tx("enter");
PORTC = 0x02;
data1[i] = data[i];
serial_Tx(data1[i]);
}
}
}
}
Transmite y recibe funstions:
void serial_Tx(char *str)
{
for (unsigned int i=0;str[i]!=0;i++)
{
UDR=str[i];
while(!(UCSRA&(1<<UDRE)));
}
}
char serial_Rx()
{
//Wait untill a data is available
while(!(UCSRA & (1<<RXC)))
{
//Do nothing
}
//Now USART has got data from host and is available is buffer
return UDR;
}
void uart_put(char data)
{
UDR=data;
while(!(UCSRA&(1<<UDRE)));
}
Hiperterminal: