Prezado qual LIB?asimoes escreveu: tente hb_IsPinter("LPT1")
undefined reference to `_HB_FUN_HB_ISPINTER
Moderador: Moderadores

Prezado qual LIB?asimoes escreveu: tente hb_IsPinter("LPT1")
undefined reference to `_HB_FUN_HB_ISPINTER

sim, com certeza!asimoes escreveu: Tem certeza que está fazendo assim:
HB_ISPRINTER("lpt1")?
Código: Selecionar todos
hbmk2 -find hb_isprinterCódigo: Selecionar todos
hb_IsPrinter() // sem argumentos .... Já até desanimei dessa questão, pois, vou fazer o teste, sem crer que o resultado será: .F. e .T., respectivamente.

testei e sabe qual foi o resultado?microvolution escreveu:Agora vou testar numa LX 300 as seguintes hipóteses no win xp:
- impressora desligada
- impressora ligada.

então, é isso q estou tentando lhe explicar...asimoes escreveu:Você tentou pelo menos o try..catch
Código: Selecionar todos
@ 2,2 say "Irá usar impressora LX300/810 (LPT1 - paralela) ?" get mOPCAO valida ("SN")Código: Selecionar todos
if mOPCAO = "S"
lLPT := .t.
else
lLPT := .f.
endifCódigo: Selecionar todos
do while lastkey()<> 27 .and. .not. isprinter()Código: Selecionar todos
do while lastkey()<> 27 .and. .not. lLPTComo o jquintas, asimoes, fladimir, eolo, pc, m.s., itamar, jairo, etc, e o próprio toledo, e, os demais deste tão conceituado fórum, têem dedicado tempo em nos abençoar...Se o cliente for usar impressoras da lista do windows (pode alguém querer), aí vai lá em configurações e muda para "N".
seria tratar o erro TERM/2014 error...

asimoes escreveu:Cara é só com você que não funciona o Try..Catch
Ai fica difícil.
Então... o nobre professor entendeu errado...microvolution escreveu:lembra que cheguei a testar (lá no outro tópico) e deu errado pois faltava alguma coisa?
microvolution escreveu:então, até q recebi sua resposta, já tinha arrumado (temporariamente para não deixar meu cliente me mandando para não sei aonde) a seguinte alternativa (paliativa):
O que prá mim está muito confuso, é que o erro TERM/2014 é um erro que ocorre quando se tenta abrir uma porta que não existe, ou está desabilitada pelo BIOS. Se a porta existe, mesmo não tendo impressora nela não pode ocorrer esse erro.microvolution escreveu:Acho que outra solução também... seria tratar o erro TERM/2014 error...
Código: Selecionar todos
Function Main()
Local lComLPT1:=.F., aPrinters:=GetPrinters( .T. )
For x=1 To Len( aPrinters )
If ( "LPT1" $ aPrinters[ x, 2 ] ) // pega o elemento 2 (porta da impressora)
lComLPT1 := .T. // tem impressora na LPT1
Hb_Alert( "A Impressora: " + aPrinters[ x, 1 ] + " está usando a LPT1" )
Exit
EndIf
Next
If !lComLPT1
Hb_Alert( "Nenhuma impressora usando LPT1" )
EndIf
Return Nil
Ainda bem que é do "Harbour", ka, ka, ka.É um falso positivo... "trazudindo"... não serve pra nada essa função do "harbour"...

pois pra mim, eu tratava esse erro (no clipper) com o seguinte:Jairo Maia escreveu:O que prá mim está muito confuso, é que o erro TERM/2014 é um erro que ocorre quando se tenta abrir uma porta que não existe
Código: Selecionar todos
do while lastkey()<>27 .and. .not. isprinter()
...
enddoCódigo: Selecionar todos
L:=TESTELPT("LPT1:")
#pragma BEGINDUMP
#include <windows.h>
#include "hbapi.h"
#include "hbstack.h"
#include "hbapiitm.h"
HB_FUNC( TESTELPT )
{
BOOL bRetorno = FALSE;
HANDLE hComm = CreateFileA( hb_parc (1), GENERIC_READ | GENERIC_WRITE,
0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
DCB status = {0};
BOOL success = GetCommState(hComm, &status);
bRetorno = success;
hb_retl(bRetorno);
}
#pragma ENDDUMP

vou responder a essa pergunta com 2 respostas:asimoes escreveu:Essa sua impressora epson é porta paralela ou usb?
Vou testar, mas, como disse o próprio Viktor, não há solução para essa tarefa, pois o problema (como ele mesmo disse) não é do harbour e sim do windows...asimoes escreveu:Pesquisando no google achei uma função em c++, fiz uma adaptação para funcionar com harbour, atenção: eu não tenho impressora matricial para testar.
union REGS regs;
regs.h.ah = 2; //Serviço 2 ler o status regs.x.dx = 0; //0 é a porta LPT1
int86(0x17,& regs,& regs);//Interrupção da impressora
return( regs.h.ah ); //Retorna um byte de status
Indeed. This logic is included in Harbour
since 1999-10-25 12:37 — the initial commit of:
https://github.com/harbour/core/blob/ma ... /isprint.c
It requires a direct BIOS call, so to use it, you'll need
an MS-DOS build of Harbour.
Mais informações, no link: https://groups.google.com/forum/#!topic ... phW9lXb17oPlease realise it's an MS-DOS vs. modern-OS issue,
_not_ a Clipper vs. Harbour issue. See answers above.
There do exist Windows API to query the status of printer
queues (f.e. "offline"), if that's of any help. Example:
https://github.com/vszakats/harbour-cor ... s/prn3.prg
No personal experience with it, though, I do hb_vfWrite()
to \\server\queue, TCP port 9100, cupsPrintFile() or create
a .pdf.
aliás, não sei o porquê que meu sistema começou de uma hora para a outra dar mensagens de "bug" nos códigos C/C++ embutidos no código .PRG. Criei um tópico só pra isso