como alterar LPT_TIMEOUT do windows 7

Seção onde você poderá tirar suas dúvidas sobre Sistemas Operacionais. (Windows, Linux...)

Moderador: Moderadores

porter
Usuário Nível 5
Usuário Nível 5
Mensagens: 1057
Registrado em: 10 Dez 2009 16:44
Localização: OLIMPIA-SP

como alterar LPT_TIMEOUT do windows 7

Mensagem por porter »

ola pessoal, meu sistema esta rodando em um windows 7 64 bits, mas a impressao demora para comecar, no windows xp eu alterava o LPT_TIMEOUT de 15 para 1, no windows 7 como faço essa alteracao ? pelo regedit nao consegui localizar o LPT_TIMEOUT.
O sistema foi migrado de clipper para xHarbour.

obrigado.
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

como alterar LPT_TIMEOUT do windows 7

Mensagem por Jairo Maia »

Olá Porter,

Se você fecha seu sistema, a impressão é liberada em seguida? Se sim, você tem certeza que está fechando a porta ou arquivo da impressora? Coloque um exemplo da função que você está usando. Acho que fica mais fácil opinar.
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)
porter
Usuário Nível 5
Usuário Nível 5
Mensagens: 1057
Registrado em: 10 Dez 2009 16:44
Localização: OLIMPIA-SP

como alterar LPT_TIMEOUT do windows 7

Mensagem por porter »

ola Jairo, estou fazendo assim :

Código: Selecionar todos

SET DEVICE TO PRINT
SET PRINT ON 
SET PRINT TO C:\LOJA\TESTE.TXT
SETPRC(0,0)
?? "$IMP$=1;"
DO WHILE !EOF()
      @ contl,01 say "teste tste teste"
      skip
      contl++
ENDDO
SET PRINTER TO
SET PRINTER OFF
SET DEVICE TO SCREEN
IF CONFIRMA("Imprimir relatorio") = 1
    ! COPY TESTE.TXT C:\JATO
ENDIF
RETURN
faco uma copia de teste.txt para a pasta c:\jato que esta sendo monitorada pelo prwin, com o xHarbour tem como mandar imprimir direto na USB ? nao precisarei mais usar o prwin ?

obrigado.
Editado pela última vez por Pablo César em 10 Jul 2013 13:51, em um total de 1 vez.
Razão: Mensagem editada para colocar a tag [ code ]<br>Veja como utilizar esta tag: http://www.pctoledo.com.br/forum/faq.php?mode=bbcode#f2r1
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

como alterar LPT_TIMEOUT do windows 7

Mensagem por Pablo César »

Porter, por favor estou te pedindo gentilmente que obedeça as regras do fórum (mensagens repetidas e falta de uso das tags). Eu já adverti você uma vez por escrito, evite por favor que isto volte a acontecer, ok ?
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.
porter
Usuário Nível 5
Usuário Nível 5
Mensagens: 1057
Registrado em: 10 Dez 2009 16:44
Localização: OLIMPIA-SP

como alterar LPT_TIMEOUT do windows 7

Mensagem por porter »

voce tem razao Pablo, principalmente a tag na correria eu sempre esqueco de usar, desculpa.
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

como alterar LPT_TIMEOUT do windows 7

Mensagem por Jairo Maia »

Olá Porter,

Não entendi o significado de ?? "$IMP$=1;", mas veja se o exemplo abaixo ajuda. Sugiro substituir o Copy por PrintFileRaw(), veja se resolve.

Código: Selecionar todos

Function Main()
 Local cPrinter
 Local contl := 1
 cFileName := "C:\LOJA\TESTE.TXT"
 
 Use SeuDBF Shared New

 SET DEVICE TO PRINT
 SET PRINT TO ( cFileName )
 SETPRC(0,0)
 ?? "$IMP$=1;"
 DO WHILE !EOF()
      @ contl,01 say "teste tste teste"
      skip
      contl++
 ENDDO
 SET PRINTER TO
 SET DEVICE TO SCREEN

 IF CONFIRMA("Imprimir relatorio") = 1

  // sintaxe da PrintFileRaw()
  // PrintFileRaw( cPrinterName, cFileName, cJobTitle )

  // Se desejar imprimir direto na impressora padrao, use assim:
  // cPrinDefault := GetDefaultPrinter()
  // PrintFileRaw( cPrinDefault, cFileName, "Teste de Impressao" )

  // Para dar op‡Æo ao usuario para escolher a impressora, use assim:
  cPrinter := PegaPrinter()
  If !Empty( cPrinter )
   PrintFileRaw( cPrinter, cFileName, "Teste de Impressao" )
  EndIf

 ENDIF

Return Nil

Function PegaPrinter()  // seleciona impressora
 Local i, nPrn := 1, oPrn, nMaxLen := 0, aPNomes := {}
 Local cPrinter := "", aPrn := GetPrinters( .t. )
 Local cPrinDefault := GetDefaultPrinter()

 If Empty( aPrn )
  Alert( "Nenhuma impressora Instalada" )
  Return ( cPrinter )
 Endif

 For i=1 To Len( aPrn )
  AaDd( aPNomes , aPrn[i,1] )
  nPrn := If( aPrn[i,1] = cPrinDefault, i, nPrn )
  nMaxLen := If( Len( aPrn[i,1] ) > nMaxLen, Len( aPrn[i,1] ), nMaxLen )
 Next

 Clear Screen
 nPrn := AChoice( 3, 10, Len( aPNomes )+3, nMaxLen+10, aPNomes, .T., Nil , nPrn )
 If nPrn = 0
  Return ( cPrinter )
 Endi

 cPrinter := Alltrim( aPNomes[nPrn] )

Return ( cPrinter )
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)
Avatar do usuário
Vander
Usuário Nível 3
Usuário Nível 3
Mensagens: 214
Registrado em: 23 Jul 2004 01:43
Localização: João Monlevade - MG

como alterar LPT_TIMEOUT do windows 7

Mensagem por Vander »

Olá Porter;
faco uma copia de teste.txt para a pasta c:\jato que esta sendo monitorada pelo prwin, com o xHarbour tem como mandar imprimir direto na USB ? nao precisarei mais usar o prwin ?
Tem como imprimir diretamente para impressoras USB, veja em:
http://pctoledo.com.br/forum/viewtopic. ... t=win32prn

Vander
HbMake v1.17
xHarbour build 0.99.70 Intl. (SimpLex)
Borland C++ 5.5.1
fivewin 6.12 (FREE)
Workshop 4.5
MEdit
porter
Usuário Nível 5
Usuário Nível 5
Mensagens: 1057
Registrado em: 10 Dez 2009 16:44
Localização: OLIMPIA-SP

como alterar LPT_TIMEOUT do windows 7

Mensagem por porter »

ola pessoal, desculpe a demora em dar uma resposta, só estou podendo mexer nessa duvida agora. Senhor Jairo, estou testando a rotina acima que o senhor passou, e ela funciona corretamente quando escolho uma impressora matricial, mas quando seleciono uma impressora com USB(HP Deskjet 3510 series), ela ate tenta imprimir vejo que entra rapidamente na filha de impressao, mas nao imprime nada.
Na impressora matricial esta imprimindo corretamente, mas na HP nao.

obrigado pela atençäo.
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

como alterar LPT_TIMEOUT do windows 7

Mensagem por Jairo Maia »

Olá Porter,
porter escreveu:ela funciona corretamente quando escolho uma impressora matricial
Na verdade, para usar a função PrintFileRaw() a impressora precisa ter suporte ao modo RAW, ou estar com ele habilitado caso ela tenha.

Mas como você está migrando seu sistema, então será bom você começar a estudar a classe Win32Prn (no Harbour é Win_Prn), que com pequenos ajustes em seu sistema, acabam os problemas de impressoras.

No exemplo, mantive o raciocínio de gerar o arquivo de impressão antes, mas você pode fazer a impressão de forma direta a medida que for adequando seu sistema.

Nota: Usando esta classe, os comandos de tipos de fonte, cores, tamanho etc constantes no arquivo, serão ignorados. Estes ajustes precisam ser feito na rotina de impressão.

Veja o exemplo simples abaixo como funciona a Win32Prn. Compile e veja que vai imprimir em qualquer impressora:

Código: Selecionar todos

#include "WinGdi.ch"

Function Main()
 Local cPrinter
 Local contl := 1
 cFileName := "C:\LOJA\TESTE.TXT"
 
 Use DBFTeste Shared New

 SET DEVICE TO PRINT
 SET PRINT TO ( cFileName )
 SETPRC(0,0)
 //?? "$IMP$=1;"
 DO WHILE !EOF()
  @ contl,01 say "Teste de impressao Usando a Clase Win32Prn"
  skip
  contl++
 ENDDO
 SET PRINTER TO
 SET DEVICE TO SCREEN

 If Alert( "Imprimir relatorio?", { "Sim", "Nao" } ) = 1

  If !File( cFileName )
   Return Nil
  Else  // Vamos colocar seu arquivo num Array

   cLinha := Nil
   aLinesPrint := {}
   cBuffer := FOpen( cFileName, 2 )

   Do While Hb_FReadLine( cBuffer, @cLinha, Nil, 255 ) = 0
    AaDd( aLinesPrint, cLinha )
   EndDo

   FClose( cBuffer )

  EndIf

  cPrinter := PegaPrinter()  // escolhe a impressora
  If !Empty( cPrinter )

   nCopias := 1  // n£mero de c¢pias

   oPrinter           := Win32Prn():new( cPrinter )
   oPrinter:landscape := .F.
   oPrinter:formType  := DMPAPER_A4  // folha A4
   oPrinter:copies    := nCopias
 
   IF .NOT. oPrinter:create()
    Alert("Erro Tentando Acessar a Impressora")
    Return Nil
   ENDIF

   IF .NOT. oPrinter:startDoc( "Impressao Teste" )
    Alert("Erro Tentando Enviar os Dados de Impressao")
    Return Nil
   ENDIF

   // impressao comprimida: { 3, -50 } ‚ igual 50/3, ou seja 16.6 cpp
   //oPrinter:SetFont( "Lucida Console", 10, { 3, -50 } )

   // impressao normal
   oPrinter:SetFont( "Lucida Console", 10 )
   oPrinter:CharSet( 0 )

   oPrinter:bold( FW_NORMAL )  // nao negrito, nao it lico, etc...

   For i = 1 To Len ( aLinesPrint )
    oPrinter:textOut( aLinesPrint[ i ] )  // imprime a linha
    oPrinter:newLine()  // passa para proxima linha
   Next

   oPrinter:endDoc()   // envia a impressora
   oPrinter:destroy()  // fecha documento de impressao

  EndIf

 EndIf

Return Nil

Function PegaPrinter()  // seleciona impressora
 Local i, nPrn := 1, oPrn, nMaxLen := 0, aPNomes := {}
 Local cPrinter := "", aPrn := GetPrinters( .t. )
 Local cPrinDefault := GetDefaultPrinter()

 If Empty( aPrn )
  Alert( "Nenhuma impressora Instalada" )
  Return ( cPrinter )
 Endif

 For i=1 To Len( aPrn )
  AaDd( aPNomes , aPrn[i,1] )
  nPrn := If( aPrn[i,1] = cPrinDefault, i, nPrn )
  nMaxLen := If( Len( aPrn[i,1] ) > nMaxLen, Len( aPrn[i,1] ), nMaxLen )
 Next

 Clear Screen
 nPrn := AChoice( 3, 10, Len( aPNomes )+3, nMaxLen+10, aPNomes, .T., Nil , nPrn )
 If nPrn = 0
  Return ( cPrinter )
 Endi

 cPrinter := Alltrim( aPNomes[nPrn] )

Return ( cPrinter )
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)
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

como alterar LPT_TIMEOUT do windows 7

Mensagem por Toledo »

Amigos, vejam este exemplo de visualizador de relatórios que coloquei na seção Download, acho que vai ser útil.

https://pctoledo.org/forum/fileba ... t=c&page=1

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 do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

como alterar LPT_TIMEOUT do windows 7

Mensagem por Jairo Maia »

Show de bola Toledo. Excelente exemplo.

De quebra, duas funções muito legais: Ascii para Pdf e a de envio de email.
:-Y
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)
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

como alterar LPT_TIMEOUT do windows 7

Mensagem por Toledo »

Jairo, a função CovertAsciiPDF() copiei de um exemplo txt2pdf.prg do Massiano Belgrano. Quando estiver com mais tempo, vou tentar incluir nesta função as formatações de negrito, condensado, expandido, etc.

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
porter
Usuário Nível 5
Usuário Nível 5
Mensagens: 1057
Registrado em: 10 Dez 2009 16:44
Localização: OLIMPIA-SP

como alterar LPT_TIMEOUT do windows 7

Mensagem por porter »

ola Jairo, adaptei a rotina que voce passou e funcionou corretamente no sistema quero te agradecer e perguntar se para fazer impressao direta usa-se essa mesma rotina, senao tem algum exemplo para que eu possa usar ?

obrigado.
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

como alterar LPT_TIMEOUT do windows 7

Mensagem por Jairo Maia »

Olá Porter,
porter escreveu:para fazer impressao direta usa-se essa mesma rotina
O exemplo passado leva em consideração um arquivo texto pré existente. Para imprimir direto, usa-se a mesma classe, os mesmos comandos, mas não esta mesma rotina.

Coloque um exemplo da sua função que gera o arquivo texto usando o SET PRINTER TO, mostrando qual ou quais dados do DBF você usa para gerar o arquivo de impressão para que possamos montar um exemplo para você entender melhor o uso da classe Win32Prn e impressão direta.
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)
porter
Usuário Nível 5
Usuário Nível 5
Mensagens: 1057
Registrado em: 10 Dez 2009 16:44
Localização: OLIMPIA-SP

como alterar LPT_TIMEOUT do windows 7

Mensagem por porter »

SET DEVICE TO PRINT
SET PRINT ON
SET PRINT TO C:\LOJA\TESTE.TXT
SETPRC(0,0)
USE PRODUTOS SHARED NEW
GOTO TOP
DO WHILE !EOF()
@ contl,01 say CODIGO
@ contl,10 say DESCRICAO
skip
contl++
ENDDO
SET PRINTER TO
SET PRINTER OFF
SET DEVICE TO SCREEN
IF CONFIRMA("Imprimir relatorio") = 1
W32PRN() // rotina que voce passou, dei o nome a ela de w32prn
ENDIF
RETURN
Responder