Página 1 de 2
impressora FX-890
Enviado: 13 Dez 2012 11:23
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
impressora FX-890
Enviado: 13 Dez 2012 12:44
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 ?
impressora FX-890
Enviado: 13 Dez 2012 13:08
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.
impressora FX-890
Enviado: 17 Dez 2012 19:08
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
impressora FX-890
Enviado: 18 Dez 2012 04:54
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
impressora FX-890
Enviado: 18 Dez 2012 08:28
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.
impressora FX-890
Enviado: 20 Dez 2012 18:34
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
impressora FX-890
Enviado: 20 Dez 2012 23:43
por rochinha
Amiguinho,
Se for para usar Harbour tradicional use o
deste link. Esta é a versão 3.2 para Borland C++ 5
impressora FX-890
Enviado: 22 Dez 2012 10:27
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.
impressora FX-890
Enviado: 06 Jun 2013 13:29
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
impressora FX-890
Enviado: 06 Jun 2013 16:31
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.
impressora FX-890
Enviado: 06 Jun 2013 18:35
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.
impressora FX-890
Enviado: 06 Jun 2013 18:48
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
impressora FX-890
Enviado: 06 Jun 2013 19:40
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
impressora FX-890
Enviado: 06 Jun 2013 20:15
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.