Página 1 de 2

Impressão em Impressora Serial (COM1) em Clipper

Enviado: 06 Jun 2007 13:46
por Dilson José
Não consigo imprimir comandas usando SET PRINT TO COM1, impressora PROCOMP, pelo DOS eu imprimo ex. DIR > COM1 sai, mas dentro de minha aplicação não, álguem pode por gentileza ajudar-me? Se puder dar exemplos agradeço muito! Obrigado!

Sds
Dilson José

Enviado: 06 Jun 2007 15:34
por Eolo

Código: Selecionar todos

SET PRINTER TO COM1
SET DEVICE TO PRINTER  // direciona p/ printer
? "IMPRIME"             // imprime
* outros comandos de impressão
SET PRINT TO           // zera buffer de impressão
SET DEVICE TO SCREEN   // direciona p/ tela

Enviado: 19 Jun 2007 15:49
por Maurício Elias
Oi colega.

A princípio deveria funcionar.
Mas, o q vc pode tentar prá resolver, é jogar em um .Txt e, depois:
! Type Arquivo.txt > COM1
Provavelmente funcione.

Abraços.

_______
Maurício

Enviado: 19 Jun 2007 18:21
por Maligno
Sob DOS imprime mas sob Windows não? Por acaso seu mouse não está ocupando a COM1? Ou sua aplicação roda apenas sob DOS?

Enviado: 19 Jun 2007 18:37
por Eolo
Pessoal,
O Dilson fez SET PRIN TO COM1 mas se esqueceu de direcionar a saída pra printer (faltou o SET DEVI TO PRIN). Assim não imprime mesmo. No DOS ele imprimiu por causa do ">" em "DIR > COM1".

Enviado: 19 Jun 2007 19:15
por Maligno
Mas ele não especificou como fez o SET DEVICE. Talvez o problema seja outro.

Enviado: 19 Jun 2007 19:26
por Eolo
Pois é, pergunta "mal feita" a gente fica tentando entender... Como ele disse:
Não consigo imprimir comandas usando SET PRINT TO COM1, impressora PROCOMP, pelo DOS eu imprimo ex. DIR > COM1 sai, mas...
sem mencionar o SET DEVI TO PRIN, eu deduzi que faltou este último...

Enviado: 19 Jun 2007 20:11
por fladimir
Olá Colegas... se o colega Dilson não especificou o Set Device to Print pode ser 2 coisas ou ele realmente não direcionou a saída e nesse caso o nosso Colega Eolo esta correto, ou pode ser tb que ele tenha especificado e o problema seja outro como disse corretamente o nosso Colega Maligno....

Posso compartilhar com os colegas o seguinte... Trabalho muito com Ecf´s de diversas marcas e já passei por inúmeras situações... dentre elas explanando um pouco mais o que talvez seja a linha de pensamento do nosso colega Maligno... No Windows 98 se vc manda imprimir direto no prompt DIR >COM1 o Windows "cede" a vez para o prompt por isso imprime. Agora, não sei exatamente o pq, mas em alguns computadores rodando com o sistema em Clipper mesmo estando tudo ok (talvez algo relacionado a IRQ), segue abaixo o exemplo do colega Eolo (Corretamente "SETADO"), para base do teste:

Código: Selecionar todos

SET PRINTER TO COM1
SET DEVICE TO PRINTER  // direciona p/ printer
? "IMPRIME"             // imprime
* outros comandos de impressão
SET PRINT TO           // zera buffer de impressão
SET DEVICE TO SCREEN   // direciona p/ tela
O sistema não imprime, repito isso em alguns micros com Windows98, um macete para o colega testar ver se esse é o caso, partindo do princípio q esteja tudo "SETADO" corretamente, é no Iniciar -> Executar -> MSCONFIG -> Na guia Win.Ini -> Expandir a pasta Windows -> lá dentro tem um linha falando sobre o mouse é a 5ª ou a 6ª ela vai estar com o valor 0 ou 1 não lembro agora aí vc inverte... isso é para qdo vc ligar o micro aparecer aquela mensagem q não encontrou o Mouse e pressionar para não aparecer mais a mensagem... mas vc não clica em nada qdo reiniciar e aparecer a mensagem vc clica simplesmente em OK e faz o teste, pq qdo vc escolhe para não aparecer mais a mensagem do mouse, em alguns micros com o Win98 gera este vamos dizer assim "conflito" na COM1.... caso seja isto q estaja bloqueando a com, repito partindo do princípio q no seu sistema esteja como no exemplo do colega Eolo, tudo vamos dizer assim "SETADO" corretamente, ele com certeza vai funcionar, lembrando isso tb se for Windows 98.

Vlw, espero ter contribuido, mesmo q talvez pouco com alguém...
Sucesso a todos nós!!!

:)Pos

Imprimir para COM1

Enviado: 01 Jul 2007 02:13
por barreto
Eu tive esse problema para imprimir na COM1 no XP. Na linha de comando e no Edit imprimia ok dentro do programa tentei de tudo, Set Printer to COM1, __CopyFile(arq.prn,'Com1'), nada funcionou aí me lembrei de redirecionar a impressão de uma porta paralela para porta serial:

MODE LPT2=COM1

agora mando imprimir para a porta LPT2 com o comando

Set Printer to LPT2

e a impressão é feita normalmente para a COM1

Espero ter ajudado.

Enviado: 01 Jul 2007 07:59
por Clipper
Também tive esse problema no 98 e XP e a solução foi como o Barreto postou. Fiz um BAT que antes do sistema chama as seguintes linhas :

MODE COM1:9600,N,8,1
MODE LPT2:=COM1:

Assim roda blz e inclusive compartilho normalmente.

Coloquei num BAT porque as vezes perdia a configuração ao entrar e sair do sistema.

Ps. Um negócio estranho que não consegui resolver é o seguinte :
Consigo imprimir pela rede de todos o computadores, mas não consigo imprimir do próprio computador onde a impressora está conectada, acontece é que ela imprime a primeira vez e depois não mais, fica dizendo que a porta COM1 está ocupada, já tentei de tudo, tirei mouse, botei mouse, desintalei COM, instalei COM. Como prar meu cliente não é tão importante imprimir deste computador para a impressora que está nele dexei pra lá.

Até logo.

Marcelo

Impressão na saída serial

Enviado: 01 Jul 2007 10:29
por Pablo César
Eu não conseguí que funcionasse normal em modo compartilhada em rede, por essa questão que disse que a porta estava ocupada (algo assim). Mas na mesma estação onde está instalada a impressora resolví fazendo da seguinte forma:

1. Criei o arquivo chamado SERIAL.BAT que contém:

Código: Selecionar todos

@ECHO OFF
MODE COM1:9600,N,8,1,P
MODE LPT2:=COM1
2. No arquivo BAT que chama o sistema coloquei o chamado de um aplicativo que verifica o status da serial que chama-se STATUS.EXE:

Código: Selecionar todos

@ECHO OFF
STATUS COM1 LPT2
CALL SERIAL.BAT
PROGRAMA.EXE
3. O STATUS.PRG, tem:

Código: Selecionar todos

SET CONSOLE OFF
SET SCOREBOARD OFF

PARAMETERS VCOM,VLPT
IF VCOM=NIL .OR. VLPT=NIL
   CLS
   SET CURSOR OFF
   @ 12,28 SAY "Sintaxe: STATUS COM1 LPT2" COLOR "W+/N"
   INKEY(3)
   SET CURSOR ON
   QUIT
ENDIF
VRODA:="MODE "+VLPT+" /STATUS > ST"
RUN (VRODA)
VST:=MEMOREAD("ST")
IF VLPT+": nÆo redirecionada" $ VST
   SET ALTERNATE TO SERIAL.BAT
   SET ALTERNATE ON
   ?? "@ECHO OFF"
   ? "MODE COM1:9600,N,8,1,P"
   ? "MODE "+VLPT+":="+VCOM
   SET ALTERNATE OFF
   SET ALTERNATE TO
ELSE
   MEMOWRIT("SERIAL.BAT","@ECHO OFF")
ENDIF
DELETE FILE("ST")
Foi desta forma que resolví. Só tem que verificar se o comando MODE do SO está em português para que dê a mensagem ": nÆo redirecionada" (mas isto não seria problema porque poderia ser colocado a frase do idioma correspondente. E o outro detalhe é que em WINXP e VISTA não deixa utilizar o caracter direcionador ">".

Quem sabe o Maligno consiga ver o status da COM e criar mais uma função no WAPI ? Mas para mim resolve direitinho.

Enviado: 01 Jul 2007 10:48
por Clipper
Que negócio estranho !

Comigo ela funciona compartilhada, mas não funciona no micro onde está instalada, ou melhor, até funciona mas seu eu imprimir no micro local então passa a não funcionar na rede, como pra meu cliente é mais importante a impressão pela rede então ele desistiu da impressão na serial local, mesmo porque ele já tem outra impressora na LPT1.

Até logo.

Marcelo

Enviado: 01 Jul 2007 10:58
por Pablo César
É... quando eu disse "(algo assim)", é porque não lembro de exatamente qual era a dificuldade. Só sei que não teve jeito de usá-la em modo compartlhado em rede. Mas esse aplicativo resolveu direitinho. Eu mencioneu sobre a dificuldade de utilização do caracater direcionador ">" de acordo a versões do Windows. Mas existe a combinação de "2>" substituindo o ">" para WIN XP (no VISTA, creio que é ">"). Daria para fazer uma BAT mais inteligente que utilizasse o caracter direcionador de acordo a versão do Windows. Por isso, eu tenho como padrão ter uma variável de ambiente que guarda a versão do Windows atualmente instalado.

Enviado: 02 Jul 2007 00:05
por Maligno
Pablo César escreveu:de acordo a versão do Windows. Por isso, eu tenho como padrão ter uma variável de ambiente que guarda a versão do Windows atualmente instalado.
O WAPI não te dá essa informação facilmente?

Enviado: 02 Jul 2007 08:41
por Pablo César
Também... O WAPI, tem a função -GETWINDOWSINFO que dá a versão do Windows. Mencionei da existência de uma variável de ambiente, pois fica uma coisa mais padronizada e mais prática de trabalhar, pois é só ler a variável e obter o resultado. Lembro-me que alguns testes com -GETWINDOWSINFO tinham dado erroneamente o seu resultado (tem mensagens minhas sobre isso), isto é: no meu WINXP estava dando resultado como: "9X,Windows 95,,4.0.950" mas o engraçado, agora não está dando mais esse resultado... E eu não formatei o WINXP ainda. Eu visto a essa dificuldade, tinha criado uma rotina que verificasse e criasse a versão do Windows. Foi por isso que mencionei da variável de ambiente.