Página 1 de 2

Create Error..impressão.

Enviado: 07 Abr 2014 11:08
por scom
Ola amigos.

Estou com um prolema e já busquei solução em vários tópicos e ainda não consegui.

tem uma impressora capturada na LPT3 capturo direto no no comando NET USE LPT3 \\ESTOQUE\LX /YES

Quando vou no CMD e mando DIR>LPT3 imprime normal mas no sistema toda vez que preciso imprimir nela da o seguinte erro

error term/2014 create error lpt3.prn

ja quebrei a cabeça e não consegui resolver...por favor alguem tem uma luz pra me dar?

O sistema é em Xharbour modo Console.

Create Error..impressão.

Enviado: 07 Abr 2014 11:46
por Itamar M. Lins Jr.
Cadê o código ?

Saudações,
Itamar M. Lins Jr.

Create Error..impressão.

Enviado: 07 Abr 2014 12:39
por Kapiaba

Create Error..impressão.

Enviado: 08 Abr 2014 14:06
por Itamar M. Lins Jr.
Essas são forma arcaicas de imprimir.
Use PrintFileRaw() e se livre desses bats, arquivo bat p/ imprimir é coisa do passado.
Tem n recursos prontos p/ usar todo potencial das impressoras modernas, inclusive usando as DLL fornecida pelos fabricantes.

Saudações,
Itamar M. Lins Jr.

Create Error..impressão.

Enviado: 08 Abr 2014 17:02
por Kapiaba
Veja se ajuda, co

Código: Selecionar todos

FUNCTION ImpSpool( cFileTxt, cPorta, lErase )

    LOCAL CPRINTER

    LOCAL cImpPadrao := GetDefaultPrinter()   // É a impressora que esta como padrão no momento anterior a vc setar onde quer imprimi

    //cPorta := PrnGetPort()
    Default cPorta := Alltrim( PrnGetPort() ), lErase:= .t.

    cPrinter := PrinterPortToName( cPorta )

    IF EMPTY( cPrinter )

       cPrinter := PrinterPortToName( "USB002" )

       IF EMPTY( cPrinter )

          cPrinter := PrinterPortToName( "USB001" )

       ENDIF

    ENDIF
    
    IF .NOT. EMPTY( cPrinter )  // TEM USB

       PrintFileRaw( cPrinter, TrueName( "CUPOM.TXT" ), "Impressão de Vendas" )

    ELSEIF LEN( cPorta ) <= 5 .and. Left( Upper(cPorta), 4 ) = "LPT1"

       //--- Spool Local - Matricial em LPT1
       cPorta:= "PRN"

       WAITRUN("COMMAND.COM /C COPY /B " + cFileTxt + " " + cPorta, 0 )

   // Impressao na PORTA COM 1 ou 2
   ELSEIF Left( Upper(cPorta),4) = "BEMA" .OR. Left( Upper(cPorta),3) = "COM" )   // Impressao em impressoras de rede COM1/2

      Set Printer To ( cPorta ) // Somente para setar a impressora
      PrintFileRaw( cPorta , cFileTxt )
      Set Printer To ( cImpPadrao )

    ELSE

       //--- Spool Remoto - Matricial em LPT1
       WAITRUN("COMMAND.COM /C COPY /B " + cFileTxt + " " + cPorta, 0 )

    ENDIF

    IF lErase // Vem .T. da tela de vendas
       FERASE( cFileTxt )
    ENDIF

RETURN( .T. )

Create Error..impressão.

Enviado: 08 Abr 2014 17:33
por JoséQuintas
Não lembro exatamente o que pertence a qual versão, mas tem diferença entre os Windows:

LPT3
LPT3:

Dependendo da versão do Windows, pode precisar ou não dos dois pontos.

Create Error..impressão.

Enviado: 08 Abr 2014 17:51
por Pablo César
Muito bom o seu exemplo Kapiaba, gostei !

Se bem, que teria que ter como opção, quando não tiver impressora alguma instalada.

Obrigado por compartilhar. :)
Dependendo da versão do Windows, pode precisar ou não dos dois pontos.
Eu acredito que sem os dois pontos deve funcionar perfeitamente.

Create Error..impressão.

Enviado: 08 Abr 2014 18:06
por Itamar M. Lins Jr.
Tudo isso ai, pode ser simplificado apenas com printfileraw() caso use apenas texto puro p/ imprimir.
Não importa se é USb, COM, LPT, ou rede.
Caso queira simplificar p/ o usuário, aparecer um combobox já pré configurado p/ escolher qual impressora imprimir, gravar em algun arquivo INI, para ler onde está cada impressora.
Tipo impressora de cheques, impressora balcão, impressora padrão...

P/ usar basta apenas uma linha:
imprime("MEUARQTXT","IMPRESSORATAL","RELATORIO X ")

Código: Selecionar todos

**********************************
Function Imprime(cArq,cPrint,cTit)
**********************************
*
*
Local oPrn, aPrn:=WIN_PRINTERLIST()
hb_default(@cPrint,win_PrinterGetDefault())
hb_default(@cTit,"PEDIDO")

If Empty(cArq)
   hwg_Msginfo('Informe algo p/ imprimir.')
   Return .F.
EndIf
If empty(aPrn)
   hwg_Msginfo('Não há impressoras instaladas')
   Return .F.
EndIf

 nRet := Win_PrintFileRaw(cPrint,cArq,cTit)
 if nRet < 1
    cMsg := 'Erro Imprimindo: '
   SWITCH nRet
      CASE -1
         cMsg += "Parâmetro inválido passado" ; EXIT
      CASE -2
         cMsg += "WinAPI OpenPrinter() Falha na chamada"      ; EXIT
      CASE -3
         cMsg += "WinAPI StartDocPrinter() Falha na chamada"  ; EXIT
      CASE -4
         cMsg += "WinAPI StartPagePrinter() Falha na chamada" ; EXIT
      CASE -5
         cMsg += "WinAPI malloc() of memory failed"      ; EXIT
      CASE -6
         cMsg += "Arquivo " + cArq + " não Localizado"   ; EXIT
      //DEFAULT
      //   cMsg += cFile + " PRINTED OK!!!"
      END

     hwg_Msgstop(cMsg)
 EndIf

Return .T.
Saudações,
Itamar M. Lins Jr.

Create Error..impressão.

Enviado: 09 Abr 2014 09:39
por Kapiaba
Pablo César, veja se ajuda:

http://forums.fivetechsupport.com/viewt ... =3&t=28184

abs,

Create Error..impressão.

Enviado: 30 Mar 2021 12:08
por ziul
TST_IMPR.prg
Código
(1.37 KiB) Baixado 59 vezes
Boa tarde Itamar.
Testei Function Imprime(cArq,cPrint,cTit).
Tentei compilar, mas deu erros:
undefined reference to ´HB_FUN_WHG_MSGINFO´ e ´HB_FUN_WHG_MSGSTOP´
Poderia me ajudar?

Veja em anexo o código compilado e a msg de erro.

Obrigado.
Atenciosamente,

Luiz Fernandes

Create Error..impressão.

Enviado: 30 Mar 2021 12:42
por Itamar M. Lins Jr.
Olá!
É HWG_*...
Mude para ALERT()
São funções da Hwgui, basta trocar por ALERT() ou "@ x,y say..."

Saudações,
Itamar M. Lins Jr.

Create Error..impressão.

Enviado: 30 Mar 2021 18:33
por ziul
Boa noite Itamar.
Obrigado. Acertei.
Poderia me ajudar de novo?
Estava testando em uma impressora da rede.
Aparecia a impressão em "DISPOSITIVOS E IMPRESSORAS", mas não saia disso. Não imprimia.

Coloquei uma impressora local,
Aparece em "DISPOSITIVOS E IMPRESSORAS", some, mas nada sai na impressora.

Abs,
Luiz Fernandes

Create Error..impressão.

Enviado: 30 Mar 2021 22:40
por Itamar M. Lins Jr.
Olá!
Estava testando em uma impressora da rede.
Não tem importância onde está a impressora se local ou em rede.
Basta ela aparecer quando vc usa Word, Excel, Notepad etc... Que vai aparecer para o Harbour também.
Coloque a impressora que vc quer imprimir como "padrão" (default) lá na caixa(aba) de impressoras do windows.
Deve está setado para alguma virtual...
Ou se desejar ver quais estão cadastradas basta imprimir o conteúdo de aPrn.

Código: Selecionar todos

For n:=1 to len(aPrn)
 ? aPrn[n]
next
Saudações,
Itamar M. Lins Jr.

Create Error..impressão.

Enviado: 31 Mar 2021 09:12
por Jairo Maia
ziul escreveu:Aparece em "DISPOSITIVOS E IMPRESSORAS", some, mas nada sai na impressora.
Outra coisa também: Informe qual é a impressora. Win_PrintFileRaw(cPrint,cArq,cTit) Imprime somente em impressoras compatíveis com o modo RAW. Se a impressora não tem esse recurso disponível ou está desativado, ocorre o que você disse: "Some mas não imprime".

Create Error..impressão.

Enviado: 21 Abr 2021 18:08
por ziul
Boa noite Jairo.
A Minha impressora é compatível com RAW. Veja o print.
Mesmo assim, não sai da fila de impressão.
Tem alguma dica?

Luiz Fernandes