Impressão com o usb.exe

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

José Luiz
Usuário Nível 1
Usuário Nível 1
Mensagens: 18
Registrado em: 15 Mar 2008 17:19
Localização: São Carlos - SP

Impressão com o usb.exe

Mensagem 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]
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Mensagem 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.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar do usuário
rosalvo rosa
Usuário Nível 3
Usuário Nível 3
Mensagens: 156
Registrado em: 10 Jan 2006 19:21
Localização: Curitiba - PR

Mensagem 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.
José Luiz
Usuário Nível 1
Usuário Nível 1
Mensagens: 18
Registrado em: 15 Mar 2008 17:19
Localização: São Carlos - SP

USB

Mensagem 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.
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Mensagem 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:

Código: Selecionar todos

RELATORIO.EXE
IF EXIST LISTA1.PRN USB.EXE LISTA1.PRN 
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:

Código: Selecionar todos

run usb impterm.txt 
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.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
José Luiz
Usuário Nível 1
Usuário Nível 1
Mensagens: 18
Registrado em: 15 Mar 2008 17:19
Localização: São Carlos - SP

Nã consegui resolver

Mensagem 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.
heveraldo
Usuário Nível 2
Usuário Nível 2
Mensagens: 72
Registrado em: 16 Jun 2006 17:15

Mensagem 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
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Se quiser, me mande por eMail que disponibilizo no meu site. :)
Endereço: news(ARROBA)buzinello.com
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
danielrxavier
Usuário Nível 1
Usuário Nível 1
Mensagens: 4
Registrado em: 16 Abr 2007 22:55

Mensagem 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
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem 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. :)
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Mensagem 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.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
danielrxavier
Usuário Nível 1
Usuário Nível 1
Mensagens: 4
Registrado em: 16 Abr 2007 22:55

Mensagem 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.
Alcir
Usuário Nível 1
Usuário Nível 1
Mensagens: 34
Registrado em: 17 Abr 2008 10:57
Localização: sao paulo

Mensagem 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
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem 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?
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
gvc
Colaborador
Colaborador
Mensagens: 1270
Registrado em: 23 Ago 2005 10:57

Mensagem 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".
"TRS-80/Sincler/Apple/PC - Clipper Winter 85, tlink 1.0 [pc 10 MHz - 640K] {NEZ 8000 2Kb RAM}"
{POG - Programação Orientada a Gambiarra}
Responder