Create Error..impressão.

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

Moderador: Moderadores

scom
Usuário Nível 3
Usuário Nível 3
Mensagens: 133
Registrado em: 15 Nov 2004 10:49
Localização: Dourados/MS

Create Error..impressão.

Mensagem 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.
S COM INFORMÁTICA
CLIPPER 5.3 / FIVEWIN 2.0 / BLINKER 7
XHARBOUR/ BCC582
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Create Error..impressão.

Mensagem por Itamar M. Lins Jr. »

Cadê o código ?

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Create Error..impressão.

Mensagem 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.
Saudações,
Itamar M. Lins Jr.
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

Create Error..impressão.

Mensagem 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. )
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Create Error..impressão.

Mensagem 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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
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á

Create Error..impressão.

Mensagem 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.
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.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Create Error..impressão.

Mensagem 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.
Saudações,
Itamar M. Lins Jr.
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

Create Error..impressão.

Mensagem por Kapiaba »

Pablo César, veja se ajuda:

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

abs,
ziul
Usuário Nível 1
Usuário Nível 1
Mensagens: 14
Registrado em: 20 Out 2009 16:35
Localização: Rio de Janeiro

Create Error..impressão.

Mensagem por ziul »

TST_IMPR.prg
Código
(1.37 KiB) Baixado 58 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
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Create Error..impressão.

Mensagem 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.
Saudações,
Itamar M. Lins Jr.
ziul
Usuário Nível 1
Usuário Nível 1
Mensagens: 14
Registrado em: 20 Out 2009 16:35
Localização: Rio de Janeiro

Create Error..impressão.

Mensagem 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
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Create Error..impressão.

Mensagem 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.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

Create Error..impressão.

Mensagem 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".
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)
ziul
Usuário Nível 1
Usuário Nível 1
Mensagens: 14
Registrado em: 20 Out 2009 16:35
Localização: Rio de Janeiro

Create Error..impressão.

Mensagem 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
Anexos
Modo RAW
Modo RAW
Responder