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

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-10-2013
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Poder: 23
José Luis Garcí Va camino a la fama
Despúes de la primera impresión salen 2 caracteres no deseados

Hola compañeros, como siempre solicito vuestra ayuda para lo siguiente, estoy trabajando en el sistema de TPV y antes de implantarlo en el me surge el siguiente problema, resulta que el primer ticket me sale bien



Pero a partir de este momento cada vez que mando a imprimir un ticket me sale con un ",P" al principio, os pongo una imagen



Esto sucede cada vez después de la primera y hasta que apago y vuelvo a iniciar la impresora.

Esta hecho en Delphi 10, con una Epson TM-U210PB y con windows7,
La impresora esta conectada a un puerto USB y tiene un cajón monedero incorporado, además la impresora tinene cuchilla de corte

Aquí os pongo el código usado

Código Delphi [-]
procedure TForm1.Button6Click(Sender: TObject);
var i:Integer;
begin
 if cmbPrinters.Text<>'' then
 begin

  if cmbPrinters.ItemIndex >= 0 then
  begin
     WriteRawDataToPrinter(cmbPrinters.Items[cmbPrinters.ItemIndex],'\027\033\000');
     WriteRawDataToPrinter(cmbPrinters.Items[cmbPrinters.ItemIndex],'\027\033\017'+Relleno(MyTextReplace('XXXXXXXX XXXXXX, X.X.'),' ',42,2)+'\x0A\x0D');
     WriteRawDataToPrinter(cmbPrinters.Items[cmbPrinters.ItemIndex],'\027\033\001'+(Espacios(MyTextReplace('Xxxxxxxxxx, 9'),22,0)+Espacios('',1,0)+Espacios('C.I.F.:X-99.999.999',18,1))+'\x0A\x0D');
     WriteRawDataToPrinter(cmbPrinters.Items[cmbPrinters.ItemIndex],'\027\033\001'+(Espacios('C.P.:99.999',11,0)+Espacios('',1,0)+Espacios('Xxx Xxxxxx',30,0))+'\x0A\x0D');
     WriteRawDataToPrinter(cmbPrinters.Items[cmbPrinters.ItemIndex],'\027\033\001'+(Espacios('Xxx Xxxxxx xx Xxxx Xxxxxxx',42,0))+'\x0A\x0D');
     WriteRawDataToPrinter(cmbPrinters.Items[cmbPrinters.ItemIndex],'\027\033\001'+(Espacios('Tfo: 999 999 999',20,0)+Espacios('',2,0)+Espacios('Fax: 999 999 999',20,1))+'\x0A\x0D');
     WriteRawDataToPrinter(cmbPrinters.Items[cmbPrinters.ItemIndex],'\027\033\001'+(Espacios('Email: xxxxxx@xxxxxxx.xxx',42,0))+'\x0A\x0D');
     WriteRawDataToPrinter(cmbPrinters.Items[cmbPrinters.ItemIndex],'\027\033\001'+(Espacios('Web: Xxxxxxx.xxx',42,0))+'\x0A\x0A\x0D');
     WriteRawDataToPrinter(cmbPrinters.Items[cmbPrinters.ItemIndex],'\027\033\001'+Espacios('Fecha: '+DateToStr(Now),20,0)+Espacios('',2,0)+Espacios('Hora: '+TimeToStr(Now),20,1)+'\x0A\x0A\x0D');
     WriteRawDataToPrinter(cmbPrinters.Items[cmbPrinters.ItemIndex],'\027\033\001Cant. Concepto             P.Ud   Importe\x0A\x0D');
     WriteRawDataToPrinter(cmbPrinters.Items[cmbPrinters.ItemIndex],'\027\033\001------------------------------------------\x0A\x0D');
      For i := 0 To ListView1.Items.Count-1 do
      begin
        WriteRawDataToPrinter(cmbPrinters.Items[cmbPrinters.ItemIndex],DesCRlinea(StrToInt(ListView1.Items.Item[i].SubItems[0]),ListView1.Items.Item[i].SubItems[1],
                                                                                 Strtofloat(ListView1.Items.Item[i].SubItems[2])));
      end;
     WriteRawDataToPrinter(cmbPrinters.Items[cmbPrinters.ItemIndex],'\027\033\001------------------------------------------\x0A\x0D');
     WriteRawDataToPrinter(cmbPrinters.Items[cmbPrinters.ItemIndex],'\027\033\009SUBTOTAL........................:'+Espacios(FormatFloat('#,##0.00',VarDSubtotal),9,1)+  '\x0A\x0D');
     WriteRawDataToPrinter(cmbPrinters.Items[cmbPrinters.ItemIndex],'\027\033\009I.G.I.C.........................:'+Espacios(FormatFloat('#,##0.00',VardImpuestos),9,1)  +'\x0A\x0D');
     WriteRawDataToPrinter(cmbPrinters.Items[cmbPrinters.ItemIndex],'\027\033\009TOTAL...........................:'+Espacios(FormatFloat('#,##0.00',vardtotal),9,1)+'\x  0A\x0D');
     WriteRawDataToPrinter(cmbPrinters.Items[cmbPrinters.ItemIndex],'\x1B@\x0A\x0A\x0A\x0A\x0A\x0A\x0A\x0A\x0A\x0A\x0D\x1Bi\x0A\x0D');    //Avanze y Corta el PApel
     WriteRawDataToPrinter(cmbPrinters.Items[cmbPrinters.ItemIndex],'\027\112\000,\050,\080');
     WriteRawDataToPrinter(cmbPrinters.Items[cmbPrinters.ItemIndex],'\027\033\000');
  end;
 End else ShowMessage('Elija primero una impresora');
end;

y aquí las funciones llamadas

Código Delphi [-]

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;

//------------------------------------------------------------------------------
//***********************************************************[ Relleno ]*******
//------------------------------------------------------------------------------
// [21/04/2012] J.L.G.T.//Modificada y adaptada por mi de una Bajada de internet
// Ideada para la impresora de tickets, pero muy util para otras
//-Ejemplo----------------------------------------------------------------------
//  Delvuelve unacadena reyena de caracteres al fondo, al frente o centrada +-
//              Ejemplo
//              Relleno(texto,' ',30,1)=  '                        texto'
//              Relleno(texto,' ',30,0)=  'texto                        '
//              Relleno(texto,'*',30,2)=  '*************Texto***********'
//------------------------------------------------------------------------------
function Relleno(text,Rell:string;Cant,posi:integer):string;
var
   valor,x:integer;
   dev,con:string;
begin
   con:='';
   valor:=length(text);
   if valor < Cant then
   begin
        case posi of
          0..1: begin
                   for x:=1 to (cant-valor) do
                   begin
                      con:=con+Rell;
                   end;
                end;
          2:    begin
                   for x:=1 to ((cant-valor) div 2) do
                   begin
                      con:=con+Rell;
                   end;
                end;
        end;
        case posi of
          0: dev:=con+text;
          1: dev:=text+con;
          2: begin
                if Cant=(Valor+length(Con)+length(Con)) then dev:=con+text+con
                                        else
                begin
                     if Cant>(Valor+length(Con)+length(Con)) then  dev:=con+text+Con+Rell
                                                             else  dev:=con+text+copy(con,0,(length(con)-(Cant-(Valor+length(Con)+length(Con)))));
                end;
              end;
        end;
   end
   else
   dev:=text;
   result:=dev;
end;

//------------------------------------------------------------------------------
//***********************************************************[ ESPACIOS ]*******
//  Delvuelve unacadena reyena de espacios al fondo o al frente
//  Bajada de internet
//              Ejemplo
//              espacios(texto,30,1)=  '                        texto'
//              espacios(texto,30,0)=    'texto                        '
//------------------------------------------------------------------------------
function espacios(text:string;Cant:integer;posi:integer):string;
var
   valor,x:integer;
   dev,con:string;
begin
   con:='';
   valor:=length(text);
   if valor < Cant then
   begin
        for x:=1 to (cant-valor) do
        begin
            con:=con+' ';
        end;
        if posi=1 then dev:=con+text
        else dev:=text+con;
   end
   else
   dev:=text;
   result:=dev;
   //+'('+IntToStr(valor)+')('+IntToStr(Cant)+')('+IntToStr(Cant-valor)+')';
end;

function MyTextReplace(Texto:String):String;
begin
    if Texto<>'' then begin
    Texto:= AnsiReplaceStr(Texto,'Ñ', #165);
    Texto:= AnsiReplaceStr(Texto,'ñ', #164);
    Texto:= AnsiReplaceStr(Texto,'á', #160);
    Texto:= AnsiReplaceStr(Texto,'é', #101);//#130);
    Texto:= AnsiReplaceStr(Texto,'í', #161);
    Texto:= AnsiReplaceStr(Texto,'ó', #162);
    Texto:= AnsiReplaceStr(Texto,'ú', #163);
    Texto:= AnsiReplaceStr(Texto,'Á', #65);
    Texto:= AnsiReplaceStr(Texto,'É', #144);
    Texto:= AnsiReplaceStr(Texto,'Í', #73);
    Texto:= AnsiReplaceStr(Texto,'Ó', #79);
    Texto:= AnsiReplaceStr(Texto,'Ú', #85);
    Texto:= AnsiReplaceStr(Texto,'Ü', #85);
    Texto:= AnsiReplaceStr(Texto,'Ü', #129);
    Result:=Texto;
  end;
end;

A ver si podéis ayudarme y decirme por que de este error
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"

Última edición por Casimiro Notevi fecha: 19-10-2013 a las 18:27:33.
Responder Con Cita
 



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
Caracteres no deseados en tablas firebird GustavoCruz Firebird e Interbase 3 10-04-2013 23:43:26
¿como tomar los caracteres deseados de un Tedit. Jheysson13 Varios 3 10-10-2006 18:27:53
Reemplazar caracteres no deseados? patorecalde SQL 3 19-07-2006 19:27:51
Error en Consulta - solo salen datos la primera vez javicho_villa Varios 5 24-01-2006 02:09:21


La franja horaria es GMT +2. Ahora son las 20:21:59.


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