Autor Tema: PUTC( ), PUTCHAR( ), FPUTC( ) y PRINTF( ), FPRINTF( ), cual usar?  (Leído 23717 veces)

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

Desconectado Medusa

  • PIC18
  • ****
  • Mensajes: 252
Hola,   :lol: quisiera saber cual es la diferencia entre  PUTC( ), PUTCHAR( ), FPUTC( ) y PRINTF( ), FPRINTF( ) y cuando se debe usar

Desconectado ppyote

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 929
Re: PUTC( ), PUTCHAR( ), FPUTC( ) y PRINTF( ), FPRINTF( ), cual usar?
« Respuesta #1 en: 22 de Agosto de 2009, 20:52:06 »
todo esto esta sacado del manual del ccs,,, espero que te quede algo mas claro....

c = GETC()
c = GETCH()
c = GETCHAR()
Estas funciones esperan un carácter por la patilla RCV del dispositivo RS232 y retorna
el carácter recibido.
Es preciso utilizar la directiva #USE RS232 antes de la llamada a esta función para que
el compilador pueda determinar la velocidad de transmisión y la patilla utilizada. La
directiva #USE RS232 permanece efectiva hasta que se encuentre otra que anule la
anterior.
Los procedimientos de I/O serie exigen incluir #USE DELAY para ayudar a sincronizar
de forma correcta la velocidad de transmisión. Recordad que es necesario adaptar los
niveles de voltaje antes de conectar el PIC a un dispositivo RS-232.
Ejemplo:
printf("Continuar (s,n)?");
do {
respuesta=getch();
} while(respuesta!='s'&& respuesta!='n');

GETS(char *string)
Esta función lee caracteres (usando GETC()) de la cadena (string) hasta que encuentra
un retorno de carro(valor ASCII 13). La cadena se termina con un 0.
Ejemplo:
Véase la función GET_STRING en el archivo INPUT.C.

PUTC()
PUTCHAR()
Estas funciones envían un carácter a la patilla XMIT del dispositivo RS232. Es preciso
utilizar la directiva #USE RS232 antes de la llamada a esta función para que el
compilador pueda determinar la velocidad de transmisión y la patilla utilizada. La
directiva #USE RS232 permanece efectiva hasta que se encuentre otra que anule la
anterior.
Ejemplo:
if (checksum==0)
putchar(ACK);
else
putchar(NAK); // NAK carácter de respuesta negativa

  PUTS(string)
Esta función envía cada carácter de string a la patilla XMIT del dispositivo RS232. Una
vez concluido el envío de todos los caracteres la función envía un retorno de carro CR
o RETURN (ASCII 13) y un avance de línea LF o LINE-FEED (ASCII 10).
Ejemplo:
puts( " ---------- " );
puts( " | HOLA |" );
puts( " ---------- " );

PRINTF([function], string, [values])
La función de impresión formateada PRINTF saca una cadena de caracteres al
estándar serie RS-232 o a una función especificada. El formato está relacionado con el
argumento que ponemos dentro de la cadena (string).
Cuando se usan variables, string debe ser una constante. El carácter % se pone dentro
de string para indicar un valor variable, seguido de uno o más caracteres que dan
formato al tipo de información a representar.
Si ponemos %% obtenemos a la salida un solo %. El formato tiene la forma genérica
%wt, donde w es optativo y puede ser 1,2,...,9. Esto es para especificar cuántos
carácteres son representados; si elegimos el formato 01,...,09 indicamos ceros a la
izquierda, o también 1.1 a 9.9 para representación en punto flotante.
t es el tipo de formato y puede ser uno de los siguientes:
C Carácter
U Entero sin signo
x Entero en Hex (en minúsculas)
X Entero en Hex (en mayúsculas)
D Entero con signo
%e Real en formato exponencial(notación científica)
%f Real (Float)
Lx Entero largo en Hex (en minúsculas)
LX Entero largo en Hex (en mayúsculas)
Lu Decimal largo sin signo
Ld Decimal largo con signo
% Simplemente un %
Ejemplos:
byte x,y,z;
printf (" Hola ");
printf("RTCCValue=>%2x\n\r",get_rtcc());
printf("%2u %X %4X\n\r",x,y,z);
printf(LCD_PUTC, "n=%c",n);
PPyote... siempre estareis en mi corazon.... Te quiero Hermano...

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: PUTC( ), PUTCHAR( ), FPUTC( ) y PRINTF( ), FPRINTF( ), cual usar?
« Respuesta #2 en: 23 de Agosto de 2009, 01:13:27 »
Me gustaria acotar una cosa:
getch, getchar, putch, y todas esas no son estandares de C, por lo tanto conviene usar getc() y putc() si nos interesa q nuestro programa sea portable.
saludos!!!

"conozco dos cosas infinitas: el universo y la estupidez humana. Y no estoy muy seguro del primero." A.Einstein

Desconectado Medusa

  • PIC18
  • ****
  • Mensajes: 252
Re: PUTC( ), PUTCHAR( ), FPUTC( ) y PRINTF( ), FPRINTF( ), cual usar?
« Respuesta #3 en: 24 de Agosto de 2009, 10:43:47 »
Gracias por la aclaracion...

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: PUTC( ), PUTCHAR( ), FPUTC( ) y PRINTF( ), FPRINTF( ), cual usar?
« Respuesta #4 en: 24 de Agosto de 2009, 12:52:10 »
fprintf se utiliza cuando se tiene 2 o mas lineas de comunicación, para enviar una trama indicando el stream que la identifica:

Código: C
  1. #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8, stream=PC)
  2. #use rs232(baud=9600,parity=N,xmit=PIN_C5,rcv=PIN_C4,bits=8,stream=Dispositivo)
  3.  
  4.  
  5. fprintf(Dispositivo,"%02u-%f\r\n",....);
  6. fprintf(PC,"Enviando..\r\n");


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado Medusa

  • PIC18
  • ****
  • Mensajes: 252
Re: PUTC( ), PUTCHAR( ), FPUTC( ) y PRINTF( ), FPRINTF( ), cual usar?
« Respuesta #5 en: 24 de Agosto de 2009, 14:20:19 »
Hola Suky, gracias por la aclaracion.

Desconectado micronet3

  • PIC18
  • ****
  • Mensajes: 288
Re: PUTC( ), PUTCHAR( ), FPUTC( ) y PRINTF( ), FPRINTF( ), cual usar?
« Respuesta #6 en: 28 de Agosto de 2009, 10:59:52 »
que diferencia habria entre putc() y putchar().?

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: PUTC( ), PUTCHAR( ), FPUTC( ) y PRINTF( ), FPRINTF( ), cual usar?
« Respuesta #7 en: 28 de Agosto de 2009, 11:23:52 »
ninguna, trabajan igual. pero como explique mas arriba, putc() es estandar, putch() y putchar() no lo son
saludos!

"conozco dos cosas infinitas: el universo y la estupidez humana. Y no estoy muy seguro del primero." A.Einstein

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: PUTC( ), PUTCHAR( ), FPUTC( ) y PRINTF( ), FPRINTF( ), cual usar?
« Respuesta #8 en: 02 de Septiembre de 2009, 16:08:20 »
no son estándares de C como bien dice gera, son en CCS definos en los .h de todos los micros que usamos:

#define getc getch
#define fgetc getch
#define getchar getch
#define putc putchar
#define fputc putchar
#define fgets gets
#define fputs puts

fíjense el .h de cualquier micro, lo verán, y ahí esta un define de boolean también, que no es estándar de C

y otros más

saludos.
.

Desconectado ppyote

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 929
Re: PUTC( ), PUTCHAR( ), FPUTC( ) y PRINTF( ), FPRINTF( ), cual usar?
« Respuesta #9 en: 03 de Septiembre de 2009, 19:50:26 »
cierto asta hace no mucho no lo sabia mire el archivo 16f877.h y ahi estaba....
yo siempre uso putc... es costumbre mia
PPyote... siempre estareis en mi corazon.... Te quiero Hermano...

Desconectado RALF2

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2060
Re: PUTC( ), PUTCHAR( ), FPUTC( ) y PRINTF( ), FPRINTF( ), cual usar?
« Respuesta #10 en: 26 de Octubre de 2009, 23:26:25 »
Hola amigos!
Me estaba preguntando como se trabaja con el fprintf con eso del stream y vi lo que coloco el maestro suki y listo problema resuelto  :-/

Saludos

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: PUTC( ), PUTCHAR( ), FPUTC( ) y PRINTF( ), FPRINTF( ), cual usar?
« Respuesta #11 en: 27 de Octubre de 2009, 01:01:55 »
Hola amigos!
Me estaba preguntando como se trabaja con el fprintf con eso del stream y vi lo que coloco el maestro suki y listo problema resuelto  :-/

Saludos

Y eso me lo enseño MLO_ en algún momento, eso es compartir conocimientos!!!  :D :D


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: PUTC( ), PUTCHAR( ), FPUTC( ) y PRINTF( ), FPRINTF( ), cual usar?
« Respuesta #12 en: 27 de Octubre de 2009, 23:42:53 »
 ;-)

Es lo bueno de compartir ... que el conocimiento se difunfe ...
El papel lo aguanta todo