Página 1 de 1

Demora na impressão

Enviado: 09 Mai 2007 15:16
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á.

Enviado: 09 Mai 2007 16:12
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

Enviado: 09 Mai 2007 17:09
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

Enviado: 09 Mai 2007 17:22
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

Enviado: 09 Mai 2007 18:29
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

Enviado: 09 Mai 2007 19:54
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

Enviado: 10 Mai 2007 13:46
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.

Enviado: 11 Mai 2007 12:42
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

Enviado: 11 Mai 2007 13:07
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.

SET DEVICE TO

Enviado: 11 Mai 2007 13:10
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 ???.

Enviado: 11 Mai 2007 15:47
por ederxc
:D ja copiei o exemplo tambem achei interessante pablo !

Enviado: 11 Mai 2007 16:50
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

Enviado: 11 Mai 2007 17:57
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

Enviado: 11 Mai 2007 19:44
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