Impressão em Impressora Serial (COM1) em Clipper

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Dilson José
Usuário Nível 1
Usuário Nível 1
Mensagens: 24
Registrado em: 06 Jun 2007 08:09
Localização: www.pop.com.br
Contato:

Impressão em Impressora Serial (COM1) em Clipper

Mensagem 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é
Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

Mensagem 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
Maurício Elias
Usuário Nível 3
Usuário Nível 3
Mensagens: 304
Registrado em: 12 Mai 2005 08:48

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

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?
[]'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
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

Mensagem 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".
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 »

Mas ele não especificou como fez o SET DEVICE. Talvez o problema seja outro.
[]'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
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

Mensagem 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...
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Mensagem 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
barreto
Usuário Nível 1
Usuário Nível 1
Mensagens: 12
Registrado em: 07 Ago 2004 22:03

Imprimir para COM1

Mensagem 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.
Avatar do usuário
Clipper
Colaborador
Colaborador
Mensagens: 1334
Registrado em: 23 Ago 2004 00:04
Localização: Recife/PE

Mensagem 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
Programador que é programador, quando tá de folga vai inventar função nova, fazer testes, ou seja... se divertir
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
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á

Impressão na saída serial

Mensagem 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.
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
Clipper
Colaborador
Colaborador
Mensagens: 1334
Registrado em: 23 Ago 2004 00:04
Localização: Recife/PE

Mensagem 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
Programador que é programador, quando tá de folga vai inventar função nova, fazer testes, ou seja... se divertir
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
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 »

É... 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.
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
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem 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?
[]'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 »

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.
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.
Responder