Jump to content
Notícias do ACBr

click.png

click.png

click.png

click.png

click.png

click.png

logo_acbr_paygo.png

TEF ACBr PayGo
Seja um revendedor e ofereça uma solução completa para seu cliente.


Saiba mais

beneficios.png

click.png

click.png

click.png


Marcio Pesso
  • Este tópico foi criado há 1772 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 to comment
Share on other sites

  • Consultores

Terá que mostrar o código somente falando não dá para entender

Consultor SAC ACBr Juliomar Marchetti
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

skype: juliomar
telegram: juliomar
http://www.juliomarmarchetti.com.br
Embarcadero MVP
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil
Link to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

  • Moderadores

@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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.