Impressão direto na porta muito lenta!
:(
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?
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
Curtidas 0
Respostas
Edilcimar
14/04/2005
a impressão está no mesmo computador ou em rede?
GOSTEI 0
Cabelo
14/04/2005
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.
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.
GOSTEI 0
Kenji_rh
14/04/2005
a impressão está no mesmo computador ou em rede?
A impressora está no mesmo computador onde imprimo!
GOSTEI 0
Edilcimar
14/04/2005
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
GOSTEI 0
Kenji_rh
14/04/2005
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])?
GOSTEI 0
Cabelo
14/04/2005
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.
GOSTEI 0
Massuda
14/04/2005
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.GOSTEI 0
Cabelo
14/04/2005
:(
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 ´
GOSTEI 0
Massuda
14/04/2005
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.
GOSTEI 0