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 12-03-2009
Minotaure Minotaure is offline
Miembro
 
Registrado: ene 2006
Ubicación: Sabadell (Catalunya)
Posts: 29
Poder: 0
Minotaure Va por buen camino
Enviar comandos a la impresora

Tengo una impresora de etiquetas Zebra ZM400. Quiero que cada vez que se impriman una serie de etiquetas se haga un corte. Hoy la opción de que la impresora corte cada etiqueta pero yo quiero que por ejemplo imprima 5 etiquetas juntas y luego corte. En el manual dice que hay la opción de corte demorado, que no corta hasta el envió del comando de ZPL ~JK.

El problema es que no sé cómo mandar des del Delphi 6 el comando de ZPL ~JK, y ahora no corta nunca las etiqueteas.
¿Alguien tiene idea de cómo mandar dicho comando des del código de Delphi a la impresora?


Muchas gracias de antemano.
Responder Con Cita
  #2  
Antiguo 16-03-2009
Minotaure Minotaure is offline
Miembro
 
Registrado: ene 2006
Ubicación: Sabadell (Catalunya)
Posts: 29
Poder: 0
Minotaure Va por buen camino
Función para enviar comandos

Finalmente buscando y rebuscando por Internet he encontrado la solución. Ahora ya envío comandos des del Delphi a la impresora.

Por si alguien le puede ser de ayuda aquí copio el código:
Código:
function WriteRawDataToPrinter(PrinterName: String; Str: String): Boolean;
var
  PrinterHandle: THandle;
  DocInfo: TDocInfo1;
  i: Integer;
  B: Byte;
  Escritos: DWORD;
begin
  Result:= FALSE;
  if OpenPrinter(PChar(PrinterName), PrinterHandle, nil) then
  try
    FillChar(DocInfo,Sizeof(DocInfo),#0);
    with DocInfo do
    begin
      pDocName:= PChar('Printer Test');
      pOutputFile:= nil;
      pDataType:= 'RAW';
    end;
    if StartDocPrinter(PrinterHandle, 1, @DocInfo) <> 0 then
    try
      if StartPagePrinter(PrinterHandle) then
      try
        while Length(Str) > 0 do
        begin
          if Copy(Str, 1, 1) = '\' then
          begin
            if Uppercase(Copy(Str, 2, 1)) = 'X' then
              Str[2]:= '$';
            if not TryStrToInt(Copy(Str, 2, 3),i) then
              Exit;
            B:= Byte(i);
            Delete(Str, 1, 3);
          end else B:= Byte(Str[1]);
          Delete(Str,1,1);
          WritePrinter(PrinterHandle, @B, 1, Escritos);
        end;
        Result:= TRUE;
      finally
        EndPagePrinter(PrinterHandle);
      end;
    finally
      EndDocPrinter(PrinterHandle);
    end;
  finally
    ClosePrinter(PrinterHandle);
  end;
end;
El problema que tengo ahora es que en el modelo de impresora que tengo (Zebra ZM400), sólo interpreta ordenes recibidas sobre el corte si está en modo de impresión Corte Demorado. Pues bien, cada vez que le envío algo a imprimir des de mi programa de Delphi me cambia automáticamente a Corte Manual y la instrucción de corte (~JK) la ignora. I la instrucción funciona bien, porqué si la ejecuto cuando he vuelto a poner la opción Corte Demorado sí que corta la etiqueta.

Utilizo las Fast Report 4 para generar la etiqueta que envio a la impresora. ¿Alguna idea de porqué me puede cambiar la configuración de la impresora?
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
Enviar Fax con la impresora virtual User_Baja_2 Varios 0 09-10-2008 10:18:20
Enviar datos a la linea de comandos con java gjpelaez JAVA 1 25-02-2008 19:53:55
enviar codigos ESC a impresora JuanHC Impresión 7 07-03-2007 17:25:30
Envío de comandos a impresora de etiquetas davidgaldo Impresión 0 16-11-2005 08:14:20
Enviar el contenido de un TPanel a la impresora vicvil API de Windows 0 12-10-2004 20:49:27


La franja horaria es GMT +2. Ahora son las 02:35:00.


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