Impressao em Rede
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
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
Curtidas 0
Respostas
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.
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
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...
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