Hola, con respecto a tu respuesta quisiera aclararte algunas cosas.
Yo entiendo la comodidad de esa función printf, pero he de decirte que no me aporta nada ya que yo también tengo una función similar con mis librerías.
Si yo envío una cadena "hola_mundo" con printf, a través del puerto serie se enviarán 1 byte por cada caracter, o sea, 10 bytes (o como mucho 12 si se envía el retorno de carro y una palabra de control, eso depende de la función).
Sin embargo cuando tú haces:
FILE *fichero;
fichero = fopen("salida.txt", "a");
fprintf(fichero, "hola_mundo");
fclose(fichero);
Se te crea una estructura que ocupa bastante más de 10-12 bytes, ya que antes de los datos en sí; contiene metadatos como son: número mágico (entero largo), nombre del fichero (256 bytes), tamaño del archivo (entero largo) y otros que no recuerdo.
Lo bueno de ese conjunto de datos, es que conforma una estructura estándar, conocida por muchas aplicaciones (incluida la mayoría de los teléfonos móviles).
Es como cuando tu cojes un ordenador con un adaptador Bluetooth USB y un móvil, tu siempre envías archivos (fotos, agenda de datos, música, etc), la comunicación ha de entenderse por el sistema operativo como si lo que hubiera conectado al puerto fuera un cable que llega directamente al receptor (y así funciona de hecho).
Entonces, las dos únicas vías de solucionar este embrollo son:
1- Conseguir de alguna forma que el movil funcione como un hyperterminal.
2- Meter la cadena "hola mundo" en un fichero txt y enviar por el puerto serie todo el conjunto de datos que supone dicho fichero.
Con respecto al primer apartado, yo lo investigaré pues si mi móvil no puede cumplir dicho requisito, seguro que encuentro alguno que sí pueda.
En definitiva espero haber sido claro.
Muchas gracias por todo.