QR Code

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

Moderador: Moderadores

Avatar do usuário
Luciano Bonfim
Usuário Nível 3
Usuário Nível 3
Mensagens: 414
Registrado em: 23 Ago 2007 09:34
Localização: Rio de Janeiro / São Paulo
Contato:

QR Code

Mensagem por Luciano Bonfim »

Alguem conhece alguma DLL que eu possa usar, que crie uma imagem QR Code ?
QR Code é uma imagem em 2D similar ao código de barrasmas que comporta até set mil e poucos caracteres

Muito Obrigado
Muito Obrigado,

Luciano Bonfim de Azevedo
www.bonfim.com.br
luciano@bonfim.com.br
www.linkedin.com/in/lucianobonfim
Skype : lucianobonfim
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: QR Code

Mensagem por sygecom »

Pode gerar direto usando as API do Google,
Em anexo um exemplo com Hwgui + Api do Google
Anexos
iesample.prg
(2.02 KiB) Baixado 1129 vezes
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Adalberto
Usuário Nível 3
Usuário Nível 3
Mensagens: 343
Registrado em: 01 Set 2007 01:09
Localização: Santa Cruz de la Sierra - Bolivia

QR Code

Mensagem por Adalberto »

Caro, Luciano, boa noite.

Se que foi há muitos anos atrás que você procurou solução para os códigos QR.

Eu me pergunto se você lograstes imprimir esses códigos a partir da sua aplicação, eu estou trabalhando com Ext MiniGUI, e eu estou necesitanto para gerar e imprimir códigos QR, do meu aplicativo.

Eu li em \ MiniGUI \ Samples \ Avançado \ HMG_Zebra mas não consegue encontrar donde inserir o texto (que eu preciso apenas ao texto, alfa numérico), por exemplo: 978 389 011 / Pneus 14 x 16, mountain / $ 89,20 / 2014/02/14

Por favor me ajude, espero sua resposta.

Muito obrigado !!

Adalberto
Avatar do usuário
oxent_jabah
Usuário Nível 1
Usuário Nível 1
Mensagens: 30
Registrado em: 26 Dez 2008 11:29
Localização: Juazeiro do Norte-Ce-Brasil

QR Code

Mensagem por oxent_jabah »

Caro Adalberto,

Na pasta "contrib" do harbour existe um projeto de nome "hbzebra" e neste tem vários testes com códigos de barras, inclusive com QRCODE. Veja se lhe atende.

Cecílio
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

QR Code

Mensagem por Kapiaba »

// Seria +- assim usando a dll QRCodelib.Dll

Código: Selecionar todos

FUNCTION GERAR_QRCode()

   LOCAL cStr, cFile

   cStr:="conteúdo do_qrcode"

   cFile:="c:\arq.bmp"
 
   QRcode(cStr,cFile)

RETURN NIL
 
FUNCTION QRcode( cStr, cFile )

   #Define DC_CALL_STD  0x0020

   LOCAL qrDLL

   Generar_QR( cStr, cFile )

RETURN(NIL)

FUNC Generar_QR( cStr, cFile )

   LOCAL nResp
   LOCAL qrDLL

   qrDLL:=LoadLibrary("QRCodelib.Dll" )

   nResp:=DllCall(qrDLL,DC_CALL_STD,"FastQRCode",cStr,cFile)

   FreeLibrary(qrDLL)

RETURN NIL
abs
Adalberto
Usuário Nível 3
Usuário Nível 3
Mensagens: 343
Registrado em: 01 Set 2007 01:09
Localização: Santa Cruz de la Sierra - Bolivia

QR Code

Mensagem por Adalberto »

Caros amigos, bom dia.
Muito obrigado por suas respostas, e obrigado pela vontade de cooperar.

Eu preciso criar o código QR, sem internet, parece que a solução proposta por kapiaba é adequada, mas preciso saber como dicer para a librería que trabalhe com o nível H para a capacidade de correção de erros.

Por favor, me judem com estos detalhes.

Cordiais saudações e minha oração por vóces desejando prosperidade.

[ ]Adalberto
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

QR Code

Mensagem por Kapiaba »

Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

QR Code

Mensagem por Kapiaba »

Basei-se aqui: É em Fivewin, mas basta adaptar para seu uso.

Código: Selecionar todos

#Include "FiveWin.ch"

* HBZEBRA.LIB

* *********************************************************
* PROCEDURE MAIN
* PRINT oPRN PREVIEW
* PAGE
* EanQRCode(oPRN,50,50,1,"www.veneziasoft.com")
* ENDPAGE
* ENDPRINT
* RETURN
* *********************************************************

* iFlags = estratto da QRCODE.C della libreria HBZEBRA.LIB
*
* #define HB_ZEBRA_FLAG_QR_LEVEL_MASK 0x0700
* #define HB_ZEBRA_FLAG_QR_LEVEL_L 0x0100
* #define HB_ZEBRA_FLAG_QR_LEVEL_M 0x0200
* #define HB_ZEBRA_FLAG_QR_LEVEL_Q 0x0300
* #define HB_ZEBRA_FLAG_QR_LEVEL_H 0x0400
*
* switch( iFlags & HB_ZEBRA_FLAG_QR_LEVEL_MASK )
* {
* case HB_ZEBRA_FLAG_QR_LEVEL_M:
* iLevel = 1;
* break;
* case HB_ZEBRA_FLAG_QR_LEVEL_Q:
* iLevel = 2;
* break;
* case HB_ZEBRA_FLAG_QR_LEVEL_H:
* iLevel = 3;
* break;
* default:
* iLevel = 0;
* break;
*

* *********************************************************
* EanQRCode(oPRN, nY, nX, nWidth, nQRCODE, nColor, iFlags)
*
* oPRN = Output Device
* nY = Rigo di inizio stampa
* nX = Colonna di inizio stampa
* nWidth = Spessore del QRCODE - default = 1
* nQRCODE = Stringa del QRCODE
* nColor = Colore del QRCODE - default = CLR_BLACK
* iFlags = Flags
*
* *********************************************************

******************************************************************
Function EanQRCode(oPRN, nY, nX, nWidth, nQRCODE, nColor, iFlags)

   Local hCODE,oBRUSH,nRET
   Local nCLR:=IIF(nColor<>NIL,nColor,CLR_BLACK)
   Local nLineWidth:=IIF(nWidth==NIL .OR. nWidth<1,1,nWidth)
   Local nLineHeight:=nLineWidth
   Local nSCALE:=7.2

   hCODE:=hb_zebra_create_qrcode(nQRCODE,iFlags)

   nY *= nSCALE
   nLineWidth *= nSCALE

   IF hCODE != NIL

      IF hb_zebra_geterror( hCODE ) == 0

         IF Empty( nLineHeight )
            nLineHeight := 16
         ENDIF

         IF hb_zebra_geterror( hCODE ) != 0
            RETURN HB_ZEBRA_ERROR_INVALIDZEBRA
         Endif

         DEFINE BRUSH oBRUSH COLOR nCLR

         nRET:=hb_zebra_draw( hCODE, {|x,y,w,h| oPRN:FillRect({Int(y+.5), Int(x+.5), Int(y+.5)+Int(h)+1, Int(x+.5)+Int(w)},oBRUSH) }, nX*nSCALE, nY, nLineWidth, nLineHeight*nSCALE )

         oBRUSH:End()

      Endif

      hb_zebra_destroy( hCODE )

   Endif

Return nRET
abs.
Adalberto
Usuário Nível 3
Usuário Nível 3
Mensagens: 343
Registrado em: 01 Set 2007 01:09
Localização: Santa Cruz de la Sierra - Bolivia

QR Code

Mensagem por Adalberto »

Kapiaba, boa noite.

Poderia me dicer qual e a function o comando para DllCall porque em essa linea da erro, noa reconoce esa function.

Aguardo sua ajuda.

Muito obrigado.

[ ] Adalberto
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

QR Code

Mensagem por rochinha »

Amiguinhos,
Poderia me dicer qual e a function o comando para DllCall porque em essa linea da erro, noa reconoce esa function.
Tenta la funcion CallDLL().
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

QR Code

Mensagem por Kapiaba »

Buenas Adalberto, que usas para compilar tus desarrolos?

Mira este post, porfa:

https://pctoledo.org/forum/viewto ... f=4&t=6009

Gracias, Saludos.
Adalberto
Usuário Nível 3
Usuário Nível 3
Mensagens: 343
Registrado em: 01 Set 2007 01:09
Localização: Santa Cruz de la Sierra - Bolivia

QR Code

Mensagem por Adalberto »

Kapiaba, buenas tardes.

Muchas gracias por responder y por ayudarme.

Logré generar el código QR de la siguiente manera, y funciona bien.

Código: Selecionar todos

#include 'minigui.ch'
DECLARE DLL_TYPE_HBITMAP FastQRCode (DLL_TYPE_LPCSTR file, DLL_TYPE_LPCSTR path) IN QrCodeLib.dll
//
[b]Function QrCodigo()[/b]
cTexto:= '3188075019|120.54|22/04/2014' // Cualquier texto
cFile:= "facturaqr.bmp" // Puede ser [U:][ruta]<Arquivo.Ext>
FastQRCode(cTexto, cFile)
RETURN NIL
Como puedes ver amigo kapiaba, estoy trabajando con MiniGuiExt Ver. 2.3.3

Imprimo con DosPrinter, pregunto: hay alguna otra menera de imprimir? tal vez con con los comandos propios del lenguaje?

Espero tu respuesta, un atento saludo desde Santa Cruz de la Sierra - Bolivia.

[ ] Adalberto
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

QR Code

Mensagem por Kapiaba »

Lástima no saber MiniGUI.

Yo sólo entiendo de FiveWin.

Esperemos que las personas que usan MiniGUI Puedan Ajudarte

Gracias, Saludos.
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

QR Code

Mensagem por rochinha »

Amiguinho,

A classe DOSPrint e a classe tDOSPrn es Puramente texto, trabalhando em baixo nível. talvez devesse USAR outras classes com Modo gráfico.

Talvez devas USAR a classe win32prn, mas ela faz parte xHarbour e não sei se Funciona bem no Harbour.

Veja exemplos de uso da classe win32prn:

Primeiro

Segundo

Exemplo simples de uso da classe:

Código: Selecionar todos

#define SALTO_PAGINA chr(12)

********************************
FUNCTION Imprime( cArq, tamrel ) // arquivo e tamanho da linha
********************************
   local cTexto, nLinhas, nA, cLinha, oPrinter := win32prn()

   oPrinter:New( GetDefaultPrinter() )
   oPrinter:Landscape := .F.
   oPrinter:FormType  := 9
   oPrinter:Copies    := 1

   if !oPrinter:Create()
      Alert("Não foi possível criar a impressão")
      return NIL
   endif
   if ! oPrinter:StartDoc("Impressao xharbour")
      Alert("StartDoc() - falhou ")
      return NIL
   endif
   oPrinter:SetDefaultFont()
   if tamrel > 80
      oPrinter:setfont(,,17,,,,255)
   else
      oPrinter:setfont(,,11,,,,255)
   endif

   oPrinter:TextOut( space(tamrel), .T. )
   cTexto  := memoread( cArq )
   nLinhas := mlcount( cTexto, tamrel, 1, .F. )
   for nA := 1 to nLinhas
      cLinha := memoline( cTexto, tamrel, nA, 1, .F. )
      if left( alltrim( cLinha ), 1 ) == SALTO_PAGINA
         oPrinter:NewPage()
      else
         oPrinter:TextOut( cLinha, .T. )
      endif
   next
   oPrinter:EndDoc()
   oPrinter:Destroy()
RETURN NIL
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Adalberto
Usuário Nível 3
Usuário Nível 3
Mensagens: 343
Registrado em: 01 Set 2007 01:09
Localização: Santa Cruz de la Sierra - Bolivia

QR Code

Mensagem por Adalberto »

Maestro rochinha, boa tarde.

Muchas gracias por la ayuda, en verdad no me expresé bien, estoy usando para imprimir el DosPrinter de Bojan Banko, tambien imprime gráficos, es muy bueno pero no deja de ser un software externo a nuestros sistemas, entonces pensé que puedo empezar a estudiar el uso de comandos internos.

Estudiaré los ejemplos que me has propuesto.

Ahora, tal vez puedas ayudarme o quizas tengo que abrir otro post:

Como se hace para saber todos los parametros que podemos pasarle a un archivo .DLL, por ejemplo como podría decirle a QRCodeLib.DLL que trabaje con el nivel H.
(Capacidad de corrección de errores).

Gracias!!!, continuaré en oración pidiendo prosperidad y salud para todos ustedes.

[ ] Adalberto
Responder