Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 2751 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Ola a todos, gostaria se alguem puder me auxiliar e ajudar em um codigo fontes, pois estou ja de cabelo em pé com isso, sistema para restaurantes bares e similares.

No sistema crie na base central do cadastro de produtos as impressoras, onde determina por config, onde sera impresso o produto, cozinha ou bar

dentro dos fontes, do lançamento de produtos na comandas, criei um timer onde o mesmo manda para as impressoras, sendo que os graçons lança por tablet os produtos nas mesas, e esta acontecendo o seguinte, começa a imprimir separado beleza porem do nada para de sair nas impressoras, 

ai se fecho e abro meu executavel de lançamento e clico na mesa ele da um erro de i/o sendo a porta, porem imprimi o pedido do cliente preso ali nas impressoras e volta a liberar trabalhando normal depois de um determinado tempo pronto começa tudo de novo, como se estive acumulando os produtos, e nao me mostra nada de fila de impressao parada usando elas como generica nas serias com1 e com2 

nao sei mais o que pode ser, pois eles usam o sistema com 7 tablets, ja fiz de tudo mas nada pelo que vejo o problema esta sendo nos fontes onde criei este timer mas nao consigo enxergar o erro,se alguem puder me auxiliar em dar alguma dica, posto ate a linha deste timer para ver se tem algo errado

Obrigado 

Link para o comentário
Compartilhar em outros sites

Não vi seu código, mas acredito que o problema esteja no Timer, quando vc entrar no timer, tem que dar um pause no mesmo para que ele não continue processando durante a rotina de impressão.

Outro ponto, verifique a rotina de impressão sem o timer, mande impressões sequenciais para isolar o problema do timer.

Link para o comentário
Compartilhar em outros sites

Ola muito bom dia osmar, acaei esquecendo de anexar a rotina do timer, segue:

Procedure TfrmPrincipal.Timer1Timer(Sender: TObject);
var Impressora : textfile;
    cabecalio1,cabecalio2 : String;
begin
  IBqComanda2.close;
  ibqComanda2.sql.clear;
  ibqComanda2.SQL.Add('Select * from r000001' );
  ibqComanda2.Open;
  ibqComanda2.First;

 while not ibqComanda2.eof do
  begin
      CABECALIO1 := 'N';
      cabecalio2 := 'N';
      ibqitensComandaTablet2.close;
      ibqitensComandaTablet2.SQL.Clear;
      ibqitensComandaTablet2.SQL.Add('Select i.*,p.CODIGO,p.CODGRUPO,p.IMP from R000002 as i inner join C000025 as p on i.COD_PRODUTO = p.CODIGO where i.cod_mesa = :cod and i.imprimir = :imp');
      ibqitensComandaTablet2.ParamByName('cod').Value:=IBqComanda2CODIGO.Value;
      ibqitensComandaTablet2.ParamByName('imp').Value:='S';
      ibqitensComandaTablet2.Open;
      ibqitensComandaTablet2.First;
       while not ibqitensComandaTablet2.eof do
          begin
           if (ibqitensComandaTablet2IMP.Value = 1) OR (ibqitensComandaTablet2IMP.Value = 2) then
            begin
              IF ibqitensComandaTablet2IMP.Value = 1 THEN
                begin
                  AssignFile(impressora,'COM1');
                  Rewrite(Impressora);
                  Rewrite(Impressora);
                  if cabecalio1 = 'N' THEN
                    begin
                      WriteLn(Impressora, #29 + #33,' COMANDA: ' + ibqitensComandaTablet2.text);
                      WriteLn(Impressora, #29 + #33 + #1, 'DATA / HORA : ' + DateTimeToStr(Now));
                      WriteLn(Impressora, #29 + #33 + #1, ' GARCOM ' + ibqitensComandaTablet2OPERADOR.text);
                      WriteLn(Impressora, #29 + #33 + #1,' NOME: ' + ibqcomanda2cliente.text);
                      WriteLn(Impressora, #29 + #33 + #1,' REF: ' + ibqcomanda2OBS.text);
                      CABECALIO1 := 'S';
                    end;
                  WriteLn(Impressora, #29 + #33 + #1, ('------------------------------------------'));
                  WriteLn(Impressora, #29 + #33 + #1, ('PRODUTO :  ' + COPY(ibqitensComandaTablet2DESCRICAO.Text,Pos('-',ibqitensComandaTablet2DESCRICAO.Text)+1,length(ibqitensComandaTablet2DESCRICAO.Text))));
                  Writeln(Impressora, #29 + #33, ' QTDE : '+ ibqitensComandaTablet2QTDE.Text);
                  WriteLn(Impressora, #29 + #33 + #1, ('OBS :  ' + ibqitensComandaTablet2COMPLEMENTO.Text));
                  Writeln(IMpressora,'');
                  WriteLn(Impressora, #29 + #33 + #1, ('------------------------------------------'));
                  Writeln(IMpressora,'');
                  Writeln(IMpressora,'');
                  Writeln(IMpressora,'');
                  Writeln(IMpressora,'');
                  Writeln(IMpressora,'');
                  Writeln(IMpressora,'');
                  CloseFile(IMPRESSORA);
                end;
              IF ibqitensComandaTablet2IMP.Value = 2 THEN
                begin
                  AssignFile(impressora,'COM2');
                  Rewrite(Impressora);
                  Rewrite(Impressora);
                  if cabecalio2 = 'N' THEN
                    begin
                      WriteLn(Impressora, #29 + #33,' COMANDA: ' + ibqitensComanda2Tablet.text);
                      WriteLn(Impressora, #29 + #33 + #1, 'DATA / HORA : ' + DateTimeToStr(Now));
                      WriteLn(Impressora, #29 + #33 + #1, ' GARCOM ' + ibqitensComandaTablet2OPERADOR.text);
                      WriteLn(Impressora, #29 + #33 + #1,' NOME: ' + ibqcomanda2cliente.text);
                      WriteLn(Impressora, #29 + #33 + #1,' REF: ' + ibqcomanda2OBS.text);
                      CABECALIO2 := 'S';
                    end;
                  WriteLn(Impressora, #29 + #33 + #1, ('------------------------------------------'));
                  WriteLn(Impressora, #29 + #33 + #1, ('PRODUTO :  ' + COPY(ibqitensComandaTablet2DESCRICAO.Text,Pos('-',ibqitensComandaTablet2DESCRICAO.Text)+1,length(ibqitensComandaTablet2DESCRICAO.Text))));
                  Writeln(Impressora, #29 + #33, ' QTDE : '+ ibqitensComandaTablet2QTDE.Text);
                  WriteLn(Impressora, #29 + #33 + #1, ('OBS :  ' + ibqitensComandaTablet2COMPLEMENTO.Text));
                  Writeln(IMpressora,'');
                  WriteLn(Impressora, #29 + #33 + #1, ('------------------------------------------'));
                  Writeln(IMpressora,'');
                  Writeln(IMpressora,'');
                  Writeln(IMpressora,'');
                  Writeln(IMpressora,'');
                  Writeln(IMpressora,'');
                  Writeln(IMpressora,'');
                  CloseFile(IMPRESSORA);
                end;
            end;

            IF cabecalio1 = 'S' THEN
              begin
               AssignFile(impressora,'COM1');
               Rewrite(Impressora);
               Rewrite(Impressora);
               Rewrite(Impressora);
               Rewrite(Impressora);
               CloseFile(IMPRESSORA);
              end;

               IF cabecalio2 = 'S' THEN
              begin
               AssignFile(impressora,'COM2');
               Rewrite(Impressora);
               Rewrite(Impressora);
               Rewrite(Impressora);
               Rewrite(Impressora);
               CloseFile(IMPRESSORA);
              end;

            ibqitensComanda2Tablet.Next;
          end;
   ibqcomanda2.next;
 End;
end;

 

eu ate qgora nao consigo localizar o problemas, se puder me ajudar, agradeço 

Link para o comentário
Compartilhar em outros sites

este codigo, eu montei ele nao manjo muito, mas eles usam 2 impressoras, 1 na serial com1 que chamo de bar e uma na serail com2 que chamo de cozinha, 

fiz este codigo com ajuda de um parceiro e ate entao funciona normal o que nao sei porque para de sair nas impressoras... se fosse de um pedido e para-se eu ate entenderia, mas vc fica trabalhando e para....

Link para o comentário
Compartilhar em outros sites

  • Membros

@Marcio Pesso eu aconselho você a conhecer e a usar o componente ACBrPosPrinter. Com ele você vai melhorar muito esse seu código e facilitar a conexão com vários modelos de impressoras não fiscais.

Equipe ACBr Sérgio Assunção
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

[email protected]

Link para o comentário
Compartilhar em outros sites

Ola sergio, meu maior problema sou muito leigo na parte de programação, aqui mesmo no acbr vivo contratando freelance para resolver estes problemas para mim, e este codigo foi uma parceiro meu que montou e é o que mais consigo acertar para clientes, por isso, estou ate dispostos cara se tiver alguem para este free ou mesmo me acertar este codigo..... é so e procurar

Link para o comentário
Compartilhar em outros sites

Bom, pra mim, primeiro grande problema do seu código, ao entrar no timer vc não para o mesmo, já tive muitos problemas com isso.

Segundo, vc da um monte de rewrite no arquivo, qual o propósito disso ??? Ta bem confuso esse seu código, se ja usa ACBr sugiro mudar para o PosPrinter mesmo..se tiver interesse numa consultoria me manda uma mensagem privada.

Link para o comentário
Compartilhar em outros sites

Quem sabe se você reduzir o seu código:

 

var Impressora : textfile;
    StrPorta, ImpCabecalho :String;
begin

   Timer1.Enabled:=False;
   Try
     IBqComanda2.close;
     ibqComanda2.sql.clear;
     ibqComanda2.SQL.Add('Select * from r000001' );
     ibqComanda2.Open;
     ibqComanda2.First;

     ImpCabecalho := 'S';
     while not ibqComanda2.eof do
     begin

        ibqitensComandaTablet2.close;
        ibqitensComandaTablet2.SQL.Clear;
        ibqitensComandaTablet2.SQL.Add('Select i.*,p.CODIGO,p.CODGRUPO,p.IMP from R000002 as i inner join C000025 as p on i.COD_PRODUTO = p.CODIGO where i.cod_mesa = :cod and i.imprimir = :imp');
        ibqitensComandaTablet2.ParamByName('cod').Value:=IBqComanda2CODIGO.Value;
        ibqitensComandaTablet2.ParamByName('imp').Value:='S';
        ibqitensComandaTablet2.Open;
        ibqitensComandaTablet2.First;

        while not ibqitensComandaTablet2.eof do
        begin

            if (ibqitensComandaTablet2IMP.Value = 1) then
                StrPorta := 'COM1'
            else
                StrPorta := 'COM2';

            Try
               AssignFile(impressora,StrPorta);
               Rewrite(Impressora);
               if ImpCabecalho  'S' then
               begin
                   WriteLn(Impressora, #29 + #33,' COMANDA: ' + ibqitensComandaTablet2.text);
                   WriteLn(Impressora, #29 + #33 + #1, 'DATA / HORA : ' + DateTimeToStr(Now));
                   WriteLn(Impressora, #29 + #33 + #1, ' GARCOM ' + ibqitensComandaTablet2OPERADOR.text);
                   WriteLn(Impressora, #29 + #33 + #1,' NOME: ' + ibqcomanda2cliente.text);
                   WriteLn(Impressora, #29 + #33 + #1,' REF: ' + ibqcomanda2OBS.text);
                   ImpCabecalho := 'N';
               End;
               WriteLn(Impressora, #29 + #33 + #1, ('------------------------------------------'));
               WriteLn(Impressora, #29 + #33 + #1, ('PRODUTO :  ' + COPY(ibqitensComandaTablet2DESCRICAO.Text,Pos('-',ibqitensComandaTablet2DESCRICAO.Text)+1,length(ibqitensComandaTablet2DESCRICAO.Text))));
               Writeln(Impressora, #29 + #33, ' QTDE : '+ ibqitensComandaTablet2QTDE.Text);
               WriteLn(Impressora, #29 + #33 + #1, ('OBS :  ' + ibqitensComandaTablet2COMPLEMENTO.Text));
               Writeln(IMpressora,'');
               WriteLn(Impressora, #29 + #33 + #1, ('------------------------------------------'));
               Writeln(IMpressora,'');

            Finally
               Writeln(IMpressora,'');
               Writeln(IMpressora,'');
               Writeln(IMpressora,'');
               Writeln(IMpressora,'');
               Writeln(IMpressora,'');
               CloseFile(IMPRESSORA);
            End;
            ImpCabecalho:='S';
            ibqitensComanda2Tablet.Next;

        End;
        ibqcomanda2.next;
     End;
  Finally

      ibqitensComandaTablet2.Close;
      IBqComanda2.close;

      Timer1.Enabled:=True;
  End;
end;

É só uma forma, pode ser que resolva.

_____________

Prates, Agnaldo

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 2751 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.