Fiz um programinha simples para imprimir umas etiquetas em uma impressora Argox 214. Sendo que normalmente quando imprimo imprimo muitas etiquetas.
O meu primeiro problema foi que eu gerava a etiqueta(arquivo txt) e mandava imprimir, isso dentro de um for(ou seja, faz o arquivo, grava fecha e manda imprimir) o que estava acontecendo é que o programa era mais rápido do que a impressão, e quando ia imprimir, acabava imprimindo a mesma etiqueta, e sempre a última. Resolvi isso gerando arquivos com numeração.
Mas agora mando imprimir os arquivos na ordem dentro de outro for e a impressão sai fora de ordem, creio que seja também por causa do problema da lentidão da impressão.
Essa é uma impressora serial e você a ligou no seu computador sem aqueles fios para controle de fluxo? (RTS / CTS)
Provavelmente você terá de pôr uma pausa entre etiquetas usando sleep:
dá uma pausa de 1000 milissegundos, ou seja, 1 segundo.
T
thingol
a) A impressão sai fora da ordem ou você está perdendo etiquetas?
b) Por acaso você está usando o Windows 95/98/ME ?
T
thiagoencd
A impressão sai da ordem sim, estou usando Windows XP.
Tinha outro que eu fiz que ao invés de imprimir com o comando externo print eu mandava executar um arquivo bat que enviava a impressão, mas sempre perdia a 2ª e 3ª e as vezes a 4ª etiqueta.
T
thingol
Se você está usando o comando “print” do Windows, você deve se lembrar de algumas coisas:
Ele não faz milagres se a conexão com a impressora serial não estiver correta (com os sinais de controle de fluxo - RTS/CTS corretamente conectados à impressora, e com a impressora corretamente configurada para usar o RTS/CTS);
Se não me engano, o comando “print” põe esses arquivos-texto no spool de impressão. Em tese, ele deveria obedecer à ordem em que os arquivos foram postos na fila. Pode ser que algum dos arquivos tenha tido problemas em sua impressão, portanto o que a impressora ou o Windows (sei lá quem) faz é ir para a próxima etiqueta, e passar ao próximo arquivo.
T
thiagoencd
Eu ja imaginava que poderia ser isso, valeu!!!
Vou tentar colocar a tarefa em uma Thread e mandar ela dormir por 1 segundo mesmo.
No outro eu tinha resolvido parcialmente, colocando um JOptionPane entre uma impressão e outra, mas era ridículo. Como o programa só eu vou utilizar mesmo…
T
thiagoencd
Tava muito grande o código para passar para Thread, acabei fazendo em C mesmo.