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