Clipper On Line • Ver Tópico - Dúvida com rotina para verificar status da impressora

Dúvida com rotina para verificar status da impressora

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

Moderador: Moderadores

 

Dúvida com rotina para verificar status da impressora

Mensagempor porter » 29 Out 2017 09:03

olá pessoal,
Essa rotina, encontrei aqui no fórum, ela tem o propósito de verificar qual o status atual da impressora, mas estou com dúvida com
esses comandos:

Function PrintOnLine(vcPrintOn) --> qual parâmetro devo informar, do que se trata vcPrintOn ?
local nStatus := PrintStat(vcPrintOn) --> Função PrintStat, devo acrescentar alguma lib ou tenho que criar essa função manualmente ?
local nStatus := PrnStatus(vcPrintOn) --> Função PrnStatus, devo acrescentar alguma lib ou tenho que criar essa função manualmente ?

Harbour 3.2.0 (dev)

********************************************************************************                       
Function PrintOnLine(vcPrintOn)
****************************************
      * Funcao para verificar o
      * status da impressora
      * selecionada, local ou em rede
      *****************************************
         local nStatus := PrintStat(vcPrintOn)
         local nStatus := PrnStatus(vcPrintOn)
         if nStatus > 0
            Alert("Condicao da impressora: " + IsImpressora(vcPrintOn))
         endif
         return .t.
      
********************************************************************************                
function IsImpressora( QuePrinter )
      *****************************************
      * Funcao para retornar a mesnagem de
      * status da impressora
      *****************************************
         LOCAL nStatus
         nStatus := PrintStat( QuePrinter )
         if     nStatus <        1 ; return "OK"
         elseif nStatus =        1 ; return "Impressora Pausada"
         elseif nStatus =        2 ; return "Impressora com Erro"
         elseif nStatus =        4 ; return "Impressora Deletando"
         elseif nStatus =        8 ; return "Impressora em Modo Bandeja"
         elseif nStatus =       16 ; return "Impressora Sem Papel"
         elseif nStatus =       32 ; return "Impressora em Modo Manual"
         elseif nStatus =       64 ; return "Impressora com Problema no Papel"
         elseif nStatus =      128 ; return "Impressora OffLine"
         elseif nStatus =      256 ; return "Impressora com IO Ativo"
         elseif nStatus =      512 ; return "Impressora Ocupada"
         elseif nStatus =     1024 ; return "Impressora Imprimindo"
         elseif nStatus =     2048 ; return "Impressora Memoria Lotada"
         elseif nStatus =     4096 ; return "Impressora Nao Instalada"
         elseif nStatus =     8192 ; return "Impressora Aguardando"
         elseif nStatus =    16384 ; return "Impressora Processando"
         elseif nStatus =    32768 ; return "Impressora Inicializando"
         elseif nStatus =    65536 ; return "Impressora em Atencao"
         elseif nStatus =   131072 ; return "Impressora Toner Baixo"
         elseif nStatus =   262144 ; return "Impressora Sem Toner"
         elseif nStatus =   524288 ; return "Impressora PAGE_PUNT"
         elseif nStatus =  1048576 ; return "Impressora Intervencao do Usuario"
         elseif nStatus =  2097152 ; return "Impressora Sem Memoria"
         elseif nStatus =  4194304 ; return "Impressora Tampa Aberta"
         elseif nStatus =  8388608 ; return "Impressora Servidor Desconhecido"
         elseif nStatus = 16777217 ; return "Impressora POWER_SAVE"
         endif
         return(nil)
porter
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1024
Data de registro: 10 Dez 2009 15:44
Cidade/Estado: OLIMPIA-SP
Curtiu: 3 vezes
Mens.Curtidas: 23 vezes

Dúvida com rotina para verificar status da impressora

Mensagempor Toledo » 29 Out 2017 10:33

Amigo, a vcPrintOn deve ser o nome da impressora.
A função PrintStat() é da lib hbct do xHarbour, no Harbour 3.2 tem ela na lib xhb, mas é apenas para compatibilidade e não importa o status da impressora, sempre vai retornar 0.
Já a função PrnStatus() é da FiveWin.

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar de usuário

Toledo
Administrador

Administrador
 
Mensagens: 3038
Data de registro: 22 Jul 2003 18:39
Cidade/Estado: Araçatuba - SP
Curtiu: 263 vezes
Mens.Curtidas: 258 vezes

Dúvida com rotina para verificar status da impressora

Mensagempor porter » 01 Nov 2017 12:56

A função PrintStat() é da lib hbct do xHarbour, no Harbour 3.2 tem ela na lib xhb, mas é apenas para compatibilidade e não importa o status da impressora, sempre vai retornar 0.
Já a função PrnStatus() é da FiveWin.


olá Toledo,
Entrei no site abaixo, e fiz o download do FiveWin 1.0, no arquivo.HBP, acrescentei
-iC:\fivewin\trunk\fivewin1.0\include o #include "fivewin.ch" coloquei no inicio do PRG,
e ele está sendo encontrado, mas está dando erro na compilação :

undefined reference to HB_FUN_TSAY
collect2.exe: error: ld returned 1 exit status
hbmk2[ESTOQUE]: Erro: Executando linkeditor. 1

HARBOUR 3.2.0(dev)

https://code.google.com/archive/p/fivew ... ult/source
porter
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1024
Data de registro: 10 Dez 2009 15:44
Cidade/Estado: OLIMPIA-SP
Curtiu: 3 vezes
Mens.Curtidas: 23 vezes

Dúvida com rotina para verificar status da impressora

Mensagempor porter » 01 Nov 2017 13:18

O problema que estou encontrando, é que as vezes a fila de impressão fica congestionada, então não consigo
imprimir pela rede, com essa função gostaria de dar uma mensagem para o usuário avisando o problema.
porter
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1024
Data de registro: 10 Dez 2009 15:44
Cidade/Estado: OLIMPIA-SP
Curtiu: 3 vezes
Mens.Curtidas: 23 vezes

Dúvida com rotina para verificar status da impressora

Mensagempor Kapiaba » 01 Nov 2017 13:21

Olá Porter, está em: SAY.PRG ou você não linkou as libs do Five.

Se esse fivewin estiver completo, as classes estão em: C:\FWH..\SOURCE\CLASSES

Você pode baixar a minha primeira versão FWH2.7 em 32 bits, autorizado pelo Antonio Liñares, aqui:

https://www.4shared.com/rar/v5Q3qkH-ba/FWH27.html

Ai, você verá como é completo.

Abs.
Kapiaba
Colaborador

Colaborador
 
Mensagens: 1766
Data de registro: 07 Dez 2012 15:14
Cidade/Estado: São Paulo
Curtiu: 311 vezes
Mens.Curtidas: 119 vezes

Dúvida com rotina para verificar status da impressora

Mensagempor Kapiaba » 01 Nov 2017 13:44

Porter, o SPOOL da impressora está ligado? Nem em Fivewin, você consegue mandar mensagem de impressora.

A não ser, perguntar se a impressora está "Pronta?" . No Windows, o comando ISPRINTER(), não funciona.

Abs
Kapiaba
Colaborador

Colaborador
 
Mensagens: 1766
Data de registro: 07 Dez 2012 15:14
Cidade/Estado: São Paulo
Curtiu: 311 vezes
Mens.Curtidas: 119 vezes

Dúvida com rotina para verificar status da impressora

Mensagempor porter » 01 Nov 2017 14:23

Olá Porter, está em: SAY.PRG ou você não linkou as libs do Five.
Se esse fivewin estiver completo, as classes estão em: C:\FWH..\SOURCE\CLASSES
Você pode baixar a minha primeira versão FWH2.7 em 32 bits, autorizado pelo Antonio Liñares, aqui:
https://www.4shared.com/rar/v5Q3qkH-ba/FWH27.html

Ai, você verá como é completo.

Porter, o SPOOL da impressora está ligado? Nem em Fivewin, você consegue mandar mensagem de impressora.

A não ser, perguntar se a impressora está "Pronta?" . No Windows, o comando ISPRINTER(), não funciona.


Olá Kapiaba, apenas acrescentei -iC:\fivewin\trunk\fivewin1.0\include no HBP, e #include "fivewin.ch" no PRG
e tentei compilar, estou tentando fazer com o prnstatus do FiveWin conforme rotina no começo do tópico, mas
se nem com o FiveWin consigo verificar o SPOOL da impressora, não vai adiantar eu prosseguir com essa rotina.
O SPOOL da impressora está ligado, sempre acontece da fila de impressão ficar congestionada e não conseguir
imprimir pela rede, então tenho que sempre esvaziar o SPOOLER, não sei se esse problema acontece por se tratar de um XP na estação.
Vou baixar a versão que você sugeriu e tentar compilar pelo menos para aprender a usar outras funções do FiveWin.

Obrigado.
porter
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1024
Data de registro: 10 Dez 2009 15:44
Cidade/Estado: OLIMPIA-SP
Curtiu: 3 vezes
Mens.Curtidas: 23 vezes

Dúvida com rotina para verificar status da impressora

Mensagempor Kapiaba » 01 Nov 2017 15:50

Porter, em Fivewin essa funcao simples, poderia ajudar. Mesmo assim, tenho dúvidas, se o windows aceita de boa.

FUNCTION isPrinterReady( oPrn )

RETURN !Empty( oPrn:hDC )


Veja se consegue algo semelhante para a linguagem que voce usa.

abs.
Kapiaba
Colaborador

Colaborador
 
Mensagens: 1766
Data de registro: 07 Dez 2012 15:14
Cidade/Estado: São Paulo
Curtiu: 311 vezes
Mens.Curtidas: 119 vezes




Retornar para Harbour

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 9 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro