Convertendo Sistema do GASPRO para Harbour

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

Moderador: Moderadores

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

Convertendo Sistema do GASPRO para Harbour

Mensagem 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.
Saudações,
Itamar M. Lins Jr.
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Convertendo Sistema do GASPRO para Harbour

Mensagem 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...
[]´s
Alexandre Santos (AlxSts)
bcm
Usuário Nível 3
Usuário Nível 3
Mensagens: 101
Registrado em: 02 Set 2012 00:48
Localização: volta redonda/rj

Convertendo Sistema do GASPRO para Harbour

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

Convertendo Sistema do GASPRO para Harbour

Mensagem 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.
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/
bcm
Usuário Nível 3
Usuário Nível 3
Mensagens: 101
Registrado em: 02 Set 2012 00:48
Localização: volta redonda/rj

Convertendo Sistema do GASPRO para Harbour

Mensagem 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.
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Convertendo Sistema do GASPRO para Harbour

Mensagem por alxsts »

Olá!
alxsts escreveu:Onde estou errando?
Acho que entendi. Precisa passar um arquivo aberto para a função. Depois vou testar.
[]´s
Alexandre Santos (AlxSts)
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

Convertendo Sistema do GASPRO para Harbour

Mensagem 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.
Saudações,
Itamar M. Lins Jr.
bcm
Usuário Nível 3
Usuário Nível 3
Mensagens: 101
Registrado em: 02 Set 2012 00:48
Localização: volta redonda/rj

Convertendo Sistema do GASPRO para Harbour

Mensagem 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.
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

Convertendo Sistema do GASPRO para Harbour

Mensagem 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.
Saudações,
Itamar M. Lins Jr.
bcm
Usuário Nível 3
Usuário Nível 3
Mensagens: 101
Registrado em: 02 Set 2012 00:48
Localização: volta redonda/rj

Impressão de Etiqueta na Bematech / Elgin L42 DT

Mensagem 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.
bcm
Usuário Nível 3
Usuário Nível 3
Mensagens: 101
Registrado em: 02 Set 2012 00:48
Localização: volta redonda/rj

Convertendo Sistema do GASPRO para Harbour

Mensagem 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?
Anexos
tela sistcom.png
marco.prodata
Usuário Nível 3
Usuário Nível 3
Mensagens: 238
Registrado em: 30 Nov 2018 10:07
Localização: Caratinga

Convertendo Sistema do GASPRO para Harbour

Mensagem 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
bcm
Usuário Nível 3
Usuário Nível 3
Mensagens: 101
Registrado em: 02 Set 2012 00:48
Localização: volta redonda/rj

Convertendo Sistema do GASPRO para Harbour

Mensagem por bcm »

Boa tarde!

Obrigado amigo.

Um grande abraço.
bcm
Usuário Nível 3
Usuário Nível 3
Mensagens: 101
Registrado em: 02 Set 2012 00:48
Localização: volta redonda/rj

Convertendo Sistema do GASPRO para Harbour

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

Convertendo Sistema do GASPRO para Harbour

Mensagem por JoséQuintas »

Adicione na compilação -GUI
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/
Responder