Página 1 de 1
Impressão com o usb.exe
Enviado: 03 Abr 2008 00:59
por José Luiz
Caros amigos, tenho um sistema desenvolvido em clipper 5.2 que está em rede, usando windows xp, com impressoras laser na rede. Estou usando o usb.exe do Santo Heveraldo, mas está imprimindo uma folha após o relatório com alguns caracteres. Não consigo resolver esse problema. A rotina é a seguinte:
do while .t.
if isprinter()
do impterm1
texto do relatório
do impterm2
else
aviso2("LIGUE A IMPRESSORA E TECLE <<<ENTER>>>...")
loop
endif
enddo
*********
PROCEDURE impterm1
aviso("GERANDO RELATàRIO. AGUARDE...")
set console off
set print to impterm.txt
set print on
set device to print
RETURN
**********
PROCEDURE impterm2
set print off
set print to
set console on
set device to screen
aviso("I M P R I M I N D O...")
run usb impterm.txt
close all
RETURN
[/code]
Enviado: 03 Abr 2008 16:36
por Pablo César
José Luiz, execute o USB sem parâmetro na linha de comando e verifique o conteúdo das variáveis que compõe o USB.MEM, teriam que ser mais ou menos assim:
Código: Selecionar todos
VM_CCANCEL Tam 20 Tipo C "[CANCELANEGRITO]"
VM_CCOMPRI Tam 20 Tipo C "[COMPRIMIDO]"
VM_CEXPAND Tam 20 Tipo C "[EXPANDIDO]"
VM_CFILE Tam 12 Tipo C "*.PRN"
VM_CNEGRIT Tam 20 Tipo C "[NEGRITO]"
VM_CNORMAL Tam 20 Tipo C "[NORMAL]"
VM_NCOMPRI Tam 9 Tipo N 8
VM_NEXPAND Tam 9 Tipo N 18
VM_NNORMAL Tam 9 Tipo N 11
VM_NTEMPO Tam 9 Tipo N 5
VM_PRN Tam 12 Tipo C "Impressora instalada no Windows"
Senão faça algo mais simples, delete o USB.MEM que o USB.EXE irá criá-lo novamente. Se o problema persistir, poste para nós o conteúdo das letras que está imprimindo a mais.
Enviado: 03 Abr 2008 20:57
por rosalvo rosa
Olá pessoal
peço permissao Jose Luiz para pegar uma carona neste tópico,
e pergunto :
como faço para linkar o usb.exe no meu sistema ?
ou só chamo ele com o Run ?
desde já agradeço.
USB
Enviado: 04 Abr 2008 00:30
por José Luiz
Pablo, fiz a substituição das macros de fonte no usb para ficar igual ao que eu uso no meu sistema e alterei também o tamanho das fontes. Ficou assim: "normal" tamanho 11, "condensado" tamanho 9, "expande" tamanho 14 e "negriton" para negrito. Está funcionando as configurações das fontes, porém, após a impressão do relatório a impressora imprime outra folha com o caracter no canto superior esquerdo.
Rosalvo, só chamo ele com o run.
Enviado: 04 Abr 2008 01:05
por Pablo César
rosalvo rosa escreveu:como faço para linkar o usb.exe no meu sistema ?
Eu acho que se você quiser fazer uma LIB, acredito que daria um pouco de trabalho, mas seria possível na teoria. Por acaso você chegou ver o processo que o Maligno inventou para conseguir uma .LIB através de um aplicativo .EXE ?. Se tiver interesse, baixe a ultima a ultima versão do WAPI e veja a documentação na pasta WAPI2LIB.
ou só chamo ele com o Run ?
Esta forma é a que mais é usada, pode também ser usado o SWPRUNCMD se for linkado com o BLINKER.
Além disso teria mais duas formas de se fazer uso do USB.EXE:
1. No meu caso que meu sistema é modular, isto é, tenho um executável para cada opção de menu e é gerenciado por um arquivo BATCH principal. Então suponhamos que usuário entra em relatórios manda imprimir e ao invés de imprimir direto na impressora você direciona sempre para arquivo .PRN (por exemplo). Daí na saída desse aplicativo através de um arquivo BATCH você chama o USB.EXE. Veja o exemplo do arquivo em lote:
2. O USB.EXE do Heveraldo tem a opção de ficar em looping, verificando a todo momento se em determinada pasta existe algum arquivo .PRN (ou a extensão que você definir) e daí então o USB manda para a impressora setada automaticamente. Isso serve como um servidor de impressão, mas teria que ficar aberta a sessão (podendo estar minimizada) mas em execução. Então todo relatório que o usuário mandar imprimir, você muda seu programa para que grave em arquivo e em determinada pasta. Para deixar ouvindo o USB.EXE é só chamar sem parâmetro algum que ele ficará em stand-by com a mensagem "Aguardando arquivos para impressão..."
José Luiz escreveu:após a impressão do relatório a impressora imprime outra folha com o caracter no canto superior esquerdo.
CHR(127) equivale o BackSpace. Talvez algum comando que você tenha passado para esse arquivo e que não conseguiu interpretar e experimenta a não dar o CHR(12) ou EJECT no final do relatório. Talvez seja isso.
José Luiz, antes de chamar o:
coloque "//", isto é, desabilite a chamada do USB para que o arquivo não seja apagado e daí então edite seu arquivo impterm.txt para ver se contém algum caracter estranho. Está me parecendo que seus ALTERNATE ou SET DEVICE estão invertidos ao fechar e não estaria fechando.
Nã consegui resolver
Enviado: 04 Abr 2008 21:57
por José Luiz
Pablo, ainda continua o problema. Não sei como resolver. Vou tentar desde o começo para ver se encontro o problema. Obrigado.
Enviado: 05 Abr 2008 10:59
por heveraldo
Carissimos,
O USB.EXE não consegue sobrepor impressão e acaba realizando um EJECT.
Talvez seja isso.
Qualquer dúvida, entrem em contato!
Ah! Tem uma versão nova, onde eu poderia postar?
Abraços,
Heveraldo@msn.com
Enviado: 05 Abr 2008 11:08
por Maligno
Se quiser, me mande por eMail que disponibilizo no meu site.

Endereço: news(ARROBA)buzinello.com
Enviado: 12 Abr 2008 13:41
por danielrxavier
Não sei se estou falando besteira pois não sou fera como esse pessoal.
Mas quando a impressora no cliente é usb e o windows é XP, eu compartilho a impressora e faço um .bat para antes de chamar meu prog, mapear a lpt1 para a impressora compartilhada.
EX do arquivo .bat:
net use lpt1 \\nomedomicro\nomedocompartilhamentodaimpressora
meuprog.exe
Enviado: 12 Abr 2008 13:57
por Maligno
Nunca testei, até porque uso a LIB WAPI. Mas já vi darem essa mesma dica. Não acho muito prático, mas se funciona bem, melhor.

Enviado: 13 Abr 2008 10:10
por Pablo César
danielrxavier escreveu:quando a impressora no cliente é usb e o windows é XP, eu compartilho a impressora e faço um .bat para antes de chamar meu prog, mapear a lpt1 para a impressora compartilhada.
Sim esta é outra saída que pode ser utilizada, no entanto (não sei se em XP é possível) capturar a impressora para LPT1 quando a impressora está conectada à própria estação. Pelas tentativas que eu fiz (não fiz em XP) isto não era possível capturar em LPT1 quando a impressora estava conectada naquela mesma estação. Dá uma mensagem que não é possivel instalar nessa estação no momento de instalação da impressora.
Enviado: 13 Abr 2008 21:01
por danielrxavier
na verdade, no win98 é que não funciona. mas a partir do win2000 é possível capturar a própria impressora. sempre faço isso em clientes com imp. usb.
Enviado: 24 Abr 2008 10:58
por Alcir
danielrxavier escreveu:Não sei se estou falando besteira pois não sou fera como esse pessoal.
Mas quando a impressora no cliente é usb e o windows é XP, eu compartilho a impressora e faço um .bat para antes de chamar meu prog, mapear a lpt1 para a impressora compartilhada.
EX do arquivo .bat:
net use lpt1 \\nomedomicro\nomedocompartilhamentodaimpressora
meuprog.exe
Isso NAO funciona, se for impressora com cabo USB conectado a rede.
Abraços
Enviado: 24 Abr 2008 11:06
por Maligno
Há quem diga que funciona em kernel NT. E se alguém disse isso é porque deve ser verdade. Talvez você tenha algum problema na sua rede que o impossibilite de usar esse recurso. Ou você está falando de Windos não-NT?
Enviado: 24 Abr 2008 12:02
por gvc
Eu já usei captura de USB para LPT1.
O principal problema é que algums impressoras não tem caracter residente, ou seja, não imprimem diretos usando DOS/LPT1.
Essas impressoras só usam impressão "gráfica".