Suponiendo que DTMFCODE sea el nuevo digito que llega, y eso se guarde en RXDTMF, y eso se repite 4 veces, no veo que estes guardando en un array o algo por el estilo. Como
RXDTMF=Array;
{
*RXDTMF++=DTMFCODE;
i++;
}
Otra cosa mas tenes que recordar que las string tiene un caracter nulo al final, y ademas estan en ASCII
http://www.klcconsulting.net/images/ascii-full.gif"hola" es igual a ['h','o','l','a','\0']
asi que espero que lo agregues y tengas espacio para ese ultimo caracter.
Si recibis unicamente numeros (0 a 9) entonces te queda 2 formas de hacerlo:
Sumarle 48 o 0x30, asi pasarlo a ASCII, y acordarte de ponerle el \0 al ultimo. Esto te va a permitir usar un
fprintf(uart1,"ID...
%s\r\n",RXDTMF);
O usar los numeros ejemplo que recibis 1,2,3 y 4, entonces en tu variable directamente sumas esos valores. Supongamos asi:
for (j=0;j<4;j++)
{
RXDTMF = DTMFCODE * 10^(3-j); // Esto i recibis primero la unidad de mil, si recibis primero las unidades RXDTMF = DTMFCODE * 10^(j);
}
Y eso te va a permitir usar un
fprintf(uart1,"ID...
%d\r\n",RXDTMF);
------------
Si recibis numeros + letras en hexa ( de A a F ) entonces vas atener que preguntar el valor de cada uno de los datos que te llegaron y sumarle el valor correspondiente para transformarlo en una string.
------------
Asi que quedan muchas dudas y no te puedo dar una solucion cierta.
Que valores estan llegando, que rango?, en que formato queres guardarlo?, estan bien guardados?