Demora na impressão

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
Ricardo Sales Ribeiro
Usuário Nível 3
Usuário Nível 3
Mensagens: 279
Registrado em: 13 Jul 2004 18:06
Localização: Fortaleza-Ceara

Demora na impressão

Mensagem por Ricardo Sales Ribeiro »

Ola Amigos!
Tudo Bem


Estou com um problema, é o seguinte, tenho um sistema q gera uma venda, e logo q a venda é fechada, o sistema envia um relatorio para impressora, no entanto, esta impressora fica imprimindo devagar, e só agiliza qdo saiu da minha aplicação, é como se o meu sistema estivesse segurando a impressão. Por que acontece isso, e como posso resolver.
Eu utilizo a impressora LX-300 Epson.

Agradeço desde de já.
Ricardo Sales
Fortaleza-Ce
lodara53@yahoo.com.br
lodara53@hotmail.com
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Mensagem por Pablo César »

Colega Ricardo,

Eu aconselho que para a questão de impressões sempre seja gera em arquivo e depois colocá-lo na fila de impressão. Não aconselho imprimir diretamente na impressora. Você verá que essa é a forma mais rápida, eficaz e prática de imprimir.

Um clip-abraço :)Pos
Cleiton Fidelis
Usuário Nível 2
Usuário Nível 2
Mensagens: 81
Registrado em: 06 Jul 2004 09:44
Localização: Divinopolis MG

Mensagem por Cleiton Fidelis »

Amigo,

Veja no regedit a variavel LPT_TIMEOUT, ela normalmente tem valor 15, acho que, passando para 1 resolve seu problema.

Se funcionar, retorne.


Cleiton Fidelis
Divinopolis MG
Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

Mensagem por Eolo »

Ricardo Sales,

Já sofri com isso, mais ainda no XP. Seguinte: basta incluir, no final da rotina de impressão, um SET PRIN TO, para forçar o esvaziamento do buffer de impressão. Como vc mesmo disse, quando "sai da sua aplicação a impressão termina", certo? Isto acontece porque o Clipper, ao sair do ar, esvazia esse buffer.

Eolo

Código: Selecionar todos

set prin to lpt1
set devi to prin
* comandos de impressão
SET PRIN TO
set devi do scre
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Mensagem por Pablo César »

Caros colegas,

Desculpem a minha insistência, mas que essa questão de gerar arquivo antes para impressão, a vejo como melhor opção. Se quiserem compartilhar maiores detalhes sobre isto, vejam:

https://pctoledo.org/forum/viewto ... %E3o#17354

Tenho certeza que esse modo de impressão através do SAY... realmente está caducado por vários motivos. Mas enfim, essa é a minha opinião.

Um clip-abraço :)Pos
Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

Mensagem por Eolo »

Ricardo,

Primeiro liquide o problema que vc apontou, que pode ser resolvido com a inclusão do SET PRIN TO no seu programa. É só uma linha a mais. Fácil.

Amanhã, com este problema resolvido, você vai ter tempo e cabeça pra analisar outras alternativas (isto se houver necessidade). Se hoje o @say dá conta das suas necessidades, continue usando ele. Funciona.

Eolo
Avatar do usuário
vagucs
Membro Master
Membro Master
Mensagens: 1480
Registrado em: 10 Jul 2004 10:45
Localização: Ipanema - MG
Contato:

Mensagem por vagucs »

Eu acho que seu programa deve estar prendendo o processador e nao está deixando tempo de CPU para o windows gerenciar a impressão como devia, tem uma lib chamada TIMESLICE que foi o Maligno que fez, você pode pegar no meu site com o nome de TSLICE.ZIP, tem o leiame.txt ensinando a usar, tenho certeza que resolverá o problema.
Sem mais
Wagner Nunes
www.vagucs.com.br
Avatar do usuário
Ricardo Sales Ribeiro
Usuário Nível 3
Usuário Nível 3
Mensagens: 279
Registrado em: 13 Jul 2004 18:06
Localização: Fortaleza-Ceara

Mensagem por Ricardo Sales Ribeiro »

Boa tarde pessoal!
Tudo bem

Eu utilizei a linha de comando Set Print To, e tb linkeditei com a função Timeslice, como surgerido pelos amigos do forum, más continua do mesmo jeito, tenho q sair da minha aplicação para o relatorio sair más rápido.

Alguma sugestão?

Desde já agradeço
Ricardo Sales
Fortaleza-Ce
lodara53@yahoo.com.br
lodara53@hotmail.com
Avatar do usuário
vagucs
Membro Master
Membro Master
Mensagens: 1480
Registrado em: 10 Jul 2004 10:45
Localização: Ipanema - MG
Contato:

Mensagem por vagucs »

todos que tiveram este problema que eu presenciei, com a timeslice resolveu, vc tem que passar um parametro numerico para ela, mude este valor para ver se melhor e verifique no gerenciador de tarefa se o consumo de CPU vai reduzir, verifique como ele fica durante este processo em que a impressora está travando.
Sem mais
Wagner Nunes
www.vagucs.com.br
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

SET DEVICE TO

Mensagem por Pablo César »

Colega Ricardo,

E se tentar a minha sugestão de criar arquivo de impressão ???. Não é muito trabalhoso, se você estava utilizando o @ SAY, só basta fazer assim:

SET PRINTER TO "FICHA.PRN"
SET DEVICE TO PRINTER
@ SAY ... // continua o mesmo
SET DEVICE TO SCREEN
SET PRINTER TO
COPY FILE("FICHA.PRN") TO ("LPT1")

Ao final, você testou assim ???.
ederxc
Usuário Nível 4
Usuário Nível 4
Mensagens: 619
Registrado em: 15 Set 2006 08:40
Localização: Pedreira -SP-

Mensagem por ederxc »

:D ja copiei o exemplo tambem achei interessante pablo !
C:\Xharbour\Xdev\Fw\VSX
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Mensagem por Pablo César »

Pois é, Eder ! Você entendeu o espirito do negócio ?. Eu simplesmente, estou repassando a minha experiência. E tem se demostrado muito eficaz a impressão através de arquivo-de-impressão. Mas agora que nós estaremos sujeitos que o cliente mude a impressora para USB, ou até mesmo para visualizar a impressão. Mas claro, como tudo implica um pouquinho de adaptação... que para o futuro não vai se arrepender.

Só falta me responderem se esta idéia funcionou ou não.

Outra coisa que eu acho que pode ser útil:
Adicione uma nova linha na seção [386ENH] do arquivo system.ini:
PerVMFiles=150 (ou o valor necessitado)

Para resolver o problema de tempo de impressao em rede, adicione no arquivo C:\WINDOWS\SYSTEM32\SYSTEM.INI:

[Netwok]
PrintBufTime=1

[IFSMGR]
PrintBufTime=1
Mas a idéia principal de geração de arquivo é boa, e eu estou disposto a ouvir dos colegas a sua opinião, numa boa !!

Um clip-abraço :)Pos
Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

Mensagem por Eolo »

Eu uso o SET PRIN TO em conjunto com o OL_AutoYield() - que acredito ter a mesma função da TimeSlice - e foi a primeira vez que não vi funcionar com alguém. Estranho. Tenho clientes rodando 98 / ME / XP e em todos funciona beleza, exatamente como diz o Norton Guide... Mas enfim, como alguém já disse aqui no Forum, informática não é uma ciência exata.

Mas, aproveitando, uma pergunta: usando o mesmo computador e o mesmo EXE para imprimir linha a linha ou um arquivo inteiro, em uma EPSON e em uma HP, por que a EPSON inicia a impressão no ato e a HP fica "pensando" um pouco até começar a impressão? (e não é só no Clipper, até com o Word por ex acontece a mesma coisa).

Eolo
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Tche, eu usa normalmente minhas impressões abaixo segue um exemplo:

Código: Selecionar todos

SET DEVICE TO PRINT
set print to lpt1
@ PROW()+1,01 SAY " Placa.........: "
@ PROW(),pcol()+1 SAY xplaca pict"@R !!!-!!!!"
eject
SET PRINTER TO
set device to screen
NETCANCEL("LPT1") // tem q esta com a CT.LIB ou CTP.LIB
Abraços
Leonardo Machado
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Responder