Puedes tener mayor control con la función Biosprint que trabaja me parece mucho con la interrupción 14 (o es la serial? jejeje no me acuerdo bien). Bueno, escribe el nombre y pide la ayuda del turboC o el que tengas.
Te escribo algunas líneas que te ahorrarán tiempo, son mias asi que no las encontrarás en internet.
void C_cancel(void)
{
biosprint(0,0x1b,0); biosprint(0,0x18,0);
}
void C_ancha(int inic)
{
if(inic)
{
biosprint(0,0x1b,0); biosprint(0,0x0e,0);
}
else
{
biosprint(0,0x1b,0); biosprint(0,0x14,0);
}
}
void C_condens(int inic)
{
if(inic)
{
biosprint(0,0x1b,0); biosprint(0,0x0f,0);
}
else
{
biosprint(0,0x1b,0); biosprint(0,0x12,0);
}
}
void C_pagina(void)
{
biosprint(0,0x1b,0); biosprint(0,0x0c,0);
}
void C_tab(void)
{
biosprint(0,0x1b,0); biosprint(0,0x09,0);
}
void C_timbre(void)
{
biosprint(0,0x1b,0); biosprint(0,0x07,0);
}
void C_espaciolinea(void)
{
biosprint(0,0x1b,0); biosprint(0,'3',0); biosprint(0,0x18,0);
}
void C_tampon(void)
{
biosprint(0,0x1b,0); biosprint(0,0x0a,0);
}
void C_tabvert(void)
{
biosprint(0,0x1b,0); biosprint(0,0x0b,0);
}
void imprime_hard(char bufferim[],int x,int y)
{
unsigned i,l;
delay(25);
switch(biosprint(2,0,0)) // Analizar todas las posibilidades
{
case 0x01:
avisoprint("PASO DEL TIEMPO ADJUDICADO");
break;
case 0x08:
avisoprint("ERROR DE IMPRESORA");
break;
case 0x10:
avisoprint("LA IMPRESORA NO ESTA CONECTADA");
break;
case 0x20:
avisoprint("NO TIENE PAPEL O ESTA DESCONECTADA");
break;
case 0x40:
avisoprint("ACUSE DE RECIBO");
break;
case 0x80:
avisoprint("LA IMPRESORA NO ESTA PREPARADA");
break;
case 0x90:
break;
}
l=strlen(bufferim);
biosprint(0,0x1b,0);
biosprint(0,0,0);
for(i=0;i<l;i++)
{
delay(15); //necesario, de lo contrario escribe caracteres intermedios
switch(prueba_impresora())
{
case 0:
biosprint(0,bufferim[i],0);
break;
case 1:
return;
case 2:
avisoprint("IMPRESION CANCELADA");
return;
}
}
//prueba_impresora();
biosprint(0,0x0d,0);
biosprint(0,0x0a,0);
prueba_impresora();
}
Espero te sirvan amigo :-] |