TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: Alejandro en 23 de Mayo de 2011, 19:47:41
-
Hola, estoy definiendo una funcion de la sgte forma:
int Modem_Wait_Rpta(char Buffer_TX,char Buffer_RX,int Nro_char) {
printf(Buffer_TX); // Mensaje a ser enviado al Modem
delay_ms(2000);
if (flag_RX_Modem){ // Hay datos en el UART
sprintf(Token,Buffer_RX); // Mensaje esperado del modem
if(!strncmp(Buffer_Modem,Token,Nro_char))
return 1;
else
return 0;
}
else
return 0;
}
Cuando lo compilo no tengo errores, pero cuando llamo a esta funcion en mi aplicativowhile (Modem_Wait_Rpta("AT+SBD","+SBDI:1",9));Tengo el sgte error: :5]
*** Error 90 "modem_4x.c" Line 428(37,38): Attempt to create a pointer to a constant
:mrgreen: Alguien me podria decir cual es mi error y como puedo corregirlo?
-
El error esta en que definistes una variable char para una cadena:
Esta es tu definición:
char Buffer_TX
Pero luego no pones un caracter, como definistes, sino una cadena:
"AT+SBD"
Lo mismo pasa con la variable char Buffer_RX
Lo puedes solucionar definiendo un array de caracteres y no un solo caracter.
Saludos!
Héctor
-
En que compilador? CCS? No se puede :mrgreen: En otros podes usar punteros a constantes para pasar parámetros por referencia.
En CCS podes usar punteros, pero a RAM, entonces no podes escribir directamente ("AT+SBD","+SBDI:1",9)) al llamar a la función, sino que debes crear un arreglo con el string.
Saludos!
-
Hola Suky, estoy usando CCS...
Si no es mucho pedir por favor podrias poner un ejemplo...
-
Una forma podría ser:
char Buffer1[]="AT+SBD";
char Buffer2[]="+SBDI:1";
int Modem_Wait_Rpta(char *Buffer_TX,char *Buffer_RX,int Nro_char){
//....
}
Modem_Wait_Rpta(Buffer1,Buffer2,9);
Como seguramente hay varios tipos de string para Buffer1 y Buffer2, lo mejor es establecer estos buffer de tamaño fijo y cargarlos adecuadamente antes de llamar a la función utilizando strcpy(....)
Saludos!
-
:mrgreen: Gracias...