TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: Alejandro en 23 de Mayo de 2011, 19:47:41

Título: Error en definicion de funcion
Publicado por: Alejandro en 23 de Mayo de 2011, 19:47:41
Hola, estoy definiendo una funcion de la sgte forma:
Código: [Seleccionar]
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 aplicativo
Código: [Seleccionar]
while (Modem_Wait_Rpta("AT+SBD","+SBDI:1",9));Tengo el sgte error: :5]
Citar
*** 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?
Título: Re: Error en definicion de funcion
Publicado por: hector.ar en 23 de Mayo de 2011, 20:08:14
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
Título: Re: Error en definicion de funcion
Publicado por: Suky en 23 de Mayo de 2011, 20:09:05
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!
Título: Re: Error en definicion de funcion
Publicado por: Alejandro en 23 de Mayo de 2011, 20:16:45
Hola Suky, estoy usando CCS...

Si no es mucho pedir por favor podrias poner un ejemplo...
Título: Re: Error en definicion de funcion
Publicado por: Suky en 23 de Mayo de 2011, 20:25:56
Una forma podría ser:

Código: [Seleccionar]
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!
Título: Re: Error en definicion de funcion
Publicado por: Alejandro en 23 de Mayo de 2011, 20:28:51
 :mrgreen: Gracias...