QR Code em AdvPL – Parte 01

Introdução

Alguém me comentou algo sobre QR Code no meu Facebook, e como eu já tinha ouvido falar nesse tipo de código, resolvi pesquisar um pouco. O resultado da pesquisa acabou saindo em um código em AdvPL para gerar um QR Code “na unha”. Vamos ver passo a passo o que e como isso foi feito a partir deste post.

O que é o QR Code

Visto de uma forma muito, muito simplista, um QR Code é um código de barras quadriculado. Trata-se de uma imagem quadriculada formando uma matriz de bits, onde cada bit “1” é um quadradinho preto, e cada bit “0” é um quadradinho branco. Visto como apenas um mapa de bits quadriculado, e encontrando muitos geradores de QR Code online na Internet, eu não imaginava a complexidade escondida por trás da estrutura dessa imagem. A definição detalhada e completa você encontra na Wikipedia.

Tudo em AdvPL

A imagem acima, por exemplo, é um QR Code que contém o endereço deste blog — “https://siga0984.wordpress.com/”. Um QR Code pode conter apenas números, caracteres alfanuméricos (com alfabeto limitado), caracteres UNICODE (UTF8) e até mesmo Kanji — este código inclusive foi desenvolvido para a Industria Automobilística Japonesa em 1994.

Embora sua utilização inicial fosse apenas para etiquetar caixas, atualmente ele é utilizado das mais diversas formas. Com a possibilidade de leitura da imagem por um Smartphone, ele pode ser usado para identificar um website, um evento, códigos promocionais, conter dados criptografados — como o verso da versão impressa da nova CNH Brasileira  — enfim, o céu é o limite.

Características Gerais

Cada “quadradinho” de um QR Code é chamado de “módulo”. Existem 40 versões de QR Code, relacionadas diretamente ao tamanho da matriz de módulos. A versão 1 inicia com 21×21 módulos, e a 40 com 177×177 módulos. Cada versão incrementa o tamanho da matriz em 4 unidades. A codificação dos dados pode usar 4 níveis de recuperação de erro, o que permite inclusive ler com sucesso um QRCode parcialmente danificado. A imagem contém os dados, a correção de erros, áreas reservadas para informações sobre a imagem — como os dado foram codificados na imagem — e alguns padrões de imagens fixas para auxiliar no alinhamento óptico do leitor. A partir de determinadas versões os dados são divididos em grupos, e o método de disposição da matriz de bits intercala dados e correção de erro — não fica tão complexo, apenas mais trabalhoso.

Mergulhando nos bits

Implementar um gerador de QR Code não está sendo tão simples, cada etapa possui suas características e regras. A maioria é relativamente simples, apenas requer vários passos — exceto pelo cálculo da correção de erro… Passei três dias mastigando exemplos e pesquisando o algoritmo de Reed-Solomon, só consegui implementar os cálculos depois que eu realmente entendi — ou quase — a multiplicação e divisão de polinômios. Neurônios colocados para escanteio ha quase 30 anos foram “ressuscitados” lembrando das regras matemáticas ligadas a equações, potências e afins.

Boa parte da implementação envolve a geração de sequências binárias e diversas conversões — as funções criadas para isso foram incorporadas na ZLIB, e já foram posadas no Blog, e a última parte seria justamente a geração da imagem, já praticamente pronta com a classe ZBITMAP — publicada em posts anteriores.

Fontes de Pesquisa

Nas minhas buscas, o que salvou a pátria e trouxe informações indispensáveis para começar a implementação em AdvPL e esclarecer “o que é e como funciona” foi o site https://www.thonky.com/qr-code-tutorial/ !! Além de explicar como funciona e detalhar os cálculos, o conteúdo publicado engloba algumas tabelas com os resultados pré-calculados, uma mão na roda. Wikipedia e outros sites complementaram as informações.

Conclusão

Para este momento, concluo apenas que a jornada do QR Code está apenas começando, mas seu objetivo não é apenas mostrar por dentro como a mágica foi feita, mas também abordar as escolhas feitas na codificação e ter mais um exemplo prático de orientação a objetos em AdvPL 😀

Agradeço novamente pela audiência e desejo a todos TERABYTES DE SUCESSO !!!

Referências

 

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s