Página 1 de 3
QR Code
Enviado: 22 Mar 2009 19:06
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
Re: QR Code
Enviado: 26 Mar 2009 14:00
por sygecom
Pode gerar direto usando as API do Google,
Em anexo um exemplo com Hwgui + Api do Google
QR Code
Enviado: 23 Nov 2014 00:45
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
QR Code
Enviado: 24 Nov 2014 16:27
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
QR Code
Enviado: 24 Nov 2014 16:36
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
QR Code
Enviado: 25 Nov 2014 08:47
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
QR Code
Enviado: 25 Nov 2014 10:08
por Kapiaba
QR Code
Enviado: 25 Nov 2014 10:16
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.
QR Code
Enviado: 04 Dez 2014 02:36
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
QR Code
Enviado: 04 Dez 2014 04:20
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().
QR Code
Enviado: 04 Dez 2014 09:48
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.
QR Code
Enviado: 04 Dez 2014 14:31
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
QR Code
Enviado: 04 Dez 2014 14:38
por Kapiaba
Lástima no saber MiniGUI.
Yo sólo entiendo de FiveWin.
Esperemos que las personas que usan MiniGUI Puedan Ajudarte
Gracias, Saludos.
QR Code
Enviado: 04 Dez 2014 16:48
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
QR Code
Enviado: 04 Dez 2014 17:50
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