sexta-feira, 7 de dezembro de 2012

QR Code

Você sabia que o QrCode foi inventado pela Toyota? pois é, uma grande montadora japonesa necessitava de uma grande quantidade de informações em um espaço reduzido.  Aliás é assim que funciona o Japão: muita gente em um pequeno território. (peguei leve!)

QrCode é com certeza uma grande evolução na questão da geração de códigos de barras com alta capacidade de carga da informação, ou seja, que ultrapassam a necessidade de geração de simples números e códigos, pois o modelo trabalha em duas dimensões, ou seja, possui uma enorme capacidade de armazenamento (4Kb) e em um tamanho que pode ser significativamente reduzido, se comparado às fontes barcode tradicionais.

Esse é um recurso bem interessante para utilizarmos nos projetos GeneXus, e é o que faremos a seguir, com um pequeno projeto com o objetivo de armazenar informação num formato JSON em uma imagem QrCode.

SDT

O primeiro elemento que necessitamos para produzir um QrCode é informação, e o objeto Structured Data Type é um bom elemento para organizar e agrupar informações. A seguir apresentamos um pequeno exemplo de um SDT que armazena Código, Descrição, DataRecebimento e DataValidade de certo produto.
E em seguida podemos programar uma variável do tipo SDT, que armazene os diversos campos criados no SDT.

 &codigo.Codigo                = 1222333222
 &codigo.Descricao             = 'Mesa Executiva'
 &codigo.DataValidade          = #2020-10-02#
 &codigo.DataRecebimento       = #2012-10-02#

Gerando o QrCode
E em seguida um comando que chama um gerador de QrCodes da própria Artech, ou seja, aquele utilizado para gerar os QrCodes para instalação de aplicações Android e Blackberry no GeneXus Ev2. Observe que na chamada ao serviço já informamos qual o valor da imagem que o mesmo deverá produzir por meio do conteúdo em formato Texto.

&linkqr = link('http://sdx.genexus.com/agetqrcode.aspx', &codigo.ToJson())
&qrcode = loadbitmap(&linkqr)

A operação é realizada em duas etapas, a geração da imagem do QrCode por meio do agetqrcode e em seguida a carga dessa imagem em uma variável &qrcode do tipo Image.

As variáveis criadas nesse código são:



Resultado
Essa variável pode ser incluída em qualquer interface Web ou Report, produzindo um resultado semelhante a imagem apresentada a seguir.
Essa mesma imagem pode ser incluida em um PrintBlock de relatório produzindo o QrCode de forma impressa.
Interessante e simples, assim como a criatividade das pessoas que estão explorando essa imagem para produzir arte visua: http://mashable.com/2011/07/23/creative-qr-codes/

E para conhecer um pouco mais, ai vai a dica: