Impressao em Rede

Delphi

25/04/2011

Pessoal tenho um sistema de restaurante e um cliente me pediul para q colocace no sistema a seguinte opçao quando imprimir na na cozinha os produtos q for feito na cozinha seram impressos na cozinha e as bebidas em uma outra impressora na copa agora ai q esta minha duvida...

Como posso mandar o sistema manda para cozinha e para copa com duas impressoas no mesmo sistema sendo q a mesma ira com comunicação via LPT sem q o sistema trave na hora de fazer a impressao e como identificar quem vai imprimir aonde...

obeigado
Laelson Fagundes

Laelson Fagundes

Curtidas 0

Respostas

Marcos Rocha

Marcos Rocha

25/04/2011

Amigo vejo a clássica solução que os programadores clipper faziam. Instale e compartilhe a impressora da copa. No computador da cozinha você vai instalar a impressora normalmente.No seu sistema você vai imprimir na LPT1 o pedido referente à cozinha e na LPT2 o que deve ir à copa.No Windows da cozinha, faça o comando:
net use lpt2 \\computadorcopa\impressoracompartilhada
Quando seu sistema mandar alguma coisa para a LPT2 na cozinha, o Windows irá mandar para a impressora da rede que é a da copa. Lá o próprio Windows se encarregará de imprimir corretamente na porta LPT1 da copa.
GOSTEI 0
Laelson Fagundes

Laelson Fagundes

25/04/2011

O problema q nao estou conseguindo acimilar isso no sistema pq o pessoal aqui quer pegar as portas cadastradas nos grupos de produtos...

essa é o codigo q eu uso para impressao
coloquei uma codição mas nao funciona do jeito q estou querendo...

if (Porta1 = BancoDados.Porta1) and (Porta1 <> '') then
  begin
    try
    AssignFile(F, Porta1);
    ReWrite(F);
     BancoDados.CDSItens.DisableControls;

      // pega informações da mesa
    with BancoDados.qryAuxiliar do
     begin
       Close;
       SQL.Clear;
       SQL.Add('select numero from restaurante_mesa' +
           ' where restaurante_mesa_id in(select restaurante_mesa_id' +
           ' from restaurante_comanda where restaurante_comanda_id = ' +IntToStr(ComandaID)+')');
       Open;
     end;

  // Cabeçalho da Comanda
     Centro := (48 - Length(Razao)) div 2;
     WriteLn(F, #20 + Copy(Repl(' ',Centro), 1, Centro) +RetornaMaiuscula(RetornaSemAcento(Razao)) +
      Copy(Repl(' ',Centro), 1, Centro) + #18);

     WriteLn(F, '');
     WriteLn(F, #20 + '================================================' + #18);
     Centro := (48 - Length('Mesa: ' + FormatFloat('000', BancoDados.qryAuxiliar.Fields[0].Value))) div 2;
     WriteLn(F, #20 + Copy(Repl(' ',Centro), 1, Centro) +
     RetornaMaiuscula(RetornaSemAcento('Mesa: ' + FormatFloat('000', BancoDados.qryAuxiliar.Fields[0].Value))) +
      Copy(Repl(' ',Centro), 1, Centro) + #18);
    //Consulta o Vendedor logado na comanda
     with BancoDados.qryAuxiliar do
     begin
       Close;
       SQL.Clear;
       SQL.Add('select nome from C000008 where codigo = ' + QuotedStr(sCodigoVendedor));
       Open;
     end;

     WriteLn(F, #20 + 'Data....: ' + DateToStr(Date) + '     Hora: ' + TimeToStr(time) + #18);
     WriteLn(F, #20 + 'Comanda.: ' + FormatFloat('000000', ComandaID) + #18);
     WriteLn(F, #20 + 'Vendedor: ' + copy(BancoDados.qryAuxiliar.Fields[0].Value,1,25) + #18);
     WriteLn(F, #20 + '================================================' + #18);
     WriteLn(F,       'Descricao                                Qtde   ');
     WriteLn(F, #20 + '================================================' + #18);

     ValorTotal := 0;
    // Impressao dos Itens da Comanda
     BancoDados.CDSItens.First;
     while not BancoDados.CDSItens.Eof do
     begin
    //   if (Porta1 = ImprimeGrupo) then
       begin
         if BancoDados.CDSItensIMPRIMIR.AsString = '' then
          WriteLn(F, #20 + PreencheEspaco(BancoDados.CDSItensDESCRICAO.Value, 40, ' ', 'D') +
          ' ' + FormatFloat(',0.00', BancoDados.CDSItensQUANTIDADE.Value) +#18);

          if (BancoDados.CDSItensIMPRIMIR.AsString = '') and (BancoDados.CDSItensADICIONALITEM.Value <> '') then
           WriteLn(F, #20 + BancoDados.CDSItensADICIONALITEM.Value + #18);

           ValorTotal := ValorTotal + BancoDados.CDSItensTOTAL.Value;

          if BancoDados.CDSItensIMPRIMIR.AsString = '' then
           begin
             BancoDados.Conexao.StartTransaction(BancoDados.Transacao);
             BancoDados.qryExecute.SQL.Text := 'update restaurante_comanda_item set imprimir = ' + QuotedStr(ImprimiItem) +
                                               ' where RESTAURANTE_COMANDA_ITEM_ID = ' + IntToStr(BancoDados.CDSItensRESTAURANTE_COMANDA_ITEM_ID.AsInteger) + ';';
             BancoDados.qryExecute.ExecSQL(true);
             BancoDados.Conexao.Commit(BancoDados.Transacao);
           end;
       end;
        BancoDados.CDSItens.Next;
     end;
     WriteLn(F, #20 + '================================================' + #18);

     for i := 1 to Espacos do
      WriteLn(F, '');
    finally
      BancoDados.CDSItens.First;
      BancoDados.CDSItens.EnableControls;
      CloseFile(F);
    end;
 end

GOSTEI 0
POSTAR