 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Pablo U. (C.R.) Invitado
|
Publicado: Jue 26 Oct, 2000 4:59 pm Asunto: Impresora P.O.S |
|
|
| 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 |
|
 |
Jose Antonio Invitado
|
Publicado: Sab 28 Oct, 2000 4:18 pm Asunto: Impresora P.O.S |
|
|
| 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 |
|
 |
tronx Invitado
|
Publicado: Sab 28 Oct, 2000 6:31 pm Asunto: Impresora P.O.S |
|
|
| 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 |
|
 |
Pablo U. (C.R.) Invitado
|
Publicado: Lun 30 Oct, 2000 5:56 pm Asunto: Impresora P.O.S |
|
|
| 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 |
|
 |
Pablo U. (C.R.) Invitado
|
Publicado: Lun 30 Oct, 2000 8:45 pm Asunto: Impresora P.O.S |
|
|
| 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 |
|
 |
Jose Antonio Invitado
|
Publicado: Mar 31 Oct, 2000 4:28 pm Asunto: Impresora P.O.S |
|
|
| 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 |
|
 |
Jose Antonio Invitado
|
Publicado: Mar 31 Oct, 2000 4:29 pm Asunto: Impresora P.O.S |
|
|
| 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 |
|
 |
Pablo U. (C.R.) Invitado
|
Publicado: Jue 02 Nov, 2000 2:22 am Asunto: Impresora P.O.S |
|
|
| 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 |
|
 |
Jose Antonio Invitado
|
Publicado: Jue 02 Nov, 2000 11:22 pm Asunto: Impresora P.O.S |
|
|
| 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 |
|
 |
|
|
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
|
© 2002–2026 Club Builder · Funciona con phpBB.
|