Página 2 de 2
Identificando uma impressora matricial
Enviado: 18 Mai 2012 10:40
por Pablo César
Obrigado Rossine pela atenção, mas este é o mesmíssimo exemplo que postou o colega Itamar. Mas como eu alertei antes, esse código para mim aqui no funciona !
Identificando uma impressora matricial
Enviado: 18 Mai 2012 12:11
por paiva
BOM dia
eu quando precisei a UNS anos atraz tinha uma funcao no Xhb que dizia se era Matrical ou USB
Voltava algum parametro de um vetor com essa informacao ate testei + quando era Impressora em uma REDE e nao no PC nao consegui
entao Optei na EPOCA fazer uma TABELA(dbf) onde informava se era USB colocava nela uma Identificacao Unica que NAo houvesse 2 iguais nas impressoras da REDE
Tipo epson-lx 300 M_caixa1 M_escritorio etc etc
A Poucos dias passou a dar problema quando direcionava o printe para uma EPSON-LX por ela ser USB
erro nesse determinado cliente.
a solucao Define a mesma como USB e num outro campo defini como lx_300 ai sei que e´uma MAtricial ligada na USB
e gero um txt e mando emprimir como se fosse MAtricial.
resolveu
+ uma funcao que determine se e´ MATRICIAL ou USB e at emesmo se MAtricail ligada em USB (rs) como as epson-Lx(rs) seria Otimo
Paiva
Identificando uma impressora matricial
Enviado: 24 Mai 2012 17:41
por Pablo César
tinha uma funcao no Xhb que dizia se era Matrical ou USB
Voltava algum parametro de um vetor com essa informacao ate testei + quando era Impressora em uma REDE e nao no PC nao consegui
Oi Paiva, o
VQTIPO.EXE que disponibilizei na seção de Downloads, funciona sim
conforme propriedades descritas no tópico e em impressoras de redes. Claro que elas terão que estar instaladas na estação onde é executado o utilitário. Pode observar, que quando é matricial irá criar um arquivo chamado
MATRIX.IMP
uma funcao que determine se e´ MATRICIAL ou USB e at emesmo se MAtricail ligada em USB (rs) como as epson-Lx(rs) seria Otimo
E se for ler esse arquivo (MATRIX.IMP) quando criado, o seu conteúdo irá constar a porta: LPT1, LPT2 ou USB ... etc. Aí então você poderá selecionar entre impressão gráfica ou modo texto.
Faz um teste e diga-nos se realmente funciona.
Identificando uma impressora matricial
Enviado: 24 Mai 2012 23:04
por paiva
Boa
Nao sei se entendi.
se so funciona no PC em rede ai complica
USO em todos meus clientes o TS do w2003/2008 ou Xp e W7 simulando o TS
entao o exe SEMPRE sera no Servidor NEM tem como saber qual PC esta executando por poderem estar executando usando a NET
Normalmente executam Localmene pelo Cabo de rede + tambem usam em Outro LOCAL fisico pela NET
PAiva
Identificando uma impressora matricial
Enviado: 24 Mai 2012 23:56
por Pablo César
USO em todos meus clientes o TS
Ahhh você não tinha dito isso antes. Aí acho que a alternativa seria antes de chamar o TS, seja através de uma batch file, você poderia chamar o VQTIPO.EXE localmente, só pra saber que impressora tem. Agora não sei como o programa no servidor irá reagir. Deveria haver alguma rotina que pudesse setar o resultado local, aí acredito que daria. Mas sendo de TS, já não tenho certeza. Teste e nos diga.
Identificando uma impressora matricial
Enviado: 23 Mar 2016 19:20
por rubens
Boa noite...
Post antigo mas esta me servindo muito bem...
Segui a postagem do Jairo viewtopic.php?f=4&p=75277&sid=4179b9ef24d13928134fffa23a16d12d#p75277
Retirei algumas coisinhas para integrar com o meu sistema e funcionou bem.. o único problema é que Sempre sai uma página em branco quando executo a função. Acredito que seja na linha do oPrinter:Create, mas se eu retirar/comentar essa linha não carrega as propriedades daí sempre retorna matricial.
Código: Selecionar todos
/*
Compilar com hbmk2 Nome_do_Teste -lhbwin
Se MATRICIAL=1 - Retorna .T.
Se MATRICIAL=2 - Retorna .F.
*/
#define MATRICIAL 1
#define DESC_LASER 2
Function EMatricial( cUSBPRINTER )
Local cPrinter, i, nMaxLen:=0, nCor, nTPrin, nPrn, aPNomes:={}
Local cPrn:= GETIMPRESSORA()
cUSBPrinter := cPRN // SERA USADO NO RELATORIO - OPEN_REL
cPrinter := cPRN
oPrinter := Win_Prn():new(cPrinter)
oPrinter:create()
*oPrinter:startdoc()
nCor := oPrinter:numcolors()
nLar := oPrinter:pagewidth()
nAlt := oPrinter:pageheight()
*oPrinter:TextOut( oPrinter:PrinterName + ": MaxRow() = " + Str( oPrinter:MaxRow(), 4 ) + " MaxCol() = " + Str( oPrinter:MaxCol(), 4 ) )
*oPrinter:enddoc()
oPrinter:destroy()
nTPrin:=If( nCor<3 .And. nLar<1000 .And. nAlt<2000, MATRICIAL, DESC_LASER )
/*
If nTPrin = 1
Alert( 'A impressora em: '+aPrn[nPrn,2]+' ‚ Matricial' )
Else
Alert( 'A impressora em: '+aPrn[nPrn,2]+' ‚ DeskJet ou Laser' )
Endi
EndDo
*/
Return IF( nTPrin = 1, .T., .F. )
Jairo ou Pablo, vocês passaram por isso? conseguiram corrigir?
Eu sempre carrego as impressoras instaladas e mostro para o cliente selecionar, daí verifico se é Matricial, se sim deixo direto na lpt1, senão abro a função OPEN_REL( cArquivo ) que o toledo postou como exemplo.
Belezura.. Até a maioria dos comandos esc/p funcionão perfeitamente.. O que não pode é misturar tamanhos na mesma linha porque o negócio ficam doido..
Mas para mim foi perfeito.. Não vou ter que refazer todos os relatórios, todos já geravam um txt com impressão de lpt1, tela ou notepad.
Valeu..
Obrigado
Rubens
Identificando uma impressora matricial
Enviado: 24 Mar 2016 10:37
por Jairo Maia
Rubens, não lembro. Assim que puder faço um teste e retorno.
Identificando uma impressora matricial
Enviado: 25 Mar 2016 15:35
por rubens
Jairo...
Num perde tempo não... o erro esta na minha rotina em algum lugar, hehehe... fiz o teste só com a função e não gera o erro... Na realidade na linha da largura tive que aumentar para 1030. No exemplo tá testando 1000 de largura, mas a minha LX300+II retorno 1024.
Mas blz...
Obrigado
Rubens