Identificando uma impressora matricial
Moderador: Moderadores
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Identificando uma impressora matricial
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 !
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.
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.
Identificando uma impressora matricial
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
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
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Identificando uma impressora matricial
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.IMPtinha 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
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.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
Faz um teste e diga-nos se realmente funciona.
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.
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.
Identificando uma impressora matricial
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
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
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Identificando uma impressora matricial
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.USO em todos meus clientes o TS
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.
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.
- rubens
- Colaborador

- Mensagens: 1520
- Registrado em: 16 Ago 2003 09:05
- Localização: Nova Xavantina - MT
Identificando uma impressora matricial
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.
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
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. )
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
"Eu e minha casa servimos ao Senhor e você
"
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
Identificando uma impressora matricial
Rubens, não lembro. Assim que puder faço um teste e retorno.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
- rubens
- Colaborador

- Mensagens: 1520
- Registrado em: 16 Ago 2003 09:05
- Localização: Nova Xavantina - MT
Identificando uma impressora matricial
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
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
"Eu e minha casa servimos ao Senhor e você
"
