Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Impresora P.O.S

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Impresora P.O.S Responder citando

Tengo una aplicación que utiliza una impresora EPSON TM-300A FULL CUT, que debería de cortar el papel pero no lo está haciendo.

Cuando imprimo la página de prueba sí corta el papel.

Como puedo corregir este problema.

Gracias

Volver arriba
Mensaje    Asunto: Impresora P.O.S Responder citando

La orden de corte se la debes de dar por codigo despues de saltar la longitud de papel que quieras manda ESC+"i" si quieres que te deje un puntito para que no se lleve el papel el aire y ESC+"j" si quieres cortarlo completamente.
Volver arriba
Mensaje    Asunto: Impresora P.O.S Responder citando

Hila amigo, supongo que tu generas el archivo textual y lo transfieres al puerto, me puedes decir por favor como lo mandas al spooler ?, Si ves mi mensaje mas abajo entenderas a lo que me refiero, yo ya hice un archivo textual con los codigos de EscP2 y solo tengo que mandarlo al spooler, pero quiero agarrar el que tengan seleccionado en mi cuadro de dialogo de las impresoras.

Gracias

Volver arriba
Mensaje    Asunto: Impresora P.O.S Responder citando

Muchas Gracias por ayudarme con esto.

Como se incorporan estos caracteres?

Lo que hago es incluir linea por línea a un archivo, para imprimirlo por el COM1

Este el procedimiento para el archivito
//---------------------------------------------------------------------------
void __fastcall TFConta::ImprimaLinea(AnsiString linea, int donde)
{
AnsiString linea1;

linea1 = linea;
if (linea1.Length() > 40) {
linea1 = linea1.SubString(0, 40);
}
else {
while (linea1.Length() < 40) {
linea1 += " ";
}
}
if (tempofile == "lpt1")
linea1 = linea1 + "\r\n";
fprintf(archivejo, linea1.c_str());
if (tempofile != "lpt1")
linea1 = linea1 + "\r\n";
fprintf(rescuefile, linea1.c_str());
if (contadorlinea > 7) {
for (int i = 0; i < 30000000; i++);
contadorlinea = 0;
}
contadorlinea++;
}


Este es el proceso en que se cierra el documento.

//---------------------------------------------------------------------------
void __fastcall TFConta::FinDocumento()
{
int Linea;
AnsiString hola;

ImprimaLinea(" ", Linea++);
ImprimaLinea(" ", Linea++);
ImprimaLinea(" ", Linea++);
ImprimaLinea(" ", Linea++);
ImprimaLinea(" ", Linea++);
ImprimaLinea(" ", Linea++);
ImprimaLinea(" ", Linea++);
ImprimaLinea(" ", Linea++);
ImprimaLinea(" ", Linea++);
ImprimaLinea(" ", Linea++);
ImprimaLinea(" ", Linea++);
ImprimaLinea(" ", Linea++);
ImprimaLinea(" ", Linea++);
ImprimaLinea(" ", Linea++);
ImprimaLinea(" ", Linea++);
ImprimaLinea(" ", Linea++);
fprintf(archivejo, "%c", 12);
fclose(archivejo);
}
//---------------------------------------------------------------------------

Volver arriba
Mensaje    Asunto: Impresora P.O.S Responder citando

Muchas Gracias por su ayuda.

Jose Antonio y Tronx, yo utilizo en C++ BUILDER 1 y C++ BUILDER 4, la mayoría de aplicaciones están en la versión 1. Resulta que yo asigno el puerto así:

tempofile = "com1";
archivejo = fopen(tempofile.c_str(), "w+");

Con lo siguiente le ingreso cada línea que tengo que imprimir:

//---------------------------------------------------------------------------
void __fastcall TFConta::ImprimaLinea(AnsiString linea, int donde)
{
AnsiString linea1;

linea1 = linea;
if (linea1.Length() > 40) {
linea1 = linea1.SubString(0, 40);
}
else {
while (linea1.Length() < 40) {
linea1 += " ";
}
}
if (tempofile == "lpt1")
linea1 = linea1 + "\r\n";
fprintf(archivejo, linea1.c_str());
if (tempofile != "lpt1")
linea1 = linea1 + "\r\n";
fprintf(rescuefile, linea1.c_str());
if (contadorlinea > 7) {
for (int i = 0; i < 30000000; i++);
contadorlinea = 0;
}
contadorlinea++;
}

Con esto cierro el documento y listo ... por obra de magia se imprime en el puerto (cambia un poco si es en LPT o COM)

//---------------------------------------------------------------------------
void __fastcall TFConta::FinDocumento()
{
int Linea;
AnsiString hola;

ImprimaLinea(" ", Linea++);
ImprimaLinea(" ", Linea++);
ImprimaLinea(" ", Linea++);
ImprimaLinea(" ", Linea++);
ImprimaLinea(" ", Linea++);
ImprimaLinea(" ", Linea++);
ImprimaLinea(" ", Linea++);
ImprimaLinea(" ", Linea++);
ImprimaLinea(" ", Linea++);
ImprimaLinea(" ", Linea++);
ImprimaLinea(" ", Linea++);
ImprimaLinea(" ", Linea++);
ImprimaLinea(" ", Linea++);
ImprimaLinea(" ", Linea++);
ImprimaLinea(" ", Linea++);
ImprimaLinea(" ", Linea++);
fprintf(archivejo, "%c", 12);
fclose(archivejo);
}


Ahora bien, en que parte le tengo que ingresar el código para conte el papel.

MUCHAS GRACIAS POR SU AYUDA.

Volver arriba
Mensaje    Asunto: Impresora P.O.S Responder citando

Justo antes de cerrar el fichero y despues de realizar el cambio de pagina debes mandar los comandos de corte:

ImprimaLinea(" ", Linea++);
fprintf(archivejo, "%c", 12);

******

fprintf(archivejo, "%c", 27); //Escape

fprintf(archivejo, "%c", 105); //"i"
o bien
fprintf(archivejo, "%c", 106);//"j"

********

fclose(archivejo);

Espero haberte ayudado.

Volver arriba
Mensaje    Asunto: Impresora P.O.S Responder citando

Justo antes de cerrar el fichero y despues de realizar el cambio de pagina debes mandar los comandos de corte:

ImprimaLinea(" ", Linea++);

******

fprintf(archivejo, "%c", 27); //Escape

fprintf(archivejo, "%c", 105); //"i"
o bien
fprintf(archivejo, "%c", 106);//"j"

********

fprintf(archivejo, "%c", 12);
fclose(archivejo);

Espero haberte ayudado.

Volver arriba
Mensaje    Asunto: Impresora P.O.S Responder citando

Jose Antonio,

Muchas Gracias por su sugerencia, pero no me funcionó. No se imprimió ningún caracter ni se cortó el papel. Si conoce de algo más que se pueda intentar se lo agradecería.

Muchas Gracias

Volver arriba
Mensaje    Asunto: Impresora P.O.S Responder citando

Pablo prueba de esta otra forma:

posted 30-10-2000 17:56
--------------------------------------------------------------------------------
Muchas Gracias por ayudarme con esto.
Como se incorporan estos caracteres?

Lo que hago es incluir linea por línea a un archivo, para imprimirlo por el COM1

Este el procedimiento para el archivito
//---------------------------------------------------------------------------
void __fastcall TFConta::ImprimaLinea(AnsiString linea, int donde)
{
AnsiString linea1;

linea1 = linea;
if (linea1.Length() > 40) {
linea1 = linea1.SubString(0, 40);
}
else {
while (linea1.Length() < 40) {
linea1 += " ";
}
}
if (tempofile == "lpt1")
linea1 = linea1 + "\r\n";
fprintf(archivejo, linea1.c_str());
if (tempofile != "lpt1")
linea1 = linea1 + "\r\n";
fprintf(rescuefile, linea1.c_str());
if (contadorlinea > 7) {
for (int i = 0; i < 30000000; i++);
contadorlinea = 0;
}
contadorlinea++;
}


Este es el proceso en que se cierra el documento.

//---------------------------------------------------------------------------
void __fastcall TFConta::FinDocumento()
{
int Linea;
AnsiString hola;

Despues de la ultima linea ImprimaLinea(" ", inea++);

ImprimaLinea('\x1b'+"i"+'\n', Linea++);

fprintf(archivejo, "%c", 12);//creo que esta linea te sobra.

En la funcion imprimalinea no hace falta que rellenes la cadena que no tenga 40 caracteres a espacios.


Volver arriba
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.