GARANTIR DESCONTO

Fórum Impressão direto na porta muito lenta! #277157

14/04/2005

0

:(
Estou usando a rotina para impressão direto na porta (porta LPT1, assignfile, writeln e etc...), para uma impressora matricial da Bematech, e no Win98 a rotina fica lenta demais! Já no Win2K e no WinXP ela imprime normalmente...
Alguém sabe o que pode estar acontecendo?


Kenji_rh

Kenji_rh

Responder

Posts

14/04/2005

Edilcimar

a impressão está no mesmo computador ou em rede?


Responder

Gostei + 0

14/04/2005

Cabelo

Colega, já passei por problemas assim utilizando impressora de etiquetas.

Eu resolví da seguinte maneira..

Como vc utiliza direto na porta, ele possui um buffer de armazenamento, então eu pego toda a string do relatório e divido ela em partes de 255 caracteres cada, e para cada uma dessas partes, faço um for enviando byte a byte os dados para a porta, e por fim dou um comendo para impressão, com um relatório muito pesado e cheio de dados, esta impressão demora menos de 1s. :D

Acredito que deve acontecer com vc tb.


Responder

Gostei + 0

14/04/2005

Kenji_rh

a impressão está no mesmo computador ou em rede?


A impressora está no mesmo computador onde imprimo!


Responder

Gostei + 0

14/04/2005

Edilcimar

Se estivesse em rede vc poderia estar com problemas de velocidade na impressão, mas com a impressora no mesmo computador a impressão sempre começa dentro dos 3 segundos iniciais, eu tenho sistema rodando com a Bematech não fiscal em win98 sem problema algum


Responder

Gostei + 0

14/04/2005

Kenji_rh

Colega, já passei por problemas assim utilizando impressora de etiquetas. Eu resolví da seguinte maneira.. Como vc utiliza direto na porta, ele possui um buffer de armazenamento, então eu pego toda a string do relatório e divido ela em partes de 255 caracteres cada, e para cada uma dessas partes, faço um for enviando byte a byte os dados para a porta, e por fim dou um comendo para impressão, com um relatório muito pesado e cheio de dados, esta impressão demora menos de 1s. :D Acredito que deve acontecer com vc tb.


:oops:
Desculpe a minha ignorância, mas como mandarei a string byte a byte? Algo como usar o write(f,String[i])?


Responder

Gostei + 0

14/04/2005

Cabelo

Desculpe a minha ignorância, mas como mandarei a string byte a byte? Algo como usar o write(f,String[i])?


Colega...

Pode ser assim..

mas não precisa chamar nenhuma função, pois a string é tb um ponteiro do tipo char, pode usar assim

for v_i := 0 to length(string) - 1 do
begin
porta := string[v_i];
end;

espero ter ajudado.


Responder

Gostei + 0

14/04/2005

Massuda

Estou usando a rotina para impressão direto na porta...
Já experimentou dar uma olhada no [url=http://devres.freeprohost.com/]VDOPrint[/url] do nosso colega Vinicius2K?

porta := string[v_i];
O kenji_rh não pode fazer isso pois ele está escrevendo o relatório em um arquivo e depois mandando para a impressora; ele não está mandando os dados diretamente para a porta da impressora.


Responder

Gostei + 0

14/04/2005

Cabelo

:( Estou usando a rotina para impressão direto na porta (porta LPT1, assignfile, writeln e etc...), para uma impressora matricial da Bematech, e no Win98 a rotina fica lenta demais! Já no Win2K e no WinXP ela imprime normalmente... Alguém sabe o que pode estar acontecendo?


Massuda..

Não foi o que nosso amigo nos informou....

´Estou usando a rotina para impressão direto na porta ´


Responder

Gostei + 0

14/04/2005

Massuda

Não foi o que nosso amigo nos informou....
Pelo texto eu entendi que ele está usando AssignFile para abrir a porta da impressora e usando WriteLn para enviar as strings, ou seja, está usando as rotinas bufferizadas de acesso a arquivos texto. Nesse caso, ele não tem como controlar o envio dos dados à impressora (talvez pudesse usar Flush?).

Desculpe-me se eu estiver enganado.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar