SOLUCAO: Geração de QRCode

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

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

SOLUCAO: Geração de QRCode

Mensagem por rochinha »

Amiguinhos,

Depois de queimar pestanas eis aqui a minha solução:

Código: Selecionar todos

//
// SDK para QRCode
// Proposito: Gerar código modelo QR para uso em aplicativos diversos
// Necessário: QRCodeLib.dll
// Linguagem: Foi utilizada Harbour, mas pode ser portada a qualquer outra.
// Data: 7 de Dezembro de 2014
// Autor: Jose Carlos da Rocha - Rochinha
//
#define ForFivewin

#IFDEF ForFivewin
       #include "fivewin.ch"
#ENDIF

// Niveis de Correcao(correctionLevel)
#define LEVEL_L 0 // 7%
#define LEVEL_M 1 // 15%
#define LEVEL_Q 2 // 25%
#define LEVEL_H 3 // 30%

// Nivel de codificacao(encoding)
#define ENC_ALPHA 0 // encodes alphanumeric characters (digits 0 - 9; upper case letters A -Z; nine other characters: space, $ % * + - . / : ); )
#define ENC_BYTE 1    // encodes binary values ( 8-bit data)
#define ENC_NUMERIC 2 // encodes numeric values only (digits 0-9)
#define ENC_KANJI 3   // encodes Kanji characters. Kanji characters in QR Code can have values 8140 -9FFC and E040 - EBBF
#define ENC_AUTO 4    // automatic seleccion of the encoding algorithm

#IFDEF ForFivewin
       //----------------------------------------------------------------------------//
       // Copyright FiveTech 1993-2011
       #ifndef _C_TYPES
          #define _C_TYPES
          #define VOID     0
          #define BYTE     1
          #define CHAR     2
          #define WORD     3
          #define _INT     7
          #define BOOL     5
          #define BOOLEAN  5
          #define HDC      6
          #define LONG     7
          #define STRING   8
          #define LPSTR    9
          #define PTR     10
          #define _DOUBLE 11         // conflicts with BORDER DOUBLE
          #define DWORD   12
       #endif
       #translate NOREF([@]<x>) => <x>
       #xcommand DLL32 [<static:STATIC>] FUNCTION <FuncName>( [ <uParam1> AS <type1> ] ;
                                                      [, <uParamN> AS <typeN> ] ) ;
             AS <return> [<pascal:PASCAL>] [ FROM <SymName> ] LIB <*DllName*> ;
       => ;
          [<static>] function <FuncName>( [NOREF(<uParam1>)] [,NOREF(<uParamN>)] ) ;;
             local _hDLL := If( ValType( <DllName> ) == "N", <DllName>, LoadLib32( <(DllName)> ) ) ;;
             local uResult ;;
             local cFarProc ;;
             if Abs( _hDLL ) <= 32 ;;
                MsgAlert( "Error code: " + LTrim( Str( _hDLL ) ) + " loading " + <DllName> ) ;;
             else ;;
                cFarProc = GetProc32( _hDLL,;
                If( [ Empty( <SymName> ) == ] .t., <(FuncName)>, <SymName> ),;
                [<.pascal.>], <return> [,<type1>] [,<typeN>] ) ;;
                uResult = FWCallDLL32( cFarProc [,<uParam1>] [,<uParamN>] ) ;;
                If( ValType( <DllName> ) == "N",, FreeLib32( _hDLL ) ) ;;
             end ;;
          return uResult
       //----------------------------------------------------------------------------//
#ENDIF

FUNCTION Main()
   hDLL = LoadLib32( "QRCodeLib.dll" )
   Principal()
   FreeLibrary( hDLL )
   return nil

FUNCTION Principal()

   LOCAL cStr, cFile

   cStr:="http://www.5volution.com.br/mobile"

   //cFile:=".\QRCode.bmp"
 
   //FastQRCode(cStr,cFile)

   cFile:=".\QRCodeF.bmp"

   FullQRCode( .T., .F., nRGB(055,155,255), nRGB(0,0,0), cStr, LEVEL_M, ENC_AUTO, 5, 5, 300, 300, cFile )

RETURN NIL
 
#IFNDEF ForFivewin
        FUNCTION FastQRCode( cStr, cFile )
          #Define DC_CALL_STD  0x0020
          LOCAL nResp
          LOCAL qrDLL
          qrDLL := LoadLibrary( "QRCodelib.Dll" )
          nResp := CallDll( qrDLL, DC_CALL_STD, "FastQRCode", cStr, cFile )
          FreeLibrary( qrDLL )
          RETURN NIL

        FUNCTION FullQRCode( cStr, cFile )
          #Define DC_CALL_STD  0x0020
          LOCAL nResp
          LOCAL qrDLL
          qrDLL := LoadLibrary( "QRCodelib.Dll" )
          nResp := CallDll( qrDLL, DC_CALL_STD, "FullQRCode", autoConfigurate, AutoFit, backColor AS _INT, barColor, Texto, correctionLevel, encoding, marginpixels AS, moduleWidth, Height, Width, FileName )
          FreeLibrary( qrDLL )
          RETURN NIL
#ENDIF

#IFDEF ForFivewin
       DLL32 Function QRCodeLibVer() AS LPSTR FROM "QRCodeLibVer" LIB hDLL
       DLL32 Function FastQRCode( Texto AS LPSTR, FileName AS LPSTR ) AS LPSTR FROM "FastQRCode" LIB hDLL
       DLL32 Function FullQRCode( autoConfigurate AS BOOL, AutoFit AS BOOL, ;
          backColor AS _INT, barColor AS _INT, ;
          Texto AS LPSTR, ;
          correctionLevel AS _INT, ; // Pode ser Low, Medium, High e VeryHigh
          encoding AS _INT, ;
          marginpixels AS _INT, moduleWidth AS _INT, ;
          Height AS _INT, Width AS _INT, ;
          FileName AS LPSTR ) AS LPSTR FROM "FullQRCode" LIB hDLL
#ENDIF

FUNCTION nRGB( nRed, nGreen, nBlue ) 
   RETURN ( nRed + ( nGreen * 256 ) + ( nBlue * 65536 ) ) 
Voce precisarão fazer download aqui.
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.
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

SOLUCAO: Geração de QRCode

Mensagem por rochinha »

Amiguinhos,

Deixem suas impressões(cometários) sobre as soluções encontradas no forum, assim ficamos cientes que as mesmas estão surtindo efeito e servindo ao uso.
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.
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

SOLUCAO: Geração de QRCode

Mensagem por asimoes »

Rochinha,

Aproveitando o seu exemplo para quem quiser fazer os testes com harbour:

Código: Selecionar todos

#include "simpleio.ch"
#include "wvtwin.ch"
#include "hbcompat.ch"
#include "hbgtinfo.ch"
#include "hbgtwvg.ch"
#include "wvgparts.ch"
#include "dbinfo.ch"
#include "fileio.ch"
#include "hbdyn.ch"
#include "common.ch"
#include "set.ch"
#include "inkey.ch"

FUNCTION Main()
   
   hLib := hb_libLoad( "QRCodeLib.dll" )
   
   cFile:=".\QRCode_"+"3"+"_"+"0"+".bmp"
   
   cStr:="http://www.rio.rj.gov.br/"
   
   hb_DynCall( { "FastQRCode", hLib, HB_DYN_CALLCONV_STDCALL}, cStr, cFile )
   
   cFile:=".\QRCode_"+"3"+"_"+"1"+".bmp"
   
   cStr:="www.globo.com"
    
   hb_DynCall( { "FullQRCode", hLib, HB_DYN_CALLCONV_STDCALL  }, .T., .F., RGBCor(255,255,255), RGBCor(0,0,0), cStr, ;
               3,; 
               1,;
               5, 5, 200, 200, cFile )
   
   hb_libFree( hLib )
   
   
RETURN Nil
   
FUNCTION RGBCor( nRed, nGreen, nBlue )
RETURN nRed + ( nGreen * 256 ) + ( nBlue * 256 * 256 )

Código: Selecionar todos

#---------------------------
# Nome do Execut vel
# ---------------------------
-oQrCode
# ---------------------------
# Bibliotecas
# ---------------------------
-lhwgui
-lprocmisc
-lhbct
-lhbgt
-lgtwvg
-lgtwvt
-lhbwin
-lhbnf
-lhbtip
-lxhb
-lhbnetio
-lhbhpdf
-llibhpdf
-lpng
-lhbzebra
-lhbmemio
-lhbxpp
-lhbmisc
gtwvg.hbc
rddsql.hbc
rddado.hbc
# ---------------------------
# Caminhos dos Includes
# ---------------------------
-incpath=\HB32CORE\hwgui\include;\HB32CORE\include;
# ---------------------------
# Caminho das Libs da HwGui
# ---------------------------
-L\HB32CORE\hwgui\lib;.\
# ---------------------------
# Outros Parƒmetros
# ---------------------------
-workdir=.\OBJMINGW\
-gtgui
-head=full
-n
-warn=no
-inc
#Para compactar o executável.
#-compr 
-b
-mt
-dVERSAO_MINGW
# ---------------------------
# Prg(s) e Rc(s)
# ---------------------------
qrcode.prg
Anexos
QRCodeLib.zip
Dll para testar.
(203.73 KiB) Baixado 590 vezes
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

SOLUCAO: Geração de QRCode

Mensagem por JoséQuintas »

https://github.com/vszakats/harbour-cor ... arupdf.prg

https://github.com/vszakats/harbour-cor ... wingdi.prg
2016-02-28 22:14 UTC+0100 Viktor Szakats (vszakats users.noreply.github.com)
* contrib/hbzebra/qrcode.c
* ChangeLog.txt
* url updates
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/
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

SOLUCAO: Geração de QRCode

Mensagem por Kapiaba »

Rochinha, hb_out.log

Código: Selecionar todos

Application Internal Error - C:\DOWNLOAD\QRCode\qrcode.exe
Terminated at: 2016.12.07 14:54:19
Unrecoverable error 6005: Exception error:

    Exception Code:C0000096
    Exception Address:0012FBAC
    EAX:005A2424  EBX:00000000  ECX:00000000  EDX:00000009
    ESI:004EE28C  EDI:004EE49A  EBP:005A2414
    CS:EIP:001B:0012FBAC  SS:ESP:0023:0012FB98
    DS:0023  ES:0023  FS:003B  GS:0000
    Flags:00010202
    CS:EIP: 0F 35 6A 76 60 FA 12 00 AE 19 79 00 78 FF 12 00
    SS:ESP: 742CB59F 74305888 00791250 00000000 00000000 766A350F 0012FA60 007919AE 0012FF78 7728E195 0154C9DF FFFFFFFE 772CFBD1 772D2199 0012FC34 0012FBF8

    C stack:
    EIP:     EBP:       Frame: OldEBP, RetAddr, Params...


Modules:
0x00400000 0x001BC000 C:\DOWNLOAD\QRCode\qrcode.exe
0x77270000 0x00142000 C:\Windows\SYSTEM32\ntdll.dll
0x6CD30000 0x0004E000 C:\Program Files\AVG\Av\avghookx.dll
0x761B0000 0x000D5000 C:\Windows\system32\kernel32.dll
0x742C0000 0x0004B000 C:\Windows\system32\KERNELBASE.dll
0x74ED0000 0x000A1000 C:\Windows\system32\ADVAPI32.DLL
0x752F0000 0x000AC000 C:\Windows\system32\msvcrt.dll
0x76190000 0x00019000 C:\Windows\SYSTEM32\sechost.dll
0x74A60000 0x000A2000 C:\Windows\system32\RPCRT4.dll
0x737E0000 0x00009000 C:\Windows\system32\VERSION.DLL
0x6ED30000 0x00051000 C:\Windows\system32\WINSPOOL.DRV
0x74800000 0x0004E000 C:\Windows\system32\GDI32.dll
0x74B10000 0x000C9000 C:\Windows\system32\USER32.dll
0x75530000 0x0000A000 C:\Windows\system32\LPK.dll
0x74E30000 0x0009D000 C:\Windows\system32\USP10.dll
0x734D0000 0x00084000 C:\Windows\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_5.82.7601.18837_none_ec86b8d6858ec0bc\COMCTL32.DLL
0x74890000 0x0007B000 C:\Windows\system32\COMDLG32.DLL
0x75290000 0x00057000 C:\Windows\system32\SHLWAPI.dll
0x75540000 0x00C4C000 C:\Windows\system32\SHELL32.dll
0x737F0000 0x00005000 C:\Windows\system32\MSIMG32.DLL
0x76290000 0x0015D000 C:\Windows\system32\OLE32.DLL
0x74760000 0x00091000 C:\Windows\system32\OLEAUT32.DLL
0x6B750000 0x0001C000 C:\Windows\system32\OLEDLG.DLL
0x74850000 0x00005000 C:\Windows\system32\PSAPI.DLL
0x74870000 0x0001F000 C:\Windows\system32\IMM32.DLL
0x753D0000 0x000CD000 C:\Windows\system32\MSCTF.dll
0x00300000 0x0006A000 C:\DOWNLOAD\QRCode\QRCodeLib.dll

Called from FWCALLDLL(0)
------------------------------------------------------------------------
Application Internal Error - C:\DOWNLOAD\QRCode\qrcode.exe
Terminated at: 2016.12.07 14:54:20
Unrecoverable error 6005: Exception error:

    Exception Code:C0000096
    Exception Address:0012FBAC
    EAX:005A2424  EBX:00000000  ECX:00000000  EDX:00000009
    ESI:004EE28C  EDI:004EE49A  EBP:005A2414
    CS:EIP:001B:0012FBAC  SS:ESP:0023:0012FB98
    DS:0023  ES:0023  FS:003B  GS:0000
    Flags:00010202
    CS:EIP: 0F 35 6A 76 60 FA 12 00 AE 19 79 00 78 FF 12 00
    SS:ESP: 742CB59F 74305888 00791250 00000000 00000000 766A350F 0012FA60 007919AE 0012FF78 7728E195 0154C9DF FFFFFFFE 772CFBD1 772D2199 0012FC34 0012FBF8

    C stack:
    EIP:     EBP:       Frame: OldEBP, RetAddr, Params...


Modules:
0x00400000 0x001BC000 C:\DOWNLOAD\QRCode\qrcode.exe
0x77270000 0x00142000 C:\Windows\SYSTEM32\ntdll.dll
0x6CD30000 0x0004E000 C:\Program Files\AVG\Av\avghookx.dll
0x761B0000 0x000D5000 C:\Windows\system32\kernel32.dll
0x742C0000 0x0004B000 C:\Windows\system32\KERNELBASE.dll
0x74ED0000 0x000A1000 C:\Windows\system32\ADVAPI32.DLL
0x752F0000 0x000AC000 C:\Windows\system32\msvcrt.dll
0x76190000 0x00019000 C:\Windows\SYSTEM32\sechost.dll
0x74A60000 0x000A2000 C:\Windows\system32\RPCRT4.dll
0x737E0000 0x00009000 C:\Windows\system32\VERSION.DLL
0x6ED30000 0x00051000 C:\Windows\system32\WINSPOOL.DRV
0x74800000 0x0004E000 C:\Windows\system32\GDI32.dll
0x74B10000 0x000C9000 C:\Windows\system32\USER32.dll
0x75530000 0x0000A000 C:\Windows\system32\LPK.dll
0x74E30000 0x0009D000 C:\Windows\system32\USP10.dll
0x734D0000 0x00084000 C:\Windows\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_5.82.7601.18837_none_ec86b8d6858ec0bc\COMCTL32.DLL
0x74890000 0x0007B000 C:\Windows\system32\COMDLG32.DLL
0x75290000 0x00057000 C:\Windows\system32\SHLWAPI.dll
0x75540000 0x00C4C000 C:\Windows\system32\SHELL32.dll
0x737F0000 0x00005000 C:\Windows\system32\MSIMG32.DLL
0x76290000 0x0015D000 C:\Windows\system32\OLE32.DLL
0x74760000 0x00091000 C:\Windows\system32\OLEAUT32.DLL
0x6B750000 0x0001C000 C:\Windows\system32\OLEDLG.DLL
0x74850000 0x00005000 C:\Windows\system32\PSAPI.DLL
0x74870000 0x0001F000 C:\Windows\system32\IMM32.DLL
0x753D0000 0x000CD000 C:\Windows\system32\MSCTF.dll
0x00300000 0x0006A000 C:\DOWNLOAD\QRCode\QRCodeLib.dll

Called from FWCALLDLL(0)
------------------------------------------------------------------------
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

SOLUCAO: Geração de QRCode

Mensagem por JoséQuintas »

Código: Selecionar todos

0x00300000 0x0006A000 C:\DOWNLOAD\QRCode\QRCodeLib.dll
Não sei se é o caso.
Geralmente isso acontece quando o parâmetro é de um tipo diferente do esperado.

Se for por referência, string, tem que ser de um tamanho igual ou maior que o retorno.

Código: Selecionar todos

x := Space(50000)
CallDll( "nome.dll", "funcao", @x )
Apenas como exemplo.
O mesmo se for int, double, etc.

O resultado seria o programa "invadir" uma área que não pertence a ele, acessando uma parte da memória de outro programa.
Só resta ao Windows considerar como sendo esse tipo de erro, GPF.
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
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

SOLUCAO: Geração de QRCode

Mensagem por rubens »

Com a HaruPDF funciona perfeitamente... mas aí a impressora tem estar instalada o driver spooler...

No exemplo da pasta C:\MiniGUI\SAMPLES\Advanced\HaruPDF acrescentei a linha do QrCode copiada do XML de uma NFCe e gerou o QrCode certinho... até leu pelo Android.
A função é esta
hb_zebra_create_qrcode( cCode, nFlags )
Gerou o PDF em anexo com o QR_Code... agora é só montar a NFCe. (Não estou com tempo agora, mas vou fazer) daí é indiferente de qual impressora, basta ter o driver spooler instalado e aceitar imprimir PDF.
TestHaru.pdf
(10.9 KiB) Baixado 501 vezes
Podem fazer um teste lendo o qr_code gerado aqui que ele vai direcionar para uma nfce no site da Sefaz-MT.

Rubens
"Eu e minha casa servimos ao Senhor e você ???"
Avatar do usuário
Mario Mesquita
Usuário Nível 4
Usuário Nível 4
Mensagens: 613
Registrado em: 08 Dez 2009 13:47
Localização: Rio de Janeiro

SOLUCAO: Geração de QRCode

Mensagem por Mario Mesquita »

Boa tarde, pessoal.

Gostaria de saber se essa solução do QR-Code roda para a HMG 3.0.46.

O "#include <hmg_hpdf.ch>" não foi reconhecido pelo compilador, talvez tenha outro nome lá.

Tô precisando muito disso e se alguem puder me dar uma luz agradeço!

Saudações,
Mario.
Avatar do usuário
Mario Mesquita
Usuário Nível 4
Usuário Nível 4
Mensagens: 613
Registrado em: 08 Dez 2009 13:47
Localização: Rio de Janeiro

SOLUCAO: Geração de QRCode

Mensagem por Mario Mesquita »

Boa tarde, amigos!

Ainda precisando daquela dica sobre o QR-Code. Agora estou tentando com a HMG 3.4.3. Como sempre a documentação disponível ajuda pouco, no manual on line "HMG Reference" sobre o HPDF, não fala nada sobre.

Essa dica do Rubens pode ser feita nela? Ou a MiniGui dele é a Extended?

Qualquer dica me ajuda, desde ontem correndo atrás disso...


Saudações,
Mario.
Avatar do usuário
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

SOLUCAO: Geração de QRCode

Mensagem por rubens »

Mário

Uso a Minigui Extends

Não sei se vai rodar na HMG.

Rubens
"Eu e minha casa servimos ao Senhor e você ???"
Avatar do usuário
Mario Mesquita
Usuário Nível 4
Usuário Nível 4
Mensagens: 613
Registrado em: 08 Dez 2009 13:47
Localização: Rio de Janeiro

SOLUCAO: Geração de QRCode

Mensagem por Mario Mesquita »

Olá, Rubens!

O HMG também usa a HMG HPDF, talvez com alguma semelhança. Difícil está sendo encontrar algo que me auxilie.

Até achei alguma coisa, mas não deu certo, tipo isso aqui:

Código: Selecionar todos

		//// teste QR-Code //
      hBitMap := HMG_CreateBarCode( 'http://www.teste.com.br',;
                              "QRCODE",3,100,.T.,'',{0,0,0},{255,255,255},.F.,.F.,.F.)
      @ xLn+55,60 PRINT hBitMap //FONT "QRCODE" SIZE 12
Usando a MiniPrint. Talvez seja o caso de tentar na geração do PDF, mas acreditei que isso aí retornaria uma imagem que eu pudesse colar no documento que está sendo impresso.

É frustrante saber que o recurso está lá e vc não consegue usar. Lendo também descobri que dá pra gerar ou converter os PDFs para PDF/A, que é um tipo para documentos eletrônicos muito usado pelo governo. Preciso disso também e achei alguma coisa nas pastas do programa, mas cadê documentação? Até guardei o que achei para buscar e tentar entender:

Código: Selecionar todos

- Achado em \hmg 3.4.3\harbour\contrib\hbhpdf\harupdf.ch :

/* PDF/A mode * /
#define HPDF_PDFA_1A                        0
#define HPDF_PDFA_1B                        1    <--- Pelo manual do TJ, o formato é esse.

Pode ser útil em converter o PDF normal para o PDF/A.

- Achado em \hmg 3.4.3\harbour\contrib\hbzebra\hbzebra.ch :

#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

Pode ser útil em preparar o QR-Code.
Quem tiver uma dica pra dar, estamos aí.

Saudações,
Mario.
Avatar do usuário
Mario Mesquita
Usuário Nível 4
Usuário Nível 4
Mensagens: 613
Registrado em: 08 Dez 2009 13:47
Localização: Rio de Janeiro

SOLUCAO: Geração de QRCode

Mensagem por Mario Mesquita »

Bom dia, pessoal.

Depois de pesquisar o dia todo sem sucesso, à noite dei um passo á frente para gerar o QR-Code num documento.

Relendo algumas coisas, notei que uma função que testei sem sucesso tinha um parâmetro de criação de um arquivo .PNG com o QR_Code. Em tese, funcionou. Claro que tem que testar se o código será lido corretamente e ainda não o fiz, mas devo testar isso em breve.

Se alguém estiver precisando e quiser tentar a sorte, aí está:

Código: Selecionar todos

		//// teste QR-Code //
      hBitMap := HMG_CreateBarCode( 'http://www.teste.com.br',;
                              "QRCODE",3,100,.T.,'QRTeste.png',{0,0,0},{255,255,255},.F.,.F.,.F.)
      msginfo(hbitmap)
		if ! file("QRTeste.png")
         msginfo('não achei o png')
      else   
         msginfo('achei o png')
		endif                        
   	@ xln+55,10 PRINT IMAGE "QRTeste.png" ;
	   	    	   WIDTH  45                 ;
                  HEIGHT 20                 ;
                  STRETCH
      
Adianto que não fiz refino nenhum, consegui isso de madrugada, no documento o QR saiu meio alongado pois copiei de um trecho do meu programa, mas creio que dando um trato existe uma boa chance de ser uma solução relativamente simples.

Querendo se aprofundar ou testar novas possibilidades, esse programa está na medida, mas tem uma falha: Na hora de criar o .PNG, acho que ele está gravando sem a extensão e não é reconhecido como tal. A solução é colocar o ".png" junto com o nome. Aí funciona. Ver em: C:\hmg.3.4.3\SAMPLES\HFCL\HMG_Zebra

Saudações,
Mario.
Avatar do usuário
Mario Mesquita
Usuário Nível 4
Usuário Nível 4
Mensagens: 613
Registrado em: 08 Dez 2009 13:47
Localização: Rio de Janeiro

SOLUCAO: Geração de QRCode

Mensagem por Mario Mesquita »

Boa tarde, pessoal.

Reativando esse post para pedir ajuda a vocês.

Como expliquei aqui na época, deu pra resolver o QR-Code com a função HMG_CreateBarCode() e tudo estava bem até agora.

O que aconteceu? Tem uma falha na função. Para gerar com URLs em geral, tudo bem. Tá funcionando até hoje.

Mas surgiu uma exigência em que tenho que colocar um texto e ao gerar o QR, ele sai faltando uma parte, o fim do lado direito, impedindo a leitura.

Tem um demo em C:\hmg.3.4.4\SAMPLES\HFCL\HMG_Zebra, e lá pode-se testar com diversos caracteres de texto e em alguns casos gera o QR "defeituoso".

A pergunta é: será que houve alguma correção para essa função? Pesquisando aqui, não vi.

Não tendo solução, qual a alternativa mais prática e rápida pra gerar um QR Code e colar no documento?

Desde já, agradeço a ajuda de vocês.

Saudações,
Mario.
Avatar do usuário
Mario Mesquita
Usuário Nível 4
Usuário Nível 4
Mensagens: 613
Registrado em: 08 Dez 2009 13:47
Localização: Rio de Janeiro

SOLUCAO: Geração de QRCode

Mensagem por Mario Mesquita »

Boa tarde, pessoal.

Estou tentando usar o recurso que o Rochinha postou, pois atenderia o meu problema, mas está dando erro ao compilar:

"Error E0030 Syntax error "Syntax error at 'AS'. Abaixo, o trecho do código:

Código: Selecionar todos

	#IFNDEF ForFivewin
	        FUNCTION FastQRCode( cStr, cFile )
	          #Define DC_CALL_STD  0x0020
	          LOCAL nResp
	          LOCAL qrDLL
	          qrDLL := LoadLibrary( "QRCodelib.Dll" )
	          nResp := CallDll( qrDLL, DC_CALL_STD, "FastQRCode", cStr, cFile )
	          FreeLibrary( qrDLL )
	          RETURN NIL

	        FUNCTION FullQRCode( cStr, cFile )
	          #Define DC_CALL_STD  0x0020
	          LOCAL nResp
	          LOCAL qrDLL
	          qrDLL := LoadLibrary( "QRCodelib.Dll" )
                  // Aqui, nessa função CallDll:
	          nResp := CallDll( qrDLL, DC_CALL_STD, "FullQRCode", autoConfigurate, AutoFit, backColor AS _INT, barColor, Texto, correctionLevel, encoding, marginpixels AS, moduleWidth, Height, Width, FileName )
	          
	          FreeLibrary( qrDLL )
	          RETURN NIL
	#ENDIF
Se alguém conseguiu usar o recurso e puder me dar uma dica, agradeço. Estou compilando com HMG 3.4.4 Unicode.

Saudações,
Mario.
Responder