Autor Tema: Error en definicion de funcion  (Leído 1293 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Alejandro

  • PIC16
  • ***
  • Mensajes: 112
Error en definicion de funcion
« 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?

Desconectado hector.ar

  • PIC10
  • *
  • Mensajes: 22
Re: Error en definicion de funcion
« Respuesta #1 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

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Error en definicion de funcion
« Respuesta #2 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!
No contesto mensajes privados, las consultas en el foro

Desconectado Alejandro

  • PIC16
  • ***
  • Mensajes: 112
Re: Error en definicion de funcion
« Respuesta #3 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...

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Error en definicion de funcion
« Respuesta #4 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!
No contesto mensajes privados, las consultas en el foro

Desconectado Alejandro

  • PIC16
  • ***
  • Mensajes: 112
Re: Error en definicion de funcion
« Respuesta #5 en: 23 de Mayo de 2011, 20:28:51 »
 :mrgreen: Gracias...