-->

domingo, 7 de março de 2010

Como imprimir em impressoras USB a partir de programas DOS.

Nota: Este post começou a ser rascunhado em 24/06/08. Vou publicar sem dar os "polimentos" que eu queria na época (e não encontrei tempo para fazer nestes meses todos) porque pode ser útil para alguém assim mesmo.

Eu recebi essa "missão" de um novo cliente. Ele deixou claro que não aguentava mais os transtornos provocados por suas impressoras matriciais, a saber:
  • Viviam com problemas mecânicos;
  • Custo alto de manutenção;
  • Já voltavam do conserto com problemas;
Nem mesmo pagar cento e poucos reais de aluguel mensal por uma impressora LX-810 estava servindo de refresco, porque a impressora alugada vivia apresentando problemas também.

Isso sem contar com o barulho irritante e a lentidão, que hoje são difíceis de aguentar depois que você se acostuma com laser e jato de tinta.

Em geral uma empresa só fica presa a impressoras matriciais quando emite notas fiscais em múltiplas vias, mas esta empresa está presa a um burocrático sistema DOS também (até hoje) para imprimir etiquetas e relatórios.

Depois de muita pesquisa (em 2008) eu encontrei duas soluções por software. Infelizmente não gratuitas:

  • DOS2USB - É o mais fácil de instalar e configurar, mas não oferece o ajuste fino no posicionamento de impressão que Printfil tem.
  • Printfil - Mais complicado para instalar, se você estiver usando Windows 9X. Porém tem recursos de ajuste na impressão, preview e reimpressão que valem a pena.

Os dois programas funcionam muito bem e tem resolvido o problema do cliente nos últimos 20 meses. DOS2USB está instalado em várias máquinas rodando Windows XP com impressoras USB variadas. E Printfil está instalado em um K6/2-500 rodando Windows 98 conectado pela USB a uma HP P1018. É usada basicamente para imprimir etiquetas e relatórios.

P.S. Na época eu comecei a estudar o funcionamento de Printfil para ver se não dava para fazer pelo menos uma parte do trabalho (ou uma gambiarra) com programas gratuitos, mas fiquei sem tempo para estudar isso.

17 comentários:

  1. Outro modo de resolver e instalar as impressoras em um computador da rede, e nos outros montar na lpt1 a impressora de rede como o Ex:
    Net use lpt1: \192.168.10.123\hpdeskjet656
    Para usar varias impressoras, faça varios arquivos .bat como o nome de impressora, colocando NET USE LPT1 /DELETE e depois e colocando o comando para montar a impressora correspondente.

    ResponderExcluir
  2. GontijoBH,

    Eu me lembro vagamente de ser isso que eu estava estudando na época, quando analisei o funcionamento de Printfil. De alguma forma o programa consegue fazer algo assim mesmo com a impressora local, porém ele usa uma impressora virtual no meio do caminho.

    E eu também lembro vagamente de que o esquema com NET USE, sozinho, não funcionava direito no meu caso, mas não consigo lembrar a razão. Eu tenho certeza de que tentei, porque já usava o método em outros casos. Eu devo ter feito anotações mas depois de quase dois anos é difícil encontrar. Eu acho que tem alguma coisa a ver com o fato da impressora USB ser "burra" (windows/GDI) e que se for inteligente o esquema com NET USE funciona.

    ResponderExcluir
  3. Na empresa onde trabalho usamos o NODOSIMP, mas ele provavelmente não serviria para o seu caso, pois você teria que modificar o programa em DOS que gera a impressão para usar os recursos do NODOSIMP.

    ResponderExcluir
  4. Teilor,

    O programador que fez o sistema ainda tem contrato com a empresa e de vez em quando está lá, mas não estou muito certo de que ele tenha interesse em resolver o problema, já que não resolveu nem este, nem o fato de que o programa dele usa 100% de CPU no Windows possivelmente por polling de teclado. E eu não me sinto nada confortável com a idéia de ir ensinar a outro profissional como ele deve fazer o seu trabalho.

    ResponderExcluir
  5. Numa empresa onde trabalhei parece-me que isso era feito pela opção "Adicionar porta" nas propriedades da impressora, permitindo fazer com que ela fosse reconhecida também como LPT1, mas não me lembro dos detalhes.

    Se eu passar lá de novo e tiver oportunidade de vefificar isso, voltarei a postar os detalhes aqui.

    ResponderExcluir
  6. Sony,

    "Adicionar porta" é parte da gambiarra necessária para instalar o Printfil no Windows 9X. O caminho é esse mesmo, mas não é a solução toda. E por favor anote também o modelo da impressora, porque faz diferença.

    ResponderExcluir
  7. Silvinho7/3/10 19:49

    Tenho um cliente com o DOS2USB em pleno uso a mais de 2 anos e meio em uum programa DOS imprimindo em uma HP Laserjet 1018 (antes era uma LX300 que deu defeito).
    Excelente programinha. Nunca deu problema.

    ResponderExcluir
  8. Anônimo8/3/10 08:58

    Conheço esse software open source http://sourceforge.net/projects/winprint/
    (embora ainda não o tenha testado).

    ResponderExcluir
  9. Jefferson,

    Sem querer questionar a experiência do seu cliente, não bate com o que a minha intuição responderia. Não uso impressora matriciais faz tempo, mas a minha lembrança é que eram bem mais robustas que as jato de tinta (principalmente os modelos atuais de baixo custo). E minha experiência é que é perda de tempo enviar impressora de jato de tinta para o conserto, vão te cobrar metade do preço de uma nova e vai não vai ficar boa. Por outro lado, comparado com o valor do aluguel ele ainda vai economizar se trocar a jato de tinta uma ou duas vezes por ano.

    ResponderExcluir
  10. Rafael Albuquerque8/3/10 19:27

    Jefferson,

    A questao dos programas em DOS consumindo 100% do CPU podem ser resolvidos de duas formas:
    I) Recompilando o programa com algumas bibliotecas para solucionar o problema

    II) Clicar com o botao direito no atalho, pedir Propriedade. Guia Diversos, Opcao "Sensibilidade de Ociosidade". Por padrao ela fica ao meio. Coloca em Alta que o problema está resolvido. Pelo menos nao fica consumindo 100%. Tenho alguns sistemas legados em clipper que estou convertendo para php+mysql e resolvi dessa forma. Até o consumo de energia e temperatura diminuem por sobrecarregar o escalonador do SO e, por consequencia, a CPU com tantas instruções.

    ResponderExcluir
  11. Rafael Albuquerque8/3/10 19:39

    Onde está escrito:
    "... consumo de energia e temperatura diminuem por sobrecarregar o escalonador ..."

    Leia-se
    "... consumo de energia e temperatura diminuem por NÃO sobrecarregar o escalonador ..."

    ResponderExcluir
  12. Eu prefiro o DOSPRINT.
    http://www.pcounter.com/download/free20100221/DOSPrint.zip

    Fácil de instalar e mudar as impressoras, mapeia várias portas LTP "on the Fly" e o melhor é de graça. Uso em vários clientes.

    Quanto ao DOS usar 100% da CPU, procure por um programa chamado THAME DOS.

    ResponderExcluir
  13. Daniel,

    Eu vou checar o DOSPRINT, mas se não me engano eu já usei esse programa e ele não é capaz de lidar com impresoras "burras", se limitando a automatizar o truque com NET USE explicado mais atrás.

    Quando ao "TAMEDOS" (é esse o nome) eu testei na época, mas encontrei problemas. No momento não lembro o que, mas tive que desligar.

    ResponderExcluir
  14. Ryan,

    Fiquei com uma curiosidade.

    Será que não seria possivel utilizar o DosBox para contornar este problema ?

    ResponderExcluir
  15. Se você se refere ao uso excessivo de CPU eu me lembro vagamente de ter testado isso.

    ResponderExcluir
  16. Anônimo9/4/10 08:48

    uso o dosprint. Depois de procurar tanto o encontrei e atendeu a expectativa, além de gratuito.

    []ś

    ResponderExcluir
  17. Trabalhei com o DOS2USB mais percebi que ele funciona normal com win98 e winxp mais quando se trata do win7 ele ate funciona certinho, mais vc pode esperar uma surpresa até a centésima impressão ai ja vai expirar e vai aparecer a tela pedindo para registrar com uma senha para inserir contra-senha tera que comprar uma licença que cista em media 29,0U$ - não é atua que os Indianos são bem dotados no conhecimento T.I. desenvolvimento e outros

    ResponderExcluir

Siga as regras do blog ou seu comentário será ignorado.