impressora FX-890

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
Amparo
Usuário Nível 3
Usuário Nível 3
Mensagens: 342
Registrado em: 20 Ago 2010 10:38
Localização: caieiras / sao paulo

impressora FX-890

Mensagem por Amparo »

ola colegas

pessoal, tenho um sistema feito em Harbour puro, neste sistema para imprimir eu utilizo o USBPRINT.EXE pois os clientes tem impressoras USB e impressora com placa de rede embutido, pergunto:

gostaria de colocar a rotina de impressao dentro do meu sistema sem usar o USBPRINT algum colega tem alguma rotina que possa usar para esta finalidade.

O mais importante se não tiver a rotina posso continuar usando o USBPRINT sem problema, mais eu PRECISO acertar um erro que estou tendo, toda vez que mando imprimir um relatório seja de 1 folha 2 ou mais a impremissora perde o posicionamento do começo de impressão, já tentei alterar as configurações da impressora, já falei ate com o pessoal de suporte da EPSON mais de nada adiantou, estava pensando em resetar a impressora no final da impressão, quando pular o picote do formulario so nao me lembro qual é o comando que devo usar.

por favor se alguem tiver uma solução para os dois casos me ajudem.

abraço
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á

impressora FX-890

Mensagem por Pablo César »

Essa questão de disposicionar a cabeça de impressão fora do picote, não seria questão de configurar (talvez micro chaves da impressora) o tamanho da página/folha ?
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
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

impressora FX-890

Mensagem por rochinha »

Amiguinho,

Eu tinha um problema igual este e como não conseguia configurar o tamanho do formulário na impressão resolvi com contagem de linhas.

Todas as minhas impressões começavam com o contador em 1 e ia aumentando 1-a-1 até chegar no tamanho que eu necessitava que era de 60 linhas, então eu contava mais algumas e posicionava a nova folha.

O posicionamento inicial era feito pelo usuário, que colocava o papel e pressionava o botão load, depois eu ia contando de 1 até 60, do 60 em diante era o salto(configurado em .INI) e na proxima folha dava um SetPRC(0,0) e começava do 1 até 60 denovo.

Cheguei a imprimir 50 notas(na época das notas impressas) e só começar a ter diferença.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar do usuário
Amparo
Usuário Nível 3
Usuário Nível 3
Mensagens: 342
Registrado em: 20 Ago 2010 10:38
Localização: caieiras / sao paulo

impressora FX-890

Mensagem por Amparo »

ola amigos

desculpe me a demora em responder, ficquei quase duas semanas sem internet ta uma loucura so, ainda mais no final de ano.

bem rochinha eu fiz exatamente isto monto o relatorio contando as linhas, so que eu uso o o USBPRINT.EXE entao monto o relatorio em TXT e depois executo usprint via RUN mais na ultima linha onde eu coloco o STPRC(0,0) sai impresso a palavra NILL e nao posiciona na linha correta.


to batendo cabeça...

abraços
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

impressora FX-890

Mensagem por rochinha »

Amiguinho,

STPRC(0,0) ou SetPRC(0,0)?

Achei que voce imprimia diretamente na impressora, por isto falei do SetPRC(0,0). Voce não deve clocá-lo no script no USBPrint
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
runner
Usuário Nível 2
Usuário Nível 2
Mensagens: 69
Registrado em: 03 Ago 2007 05:17
Localização: GUARULHOS-SP

impressora FX-890

Mensagem por runner »

Ola, Amparo.


Não está claro para mim qual versão do harbour você usa, mas eu usando a versão "3.2.0 Dev" que vem junto com a Minigui Extend, utilizo a função PRINTFILERAW(), talvez se não tiver está função nesta versão que você usa, poderá optar em mudar para este que eu uso. Está função e muito boa, imprimi no padrão DRAFT em qualquer impressora matricial mesmo USB e em rede. Vale a pena ver isso para você sair desta situação de depender de outra aplicação para imprimir.
Harbour 3.2 + Minigui Extended 16 + xDev
Avatar do usuário
Amparo
Usuário Nível 3
Usuário Nível 3
Mensagens: 342
Registrado em: 20 Ago 2010 10:38
Localização: caieiras / sao paulo

impressora FX-890

Mensagem por Amparo »

ola amigos

rochinha, é setprc(0,0), eu nao tenho nem ideiai de como colocar no script do usbprint vou dar uma fussada pra ver se descubro como fazer.

runner, eu estou utilizando a versao 3.0.0 (Rev. 16951) que baixei meio que na loucura pois eu usava o harbour que vem no pacote do Harbour MiniGUI Extended Edition 2.1.7 - 2012.10.30, mas que nao consegui acertar algums detalhes de caractes loucos que apareciam em meu aplicativo, por isso baixei o harbour que nao me lembro o site e que agora nao consigo nem atualizar o danado, so sei que nao instalação ele cria a pasta HB30.

gostaria muito tirar o USBPRINT e fazer uma rotina de impressao dentro do meu sistema escolhendo qual impressora imprimir mais nao sei nem como começar, nem qual seria o comando a usar.

abraços
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

impressora FX-890

Mensagem por rochinha »

Amiguinho,

Se for para usar Harbour tradicional use o deste link. Esta é a versão 3.2 para Borland C++ 5
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
jamazevedo
Usuário Nível 3
Usuário Nível 3
Mensagens: 122
Registrado em: 29 Dez 2005 16:50
Localização: Manaus - AM

impressora FX-890

Mensagem por jamazevedo »

De forma bem primária:
  • tenho impressora lx-300 (usb);
    capturo a porta via: net use lpt1: \\maquina\nome_print (no sistema operacional, não é no harbour)
    rotina de impressão:
    set device to print
    do while lAte_o_Fim
    if nContaLinha == 0 .OR. nContaLinha == 60
    Cabecalho()
    endif
    @ prow()+1,001 say "Isso"
    @ prow(),pcol()+1 say "Aquilo"
    nContaLinha++
    enddo
    eject
    set device to screen
Sem mistérios e 100% Harbour, xHarbour, Clipper, etc.

Lembre-se as impressoras matriciais vêem configuradas para 66 linhas por página em formuário contínuo (240x280) que é diferente do A4 quando usamos folha solta. Então se você não alterou as configurações da impressora o exemplo acima irá fazer o salto de páginas corretamente.
______________________________________________________
Usando: Linux Ubuntu 18.04, Harbour 3.2.0dev r1811161533
______________________________________________________
José Airton de Menezes Azevedo
Manaus - AM
Avatar do usuário
Amparo
Usuário Nível 3
Usuário Nível 3
Mensagens: 342
Registrado em: 20 Ago 2010 10:38
Localização: caieiras / sao paulo

impressora FX-890

Mensagem por Amparo »

Ola amigos

Pessoal me desculpe por retornar o assunto, mais ainda não resolvi o danado, por um monte de problema.

Bem, fiz o seguinte teste, tirei a impressora do printserv e instalei em uma maquina depois compartilhei a impressora e montei um BAT +/- assim
NET USE LPT2 \\192.168.1.125\FX90S /persistent:yes

Coloquei no INICIALIZAR das estações com windows xp e win7 professional, no windows XP consigo imprimir na boa salta as paginas onde quero ta uma beleza, já com o win7 quando tento imprimir da erro no sistema com a seguinte mensagem ACESSO NEGADO DOS ERRO 5, observação: no win7 criei o arquivo usando o EDIT do DOS só que quando abri o prompt pedi para executar como administrador, no inicializar também configurei o atalho para iniciar como administrador, coloquei o atalho para iniciar como compatibilidade com win xp service pack 2, e não funciona no win7 sempre da erro ACESSO NEGADO dos ERRO 5.

A impressora esta instalada em um servidor com sistema operacional win 2003 só que não tem dominio esta como GRUPO DE TRABALHO e esta instalada na porta USB e não paralela mais isso acho que não vem ao caso porque no xp imprimo tudo, já tentei montar o BAT desta forma
NET USE LPT2 \\192.168.1.125\FX90S user:administrador pactos20%98#feito

No xp funciona no win7 da a mesma mensagem ACESSO NEGADO DOS ERRO 5 isso acontece somente quando entro na minha aplicação e mando imprimir.

Já procurei na net e não encontrei nada que pudesse ajudar, abaixo as linhas de impressão coisa bem simples, mas que infelizmente em win 7 não vira. estou pensando em montar um programa para verificar se existe algum arquivo TXT em uma determinada pasta, se existeir imprime o arquivo, esse programa ficara instalado no micro que esta a impressora, é meio que ganbiarra, mas vai funcionar, se alguem tiver uma solução melhor e puder ajudar obrigado.

Código: Selecionar todos

*----------------------------------------------------------------------------------------------------
PROCEDURE IMPRI_LPT2()
LOCAL LINHA := 1

SET CONSOLE OFF
SET PRINTER TO LPT2  ( a mensagem de erro ACESSO NEGADO da nesta linha )
SET PRINTER ON
SET DEVICE TO PRINTER

SETPRC(0,0)

ArqImp->( DBGOTOP() )

Do While !ArqImp->( Eof() )
   IF !EMPTY( ArqImp->Txtlinha )
      IF LINHA > 59
         LINHA := 1
	 EJECT
      ENDIF

      ? SUBSTR( ArqImp->Txtlinha, 1,75 )
      LINHA += 1
   ENDIF

   ArqImp->( DBSkip() )
EndDo

EJECT

SET PRINTER OFF
SET PRINTER TO
SET CONSOLE ON
SET DEVICE  TO SCREEN

RETURN
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á

impressora FX-890

Mensagem por Pablo César »

Oi Amparo,

Você tentou nessas estações em WIn7 mandar algum arquivo para tal impressora ?
Faça um teste na linha de comando e mande um arquivo texto, para saber se dá essa mensagem.
Amparo escreveu:estou pensando em montar um programa para verificar se existe algum arquivo TXT em uma determinada pasta, se existeir imprime o arquivo, esse programa ficara instalado no micro que esta a impressora, é meio que ganbiarra, mas vai funcionar
Sim também irá funcionar, mas antes esgote todas as possibilidades.

A outra questão, que você re-direcione a sua impressão de dentro do seu programa, que ao invés de mandar para LPT2 direto, crie um arquivo antes e depois copie para LPT2 capturada.
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
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

impressora FX-890

Mensagem por Itamar M. Lins Jr. »

É USB/Serial/Paralela ? está configurada no "ruindows" ? imprime pelo notepad ? então tenta ai:

Código: Selecionar todos

**********************************
Function Imprime(cArq,cPrint,cTit)
**********************************
*
*
Local oPrn, aPrn:=WIN_PRINTERLIST()

if empty(aPrn)
   hwg_Msginfo('Não há impressoras instaladas')
   return .f.
endif
If cPrint == Nil
 cPrint := win_PrinterGetDefault()
EndIf
If cTit == Nil
 cTit := "PEDIDO"
EndIf

 nRet := Win_PrintFileRaw(cPrint,cArq,cTit)
 if nRet < 1
    cMsg := 'Erro Imprimindo: '
   SWITCH nRet
      CASE -1
         cMsg += "Parâmetro inválido passado" ; EXIT
      CASE -2
         cMsg += "WinAPI OpenPrinter() Falha na chamada"      ; EXIT
      CASE -3
         cMsg += "WinAPI StartDocPrinter() Falha na chamada"  ; EXIT
      CASE -4
         cMsg += "WinAPI StartPagePrinter() Falha na chamada" ; EXIT
      CASE -5
         cMsg += "WinAPI malloc() of memory failed"      ; EXIT
      CASE -6
         cMsg += "Arquivo " + cArq + " não Localizado"   ; EXIT
      //DEFAULT
      //   cMsg += cFile + " PRINTED OK!!!"
      END

     hwg_Msgstop(cMsg)
 EndIf

Return .t.
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Amparo
Usuário Nível 3
Usuário Nível 3
Mensagens: 342
Registrado em: 20 Ago 2010 10:38
Localização: caieiras / sao paulo

impressora FX-890

Mensagem por Amparo »

ola amigos


como vai Pablo tudo bem?
Pablo César escreveu: Você tentou nessas estações em WIn7 mandar algum arquivo para tal impressora ?
Faça um teste na linha de comando e mande um arquivo texto, para saber se dá essa mensagem.
veja o que fiz, no win7 na linha de comando digitei
net use (ENTER)
a resposta foi:
OK S: \\siscom\dados Rede Microsoft Windows
depois digitei: (o endereço ip é o mesmo do mapeamento acima so nao coloquei o nome do micro)
net use lpt2 \\192.168.1.125\fx890s user:administrador senha
a respota foi
comando executado com sucesso
digitei novamente o comando
net use
a resposta foi
OK S: \\siscom\dados Rede Microsoft Windows
OK lpt2: \\192.168.1.125\fx890s Rede Microsoft Windows
depois digitei
dir
a resposta foi
( como eu estava no prompt de comando na raiz C:\ listou algumas pastas e alguns arquivo )
depois digitei
dir > lpt2
a resposta foi
acesso negado
fiz outro teste eu tinha um arquivo TXT com algumas baboseiras escritas entao digitei
type leiame.txt >lpt2
a respota foi
acesso negado


esses testes acima eu fiz em uma maquina com win7 professional e deu o erro fiz em outra maquina com win XP e funcionou imprimiu na impressora normalmente.

Pablo César escreveu:A outra questão, que você re-direcione a sua impressão de dentro do seu programa, que ao invés de mandar para LPT2 direto, crie um arquivo antes e depois copie para LPT2 capturada.
eu nao entendi muito bem o que voce quis dizer aqui, mas como escrevi acima, nos micros com win xp service pack 2 ou 3 funciona normal, so nao funciona no win 7 e acho que tambem nao vai funcionar no vista e nem no win 8

abraços
amparo
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

impressora FX-890

Mensagem por asimoes »

Reforçando o que o Itamar disse, o seu problema pode ser resolvido utilizando:

Win_PrintFileRaw()

Um pequeno exemplo:

Primeiro defina a impressora como padrão

Um programa para testar:

Código: Selecionar todos

FUNCTION MAIN
LOCAL cDefaultPrinter:=WIN_PrinterGetDefault()
   SET DEVICE TO PRINT
   SET PRINTER TO "TESTE.TXT"
   SET PRINT ON
   @ PRow()+1,000 SAY "TESTE"
   EJECT
   SET PRINT OFF
   SET PRINTER TO
   SET DEVICE TO SCREEN
   WIN_PrintFileRaw(cDefaultPrinter,"TESTE.TXT",'Impressao Teste')
RETURN Nil
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
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á

impressora FX-890

Mensagem por Pablo César »

Viu Amparo os colegas postaram uma solução simples para Harbour, mas vai precisar da geração do arquivo de impressão. E só para efeito de teste, uma vez capturada, você poderia digitar na linha de comando:

copy leiame.txt lpt2

Mas acredito que uma vez você tendo o arquivo de impressão o Win_PrintFileRaw irá funcionar bem, como indicaram os colegas.
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