Impresión
en impresora Adjunta (attached to ANSII )
En los sistemas Unix/Linux, existen unos ficheros de descripciones
de las capacidades de un terminal. Entre dichas capacidades, algunos
terminales tienen la propiedad de impresora adjunta.
Los ficheros, son Termcap, y TemInfo. Con uno de ellos basta para
el acceso a las funciones de impresión.
El funcionamiento básico de esta función es mu simple,
se manda una secuencia de escape al terminal (La secuencia especificada
en terminfo, o en termcap), indicando que se va a proceder a la
impresión, entonces, el terminal dirige todo aquello que
esta recibiendo, pero en vez de mandarlo a la pantalla, lo manda
a la impresora.
Impresión mediante TermInfo
// Ejemplo del uso de terminfo para imprimir en un terminal
// NOTA: Se recomienda el uso de terminfo sobre termcap por ser
// mas moderna y rapida
#include <curses.h>
#include <term.h>
void fatal (char * mensage)
{
fprintf (stderr, "%s\n",mensage);
exit(1);
}
int main (void)
{
char *term;
int status; if ((term=(char *) getenv("TERM"))==NULL)
{
fatal ("TERM no esta establecido");
}
setupterm (term, 1, &status);
if (status!=1)
fatal ("Error al realizar la funcion setupterm");
if ( prtr_on = = NULL )
fatal("La cadena de prtr_on (Comenzar impresión) No
existe");
if ( prtr_off = = NULL )
fatal("La cadena de prtr_off (Finalizar impresión) No
existe");
putp(prtr_on);
fprintf(stdout,"El terminfo se supone mas avanzado\n\f");
putp(prtr_off);
return 1;
}
Impresión mediante TermCap
// EJEMPLO DE IMPRESION UTILIZANDO LA LIBRERIA TERMCAP
// NOTA: Usando la funcion tgetent se guarda toda la configuracion
// del terminal en la variable TBuffer; Si no cabe la
// informacion el programa dara fallo.
// NOTA2: Usando el GCC si se emplea un char * en la funcion tgetent
// cuyo valor sea NULL, se le asignara dinamicamente el
// espacio necesario.
// NOTA3: La libreria termcap (/etc/termcap) se supone mas anticuada
// que terminfo, y se mantiene por la compatibilidad con
// antiguos programas. Se recomienda que use terminfo
//
#include <curses.h>
#define BUFSIZE 4096
int main (void)
{
char TBuffer [BUFSIZE];
char *cadena;
char *term;
if ((term=(char *)getenv("TERM"))==NULL)
{
return 0;
}
tgetent(TBuffer,term);
cadena=(char*)tgetstr("po",&TBuffer);
fputs(cadena,stdout);
fprintf(stdout,"Este texto esta hecho con el termcap\n");
fprintf(stdout,"Se supone que el termcap esta mas anticuado
que el terminfo\n\f");
cadena=(char*)tgetstr("pf",&TBuffer);
fputs(cadena,stdout);
return 1;
}
|