Página 18 de 19

Convertendo Sistema do GASPRO para Harbour

Enviado: 06 Dez 2023 17:26
por Itamar M. Lins Jr.
Olá!
Eu vi seu código. Vc precisa jogar(direcionar) a saida para um arquivo texto, neste caso.
Essas duas funções uma liga a impressão em arquivo, a outra desliga.
Vc imprime da mesma forma que eu aqui, usando ? e ??
Screenshot_20231206_174322.png

Código: Selecionar todos

*******************************
Function CriaArqImpressao(cArq)
*******************************
*
*
if pcount() = 0
   cArq     := "etiquetas.txt"
endif

IF hb_vfExists(cArq)
   DO WHILE !Empty(hb_vfErase(cArq))
      alert("Falha apagando o arquivo: "+cArq)
   ENDDO
ENDIF

set printer to &cArq
set print on
set console off
set Printer on

Return cArq

*********************
Function FecharImpres
*********************
*
*
set margin to 0
set print off
set printer to
set console on
set Printer off
return .t.
Depois use Win_PrintFileRaw

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)
   alert('Informe algo p/ imprimir.')
   Return .F.
EndIf
If empty(aPrn)
   alert('Não há impressoras instaladas')
   Return .F.
EndIf
//alert( "win_printerStatus(): " + hb_ntos( win_printerStatus(cPrint) ) )

 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

     alert(cMsg)
 EndIf
Return .T.
A impressora pode está na USB ou COM ou LPT, precisa está cadastrada e ou compartilha no windows.

Saudações,
Itamar M. Lins Jr.

Convertendo Sistema do GASPRO para Harbour

Enviado: 06 Dez 2023 17:49
por alxsts
Olá!
Itamar M. Lins Jr. escreveu:Depois use Win_PrintFileRaw
Fiz um teste com esta função Imprime(cArq,cPrint,cTit) que você postou. Retornou o valor 1. Criou o arquivo "Pedido.PDF". Ao abri-lo (Chrome), dá erro. Verifiquei que o arquivo está com zero bytes...

A impressora padrão é "Microsoft Print to PDF"
Itamar M. Lins Jr. escreveu:A impressora pode está na USB ou COM ou LPT, precisa está cadastrada e ou compartilha no windows.
Tem algo a ver com isto? Onde estou errando?

Edit: mandei imprimir um arquivo .PRG, gerado pelo Visual Studio Code...

Convertendo Sistema do GASPRO para Harbour

Enviado: 06 Dez 2023 18:13
por bcm
No código fonte da etiqueta que te enviei tem a opção de imprimir o teste de posicionamento, geralmente eu escolho a opção de imprimir direto, praticamente ele não executa esse código. Meu maior problema está no fato de travar quando envio a etiqueta e não consigo imprimir.

Convertendo Sistema do GASPRO para Harbour

Enviado: 06 Dez 2023 18:17
por JoséQuintas
De uns tempos pra cá, citam migração graspro mas não tem nada a ver.
bcm escreveu:estou precisando gerar etiquetas de produtos com a impressão das barras do código de barras, mas está travando,
É mais do que óbrio travar: o default de impressão é pra matricial conectada na porta LPT1, o que não deve existir.
Resolver o travamento não vai resolver o código de barras, e talvez nem sem código de barras imprima, se não for impressora com texto, geralmente modelos antigos de impressora.
Já foi passada a alternativa pra impressoras USB, por exemplo, mas lembrando que precisa ter o recurso de texto.

Convertendo Sistema do GASPRO para Harbour

Enviado: 06 Dez 2023 18:23
por bcm
Ok!

Vou ver se altero o código fonte a adapto com as funções que me enviou.
Assim que eu conclui te retorno .

desde de já te agradeço pela força.

Convertendo Sistema do GASPRO para Harbour

Enviado: 06 Dez 2023 19:05
por alxsts
Olá!
alxsts escreveu:Onde estou errando?
Acho que entendi. Precisa passar um arquivo aberto para a função. Depois vou testar.

Convertendo Sistema do GASPRO para Harbour

Enviado: 06 Dez 2023 19:18
por Itamar M. Lins Jr.
Olá!
geralmente eu escolho a opção de imprimir direto,
Neste caso não pode, pois quem controla a impressão é o gerenciador do windows.
Precisa usar as novas funções do Harbour(windows) para isso.
Basicamente existe duas formas, TXT ou arquivo com meta dados.(?) -> Já desenhado via a classe WIN_PRN().
Criou o arquivo "Pedido.PDF". Ao abri-lo (Chrome),
Não entendi nada. Alxsts
Mas Win_PrintFileRaw() é enviado texto puro para o gerenciador do windows.
Para gerar em PDF use a classe WIN_PRN().

Código: Selecionar todos

*********************************
Function PrintWinPrn(cArq,cPrint)
*********************************
*
*
Local oPrn, aPrn:=WIN_PRINTERLIST(), n := 0
if empty(aPrn)
   alert('Não há impressoras instaladas')
   return .f.
endif
If cPrint == Nil
   cPrint := win_PrinterGetDefault()
EndIf

oPrn := win_prn():New(cPrint)
oPrn : LandScape := .F.
oPrn : FormType  := WIN_DMPAPER_A4 
oPrn : Copies    :=  1
oPrn : CharSet(255)
//oPrn : setfont('Courier New',,10,{ 4, -70 },,,255)
oPrn : SetFont( "Lucida Console", 8, { 4, -70 } )
If !oPrn:Create()
   alert("Não foi criado documento")
   Return Nil
EndIf
If !oPrn:startDoc("Imprimindo Documento")
   alert("Erro na Impressora")
   Return Nil
EndIf

HB_CDPSelect("PT850")
  //setprc(7,0)
  cText := memoread(cArq)
  nLinh := mlcount(cText)
  oPrn:NewLine()
  oPrn:NewLine()
  For n := 1 to nLinh
     oPrn:Textout(WIN_ansitooem(memoline(cText,,n)),.t.)
  Next
  oPrn:EndDoc()

HB_CDPSelect( "PTISO")

Return .t.
Ajustar a fonte de letra conforme 132/80/60 colunas.
Ps. No caso das etiquetas, a impressora precisa aceitar modo RAW texto puro, estou me referindo a ARGOX 214 por exemplo.

Saudações,
Itamar M. Lins Jr.

Convertendo Sistema do GASPRO para Harbour

Enviado: 07 Dez 2023 11:37
por bcm
Bom dia!

A impressora que eu preciso imprimir a etiqueta é a Bematech L42 DT.
A impressão é de etiquetas de produtos com o código de barras.
Eu consegui fazer imprimir, mas o código de barras não está saindo, está substituindo as barras por outros caracteres.

Convertendo Sistema do GASPRO para Harbour

Enviado: 07 Dez 2023 13:07
por Itamar M. Lins Jr.
Olá!
Verifique a pagina de código do sistema.
Tem que imprimir no arquivo da forma que manda para impressora quando era DOS.
Teste com o CLIPPER mandando para arquivo e jogando para impressora. Compare com a mesma impressão do Harbour.
Deve ser a página de código, o padrão do clipper é 437.
Mude para:

Código: Selecionar todos

HB_CDPSelect("CP437")
Antes de mandar imprimir.
Depois volte para sua PTISO, que é o português.(não sei se está usando assim).

Saudações,
Itamar M. Lins Jr.

Impressão de Etiqueta na Bematech / Elgin L42 DT

Enviado: 10 Dez 2023 09:33
por bcm
Bom dia!
Estou precisando imprimir etiquetas de produtos com o código de barras na Impressão de Etiqueta na Bematech / Elgin L42 DT, alguém teria um exemplo de código fonte feito em harbour que pudesse me enviar. Detalhe, meu sistema era desenvolvido em clipper e gaspro 4.0 e eu compilei para harbour, está em modo console.

Convertendo Sistema do GASPRO para Harbour

Enviado: 30 Jan 2024 17:52
por bcm
Boa tarde!

Meu sistema era feito em gaspro40 eu compilei em modo console.
No windows 7 e 10 roda perfeitamente.
Alguém sabe me dizer se ele rodaria normalmente no windows 11?

Convertendo Sistema do GASPRO para Harbour

Enviado: 01 Fev 2024 11:08
por marco.prodata
bcm escreveu:Boa tarde!

Meu sistema era feito em gaspro40 eu compilei em modo console.
No windows 7 e 10 roda perfeitamente.
Alguém sabe me dizer se ele rodaria normalmente no windows 11?
99,999999% que sim

Convertendo Sistema do GASPRO para Harbour

Enviado: 01 Fev 2024 14:14
por bcm
Boa tarde!

Obrigado amigo.

Um grande abraço.

Convertendo Sistema do GASPRO para Harbour

Enviado: 24 Abr 2024 17:00
por bcm
Meu sistema era feito em gaspro40 eu compilei em modo console e sempre carrega um tela preta antesde carregar o sistema.
Teria como maneira de não aparecer está tela?

Convertendo Sistema do GASPRO para Harbour

Enviado: 24 Abr 2024 19:24
por JoséQuintas
Adicione na compilação -GUI