Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/05/2010, 01:43
occam25
 
Fecha de Ingreso: marzo-2007
Mensajes: 58
Antigüedad: 17 años, 2 meses
Puntos: 0
Segmentation fault. Función que devuelve puntero

Hola, estoy haciendo las primeras pruebas para programar un protocolo pelcoD en linux por el puerto serie. Aún no está programado pero la idea es que la función pelcoD_message forme el mensage a enviar según el protocolo y los parametros que reciba y devuelva el puntero a ese mensage para enviarlo por el puerto serie con la funcion write_port.
En la primera prueba enviaba lo que escribía del teclado y funcionaba, lo que tiene algún error es la funcion pelcoD_message porque, aunq compila bien, al ejecutar me tira un error de "segmentation fault".
Alguien ve donde meto la pata? según creo uso el malloc correctamente.

Código:
int main(int argc, char **argv){
  int fd;
  char *cadena;
  while(1){
    //scanf("%s", cadena);
    fd = open_port();
    cadena = (char *) pelcoD_message(21, 1, 217);
    write_port(fd, cadena);
  }
  return(0);
}
void *pelcoD_message(int address, int action, int value){
  char *cadena;
  cadena = (char *) malloc(sizeof(char));
  cadena[0] = 'a';
  return cadena;
}
Así mismo una duda, para este protocolo tengo que enviar 7 bytes uno detrás de otro. Uno con el Start of Frame, otro con el address.. etc
Por ejemplo:
0xFF 0x01 ... etc
Como hago eso? porq si lo defino la cadena a enviar como una cadena tipo char me enviará caracteres, no los bytes en si, y si lo defino como int me envíara integers en lugar de bytes.. con eso tengo un pequeño dilema


gracias y un saludo