Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Impresión
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-10-2024
pruz pruz is offline
Miembro
 
Registrado: sep 2003
Posts: 201
Poder: 22
pruz Va por buen camino
Unhappy Impresora de Etiquetas

Hola amigos:

alguien a usado la impresora XPrinter Modelo XP-235B.
Necesito enviar codigo de programacion, para imprimir codigo de barra y texto. Nada ha resultado de lo que he realizado.


si alguien, me puede enviar codigo de ejemplo.
Uso dephi 7,

Gracias.
Responder Con Cita
  #2  
Antiguo 01-10-2024
lucho6007 lucho6007 is offline
Miembro
 
Registrado: ene 2009
Ubicación: Junín, pcia de BsAs, Argentina
Posts: 83
Poder: 17
lucho6007 Va por buen camino
¿Código EPL?

Hola!
¿Esa impresora tiene soporte para código EPL? Si es así podés enviar los comandos con el pass-through y ver qué sale.


Saludos
Responder Con Cita
  #3  
Antiguo 02-10-2024
pruz pruz is offline
Miembro
 
Registrado: sep 2003
Posts: 201
Poder: 22
pruz Va por buen camino
lucho6007:

No tiene emulador EPL. Pero si tiene emulador (TSPL) y (ESC / POS). Yo probe este ultimo (ESC/POS) y no me funciono.
Pero puede ser que este yo haciendo algo malo.

Me puedes enviar alguno codigo como referencia.


Gracias
Responder Con Cita
  #4  
Antiguo 02-10-2024
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.905
Poder: 22
newtron Va camino a la fama
Asegúrate de tener activo en la impresora la emulación ESC/POS porque igual tienes la TSPL y por eso no te hace caso.


Saludos.
__________________
Be water my friend.
Responder Con Cita
  #5  
Antiguo 03-10-2024
pruz pruz is offline
Miembro
 
Registrado: sep 2003
Posts: 201
Poder: 22
pruz Va por buen camino
Amigos:

Encontre estos emuladores y ejemplo, pero en formato DLL, pero no tengo Visual Basic, si alguien tiene la plataforma para que indique como migrarlo a Delphi 7.


Adjunto archivo comprimido, sin clave..

Saludos
Archivos Adjuntos
Tipo de Archivo: rar Emulados_ESC-POS.rar (281,8 KB, 3 visitas)
Responder Con Cita
  #6  
Antiguo 03-10-2024
pruz pruz is offline
Miembro
 
Registrado: sep 2003
Posts: 201
Poder: 22
pruz Va por buen camino
adjunto ademas el emulador TSPL, tambien en Visula Basic


Saludos
Archivos Adjuntos
Tipo de Archivo: rar Emulador_TSPL.rar (152,6 KB, 5 visitas)
Responder Con Cita
  #7  
Antiguo 03-10-2024
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.405
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Según he leído lo que tienes que cambiar es la emulación en la impresora, vas a configuración y seleccionas esc/pos
Responder Con Cita
  #8  
Antiguo 03-10-2024
CrazySoft CrazySoft is offline
Miembro
 
Registrado: abr 2005
Posts: 100
Poder: 21
CrazySoft Va por buen camino
Buen día, si tienes los códigos ESC/POS, podrías cambiar los valores o personalizar un nuevo tipo en este componente https://github.com/git-bee/TRAWPrinter


no encuentro con códigos ESC/POS de XPRINTER, si los encuentras podrías compartir
Responder Con Cita
  #9  
Antiguo 03-10-2024
pruz pruz is offline
Miembro
 
Registrado: sep 2003
Posts: 201
Poder: 22
pruz Va por buen camino
Casimiro:

Si busque donde cambiar en la configuracion de impresoras, y no tiene por donde cambiarlo. Solo me permite cambiarlo a un emulardor Zebra, de los cuales si tengo codigo de impresion, pero aun asi no funciono.

asi, que esa opcion la descarte, a no ser que YO este haciendo algo mal, que lo mas probable.

Saludos
Responder Con Cita
  #10  
Antiguo 03-10-2024
pruz pruz is offline
Miembro
 
Registrado: sep 2003
Posts: 201
Poder: 22
pruz Va por buen camino
CrazySoft:

si creo que los tengo, los comparto. Solo necesito un Texto y Codigo Barra


Saludos,
Imágenes Adjuntas
Tipo de Archivo: pdf ESC Windows SDK.pdf (317,1 KB, 9 visitas)
Responder Con Cita
  #11  
Antiguo 05-10-2024
delphi50jmb delphi50jmb is offline
Miembro
 
Registrado: jul 2007
Posts: 39
Poder: 0
delphi50jmb Va por buen camino
Wink

Hola Pruz.
Hace ya mucho tiempo tuve que programar una impresora de etiqutas XPrinter, para una cafeteria tipo Starbucks, que imprimia el numero de atencion y el nombre del cliente en una etiqueta para luego pegarla en el vaso.

Aqui va el codigo que utilizaba.

Código Delphi [-]
procedure ImprimeEtiqueta(sPuerto, sNumClie, sDescrip, sComentario: String);
begin
   writeln( sPuerto, 'CLS'); // Limpia el buffers de la impresora
   //writeln( sPuerto, 'BACKUP 220');    // Reversa la etiqueta 40 puntos. Trabaja junto con Backfeed
   //writeln( sPuerto, 'BACKFEED 220');   // Reversa la etiqueta 40 puntos
   writeln( sPuerto, 'DIRECTION 1');
   writeln( sPuerto, 'REFERENCE 1,1');  //posicion inicial
   //writeln( sPuerto, 'SHIFT 140');         // mueve la posision de la etiqueta
   //writeln( sPuerto, 'OFFSET 12.7 mm');
   //writeln( sPuerto, 'GAP 17.62 mm, 17.54 mm');
   writeln( sPuerto, 'TEXT 20,50,"3",0,1,1,' + '"' + 'Numero: ' + sNumClie + '"');
   writeln( sPuerto, 'TEXT 20,80,"2",0,1,1,' + '"' + sDescrip + '"');
   writeln( sPuerto, 'TEXT 20,110,"2",0,1,1,' + '"' + sComentario + '"');
   writeln( sPuerto, 'TEXT 20,200,"1",0,1,1,' + '"' + DateToStr(Date) + space(2) + TimeToStr(Time) + '"');
   writeln( sPuerto, 'PRINT 1');
   //writeln( sPuerto, 'FEED 300');   // Avanza la etiqueta 260 puntos
   //writeln( sPuerto, 'CUT');     // Corta la etiqueta
end;


Y, este otro codigo, lo utilice en algun momento para imprimir codigos de barra en en una impresora de etiqutas Zebra.

Código Delphi [-]
         ImpCodBarra( Tabla.FieldByName('Codigo').AsString,
                      Tabla.FieldByName('Talla').AsString,
                      Tabla.FieldByName('Color').AsString,
                      Tabla.FieldByName('Precio').AsString );

*******************************************************

procedure ImpCodBarra( sP1, sP2, sP3, Sp4: String );
var
   a         : Integer;
   iCantidad : Integer;
   iCantAux  : Extended;

begin
   AssignFile(MyFile, iPtoImpBar );
   reset( MyFile );
   rewrite(MyFile);

   writeln( MyFile, 'N');
   writeln( MyFile, 'S6');

   iCantidad := StrToInt(sParamB);

   for a := 1 to iCantidad do
   begin
      //
      Etiqutas3x1(sP1, sP2, sP3, Sp4 );
      //
      writeln( MyFile,  'P1' );  // ---
      writeln( MyFile,  'N');    //    +-- Controles internos para la impresora
      writeln( MyFile,  'O');    // ---

   end;
end;


procedure Etiqutas3x1(sCodigo, sTalla, sColor, sPrecio: String );
begin
     //                1)--- Pos. Columna
     //                |    2)--- Pos. Filas
     //                |    |  3)--- Rotacion.0=No rot.
     //                |    |  | 4)--- Font. 1..5
     //                |    |  | | 5)--- Ancho Horizontal
     //                |    |  | | | 6)--- Altura Vertical
     //                |    |  | | | | 7)--- N=Normal, R=Reversa
     //                |    |  | | | | |
     //                |    |  | | | | |    8)--- Data
     //                |    |  | | | | |    |
     //                |    |  | | | | |    |
     // Etiqueta 1     |    |  | | | | |    |
   writeln( MyFile,  'A000,020,0,2,1,1,N,"' + copy(sCodigo,1,20) + '"' ); // Codigo Barra
   writeln( MyFile,  'A000,040,0,2,1,1,N,"Color ' + sColor + '"' );
   writeln( MyFile,  'A000,060,0,2,1,1,N,"Talla ' + sTalla + '"' );

   writeln( MyFile,  'A000,080,0,2,1,1,N,"$ ' + Picture(sPrecio) + '.-"' );  // Precio

   // Etiqueta 2
   writeln( MyFile,  'A200,020,0,2,1,1,N,"' + copy(sCodigo,1,20) + '"' );
   writeln( MyFile,  'A200,040,0,2,1,1,N,"Color ' + sColor + '"' );
   writeln( MyFile,  'A200,060,0,2,1,1,N,"Talla ' + sTalla + '"' );

   writeln( MyFile,  'A200,080,0,2,1,1,N,"$ ' + Picture(sPrecio) + '.-"' );

   // Etiqueta 3
   writeln( MyFile,  'A470,020,0,2,1,1,N,"' + copy(sCodigo,1,20) + '"' );
   writeln( MyFile,  'A470,040,0,2,1,1,N,"Color ' + sColor + '"' );
   writeln( MyFile,  'A470,060,0,2,1,1,N,"Talla ' + sTalla + '"' );

   writeln( MyFile,  'A470,080,0,2,1,1,N,"$ ' + Picture(sPrecio) + '.-"' );
end;

Espero, te sirvan de ejemplo.

Saludos.

Jose Miguel B.
Responder Con Cita
  #12  
Antiguo 06-10-2024
navbuoy navbuoy is offline
Miembro
 
Registrado: mar 2024
Posts: 280
Poder: 2
navbuoy Va por buen camino
le pregunte a Chat GPT y me dice:

Para imprimir códigos de barra y texto en una impresora XPrinter modelo XP-235B usando Delphi 7, generalmente se debe enviar comandos ESC/POS o similares directamente a la impresora. A continuación te doy un ejemplo básico de cómo hacerlo utilizando una conexión con el puerto de la impresora (por ejemplo, a través de un puerto COM o LPT):

CODIGO DE EJEMPLO:

Código:
uses
  Printers, Windows;

procedure TForm1.ImprimirCodigoDeBarras;
var
  hPrinter: THandle;
  DocInfo: DOC_INFO_1;
  BytesWritten: DWORD;
  RawData: AnsiString;
begin
  // Abrir la impresora por su nombre
  if OpenPrinter('XPrinter XP-235B', hPrinter, nil) then
  begin
    // Información del documento
    DocInfo.pDocName := 'Impresión de Código de Barras';
    DocInfo.pOutputFile := nil;
    DocInfo.pDatatype := 'RAW';  // RAW para enviar datos sin formato

    // Iniciar el trabajo de impresión
    if StartDocPrinter(hPrinter, 1, @DocInfo) > 0 then
    begin
      if StartPagePrinter(hPrinter) then
      begin
        // Aquí colocamos el código ESC/POS para imprimir código de barras y texto
        // Ejemplo de código para un código de barras tipo CODE128
        RawData := #29 + 'k' + #4 + '123456789012';  // Código de barras CODE128
        RawData := RawData + #10 + 'Texto debajo del código de barras' + #13#10; // Texto
        
        // Enviar datos a la impresora
        WritePrinter(hPrinter, PAnsiChar(RawData), Length(RawData), BytesWritten);
        EndPagePrinter(hPrinter);
      end;
      EndDocPrinter(hPrinter);
    end;
    ClosePrinter(hPrinter);
  end
  else
    ShowMessage('Error al abrir la impresora');
end;
Explicación:
Abrir la impresora: Se usa OpenPrinter con el nombre de la impresora configurada en Windows.
Iniciar un trabajo de impresión: Se llama a StartDocPrinter para iniciar la impresión.
Enviar comandos ESC/POS: Los comandos específicos de la impresora se envían como datos RAW. En este caso, se está enviando un comando para imprimir un código de barras CODE128.
Cerrar la impresora: Se finaliza el trabajo de impresión con EndDocPrinter.

Notas:
Asegúrate de que el nombre de la impresora coincide con el que está configurado en tu sistema.
Los comandos pueden variar según el modelo de impresora. Consulta el manual de la impresora para obtener detalles sobre los comandos específicos de impresión de códigos de barra.
Este código debería funcionar si la impresora utiliza comandos ESC/POS o similares.
Responder Con Cita
  #13  
Antiguo 07-10-2024
pruz pruz is offline
Miembro
 
Registrado: sep 2003
Posts: 201
Poder: 22
pruz Va por buen camino
Muvhas gracias amigos

Probare los codigo y les cuento como me va.


Saludos
Responder Con Cita
  #14  
Antiguo 07-10-2024
pruz pruz is offline
Miembro
 
Registrado: sep 2003
Posts: 201
Poder: 22
pruz Va por buen camino
Unhappy

Hola Amigos:

Probe ambos codigo.
Cuando ejecuto los dos codigos, por separado, ambos aparecen en la cola de impresion, pero ninguno sale a la impresora.


Volvi a probar la impresora con los test de prueba que trae y funciona perfecto. Pero con los codigo que ustedes me enviaron nada.

no funciona, seguire probando y cambiare algunos parametros.


Si alguien tiene otra idea?

Saludos
Gracias
Responder Con Cita
  #15  
Antiguo 07-10-2024
tsk tsk is offline
Miembro
 
Registrado: dic 2017
Posts: 56
Poder: 8
tsk Va por buen camino
¿Cómo instalaste los drivers de la impresora?

Hace tiempo para una impresora ESC/POS en Windows la tuve que instalar como Generic/TextOnly, y de esa forma desde python le mandaba los comandos, usando python-escpos

Ve esta página

https://hackernoon.com/how-to-print-...and-javascript

Por lo tanto es fácil probar usando Node.

También otra cosa, es que en el ejemplo, al final mandan el comando END, si te aparece en la cola de impresión, podrías probar primero añadiendo ese END, en Delphi

Si no te funciona de esta forma podrías tratar de instalar la impresora como Generic/TextOnly, como en su momento yo le hice.
Responder Con Cita
  #16  
Antiguo 07-10-2024
pruz pruz is offline
Miembro
 
Registrado: sep 2003
Posts: 201
Poder: 22
pruz Va por buen camino
Hola Delphi50jmb



La Variable sPuerto, de que tipo es y que valores debo traspasas

Código Delphi [-]
procedure ImprimeEtiqueta(sPuerto, sNumClie, sDescrip, sComentario: String);
begin
   writeln( sPuerto, 'CLS'); // Limpia el buffers de la impresora
   //writeln( sPuerto, 'BACKUP 220');    // Reversa la etiqueta 40 puntos. Trabaja junto con Backfeed
   //writeln( sPuerto, 'BACKFEED 220');   // Reversa la etiqueta 40 puntos
   writeln( sPuerto, 'DIRECTION 1');
   writeln( sPuerto, 'REFERENCE 1,1');  //posicion inicial
   //writeln( sPuerto, 'SHIFT 140');         // mueve la posision de la etiqueta
   //writeln( sPuerto, 'OFFSET 12.7 mm');
   //writeln( sPuerto, 'GAP 17.62 mm, 17.54 mm');
   writeln( sPuerto, 'TEXT 20,50,"3",0,1,1,' + '"' + 'Numero: ' + sNumClie + '"');
   writeln( sPuerto, 'TEXT 20,80,"2",0,1,1,' + '"' + sDescrip + '"');
   writeln( sPuerto, 'TEXT 20,110,"2",0,1,1,' + '"' + sComentario + '"');
   writeln( sPuerto, 'TEXT 20,200,"1",0,1,1,' + '"' + DateToStr(Date) + space(2) + TimeToStr(Time) + '"');
   writeln( sPuerto, 'PRINT 1');
   //writeln( sPuerto, 'FEED 300');   // Avanza la etiqueta 260 puntos
   //writeln( sPuerto, 'CUT');     // Corta la etiqueta
end;
Responder Con Cita
  #17  
Antiguo 07-10-2024
pruz pruz is offline
Miembro
 
Registrado: sep 2003
Posts: 201
Poder: 22
pruz Va por buen camino
Talking Solucionado

Ya, mirando un poco de lo suyo y un poco de lo mio llegue a la solucion
les dejo el codigo

Código Delphi [-]
procedure TForm1.Button5Click(Sender: TObject);
var
   MyFile : TextFile;
   NomImpresora :  String;
begin
   NomImpresora := 'etique2.txt';
   AssignFile(MyFile, NomImpresora );
//   reset( MyFile );
   rewrite(MyFile);

   writeln( MyFile, 'SIZE 48.7 mm, 80.1 mm');
   writeln( MyFile, 'DIRECTION 0,0');
   writeln( MyFile, 'REFERENCE 0,0');
   writeln( MyFile, 'OFFSET 0 mm');
   writeln( MyFile, 'SET PEEL OFF');
   writeln( MyFile, 'SET TEAR ON');
   writeln( MyFile, 'CLS');
   writeln( MyFile, 'BARCODE 351,66,"128M",98,0,90,4,8,"!104XP-!09935986215"');
   writeln( MyFile, 'CODEPAGE 1252');
   writeln( MyFile, 'TEXT 248,235,"2",90,1,1,"XP-35986215"');
   writeln( MyFile, 'TEXT 196,220,"1",90,1,1,"Texto de muestra"');
   writeln( MyFile, 'BARCODE 154,69,"128M",114,0,90,3,6,"!104SOL-!0993598!100X125"');
   writeln( MyFile, 'TEXT 35,236,"2",90,1,1,"SOL-3598X125"');
   writeln( MyFile, 'PRINT 1,2');
   writeln( MyFile, '');
   CloseFile( MyFile );


   ShellExecute(0, 'open', ('etiquetas.bat'), nil, nil, SW_SHOW);
   MessageDlg( 'Etiquetas Impresas. Proceso Terminado.' , mtinformation , [mbOk] , 0 );

end;

Muchas gracias a todos por su colaboracion
Responder Con Cita
  #18  
Antiguo 08-10-2024
navbuoy navbuoy is offline
Miembro
 
Registrado: mar 2024
Posts: 280
Poder: 2
navbuoy Va por buen camino
guay, al menos lo has solucionado en poco tiempo
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
seleccion de impresora y letra de la impresora emeceuy Impresión 6 13-08-2017 14:11:05
Etiquetas en A4 Besto Impresión 3 29-01-2010 14:39:46
Reportman con impresora de etiquetas David Jiménez Impresión 5 18-11-2009 18:09:50
Impresora de etiquetas. Necesito recomendación para comprar una Wonni Impresión 2 01-03-2007 22:44:08
Envío de comandos a impresora de etiquetas davidgaldo Impresión 0 16-11-2005 08:14:20


La franja horaria es GMT +2. Ahora son las 16:17:03.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi