Códigos de barra EAN13:



Documentos relacionados
LINGUAGEM DE PROGRAMAÇÃO DELPHI Prof. Alberto Cezar de Carvalho CÓDIGOS DE BARRA

Filas. A ordem de saída corresponde diretamente à ordem de entrada dos elementos. Fila de caixa bancário

- Aulas 57, 58, 59 e 60 - Técnicas de programação. Funções

Autor: Tiago Lone Nível: Básico Criação: 19/12/2005 Última versão: 18/12/2006. PdP. Pesquisa e Desenvolvimento de Produtos

Estruturas de Repetição

Memória Flash. PdP. Autor: Tiago Lone Nível: Básico Criação: 11/12/2005 Última versão: 18/12/2006. Pesquisa e Desenvolvimento de Produtos

Algoritmos e Programação Parte Teórica

Montagem e Manutenção. Luís Guilherme A. Pontes

Algoritmos DCC 119. Introdução e Conceitos Básicos

Analisando e comparando as funções do DBNavegator

Faculdade de Computação

Algoritmos Estruturas Seqüenciais. José Gustavo de Souza Paiva

O processador é um dos elementos componentes do computador moderno, sendo responsável pelo gerenciamento de todo o computador.

Algoritmos e Estruturas de Dados I 01/2013. Estruturas Condicionais e de Repetição (parte 2) Pedro O.S. Vaz de Melo

Busca em Memória. Secundária

* Acesso à programação protegido por senha; * Alimentação: 90 a 240Vca (Fonte chaveada).

I n f o r m á t i c a

Brasil Pensou em código de barras. Pensou GS1 Brasil. Como gerar seu Código de Barras

JavaScript (ou JScript)

LÓGICA DE PROGRAMAÇÃO. Professor Celso Masotti

Reaproveitando algoritmos

Algoritmos e Programação

Representação de Algoritmos - Linguagens de Programação

A4 Projeto Integrador e Lista de Jogos

Desmistificando o Programa de Computador

Introdução. Introdução. Objetivos da Aula. Bases Computacionais da Ciência(BC-0005)

Display de 7. PdP. Autor: Tiago Lone Nível: Básico Criação: 16/12/2005 Última versão: 18/12/2006. Pesquisa e Desenvolvimento de Produtos

CONCEITOS BÁSICOS DE UM SISTEMA OPERATIVO

CONCEITOS BÁSICOS PARA A CONSTRUÇÃO DE ALGORITMOS PARA COMPUTADORES. Isac Aguiar isacaguiar.com.br isacaguiar@gmail.com

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À PROGRAMAÇÃO COM C/C++ Prof. Dr. Daniel Caetano

MANUAL DE OPERAÇÃO SISTEMA ROR

Principais códigos utilizados. Codificação. Código binário puro. Codificação binária. Codificação Binária. Código Binário puro e suas variantes

CURSO de CIÊNCIA DA COMPUTAÇÃO - Gabarito

Programação em papel quadriculado

Fundamentos em Informática (Sistemas de Numeração e Representação de Dados)

Comandos de repetição while

Definição de Programas de Computadores e Linguagem de Programação de Comutadores

Guia de utilização da notação BPMN

Cotagem de dimensões básicas

Algoritmo Iterativo. Dilema do Martelo x Edifício. O Martelo. O Edifício 01/06/2014. Dilema das ações x declarações

Conhecendo o Código de Barras Volume 1

Leitura de PH. 1 Configurações de Terminal

Regras Métodos Identificadores Variáveis Constantes Tipos de dados Comandos de atribuição Operadores aritméticos, relacionais e lógicos

1. Introdução. Avaliação de Usabilidade Página 1

Nota de Aplicação IHM 004

Conceitos básicos da linguagem C

COMANDO DA AERONÁUTICA ESCOLA DE ESPECIALISTAS DE AERONÁUTICA SUBDIVISÃO DE ADMISSÃO E DE SELEÇÃO

Q-Acadêmico. Módulo CIEE - Estágio. Revisão 01

MODELAGEM E SIMULAÇÃO

Inserção de Ponto de Entrada. Autoenge Módulo Automação Página 1

Adicionando Propriedades e Funcionalidades aos Componentes Parte II

REPRESENTAÇÃO DE DADOS EM SISTEMAS DE COMPUTAÇÃO AULA 03 Arquitetura de Computadores Gil Eduardo de Andrade

MANUAL DE OPERAÇÃO BALANÇA ROR LINHA RS

- UNIVERSIDADE DO VALE DO RIO DOS SINOS CIÊNCIAS EXATAS E TECNOLÓGICAS Curso: Informática / Ciência da Computação

7. DIAGRAMAÇÃO DAS PLACAS

O ENSINO DE CÁLCULO NUMÉRICO: UMA EXPERIÊNCIA COM ALUNOS DO CURSO DE CIÊNCIA DA COMPUTAÇÃO

COBRANÇA NÃO REGISTRADA

Usando um Simulador da Máquina de Turing Claudio Kirner 2010

TS Display Gráfico Serial

Laboratório de Programação I

JSP - ORIENTADO A OBJETOS

Variáveis e Comandos de Atribuição

Capítulo 8. CICLOS. Tabela 8.1 Programa8a.f90.

OPL9815 Inventário Configurável

Algoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br

GOVERNO DO ESTADO DE RONDÔNIA SECRETARIA DE ESTADO DE FINANÇAS COORDENADORIA DA RECEITA ESTADUAL

CURSO BÁSICO DE CRIAÇÃO DE SITES MÓDULO 2 AULA 4

INSTALAÇÃO UBUNTU NUM INSTANTE

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 12

Casos de uso Objetivo:

- UNIVERSIDADE DO VALE DO RIO DOS SINOS CIÊNCIAS EXATAS E TECNOLÓGICAS Curso: Informática / Ciência da Computação

Classificação e Pesquisa de Dados

Leitora Perto Smart. Guia de Instalação. Leitora Perto Smart Guia de Instalação. Janeiro/2010. Instalação da leitora Perto Smart.

Convertendo Algoritmos para a Linguagem C

PROJETO DE REDES

BACHARELADO EM SISTEMAS DE INFORMAÇÃO EaD UAB/UFSCar Sistemas de Informação - prof. Dr. Hélio Crestana Guardia

Hamtronix CONTROLE REMOTO DTMF. CRD200 - Manual de Instalação e Operação. Software V 2.0 Hardware Revisão B

Oficina - Álgebra 1. Oficina de CNI EM / Álgebra 1 Material do Monitor. Setor de Educação de Jovens e Adultos. Caro monitor,

Programando Jogos em Delphi Animação, Lógica e Controle versão orientada à objetos

Prática 19 e 20 Características de um bom jogo

SISTEMAS DE NUMERAÇÃO

ALGORITMOS PARTE 01. Fabricio de Sousa Pinto

Circuitos Digitais 144L

Entendendo as Permissões de Arquivos no GNU/Linux

Esse produto é um produto composto e tem subprodutos

COTAÇÃO DE COMPRAS COM COTAÇÃO WEB

4Distribuição de. freqüência

RECEITA AGRONÔMICA, O QUE É E COMO EMITIR NO RECEITUÁRIO AGRONÔMICO ONLINE

CADERNOS DE INFORMÁTICA Nº 1. Fundamentos de Informática I - Word Sumário

1 INTRODUÇÃO 1.1 CONCEITO DE PARADIGMAS DE LINGUAGEM DE PROGRAMAÇÃO PARADIGMAS DE LINGUAGEM DE PROGRAMAÇÃO

LCD (LiquidCrystal Display) Alex Vidigal Bastos

9.1.2 Laços Controlados por Entrada: Contador

Implementando uma Classe e Criando Objetos a partir dela

Notas de versão. Versão

TEXTO DE REVISÃO: Uso da calculadora científica e potências de 10.

DESENVOLVIMENTO DE SOFTWARE

Atenção ainda não conecte a interface em seu computador, o software megadmx deve ser instalado antes, leia o capítulo 2.

Prof. Marcelo Nogueira

PROGRAMAÇÃO II 4. ÁRVORE

Transcrição:

LINGUAGEM DE PROGRAMAÇÃO DELPHI - Prof. Alberto Cezar de Carvalho Página 1 Códigos de barra EAN13: 1. COMO FUNCIONA: A leitora ótica foi projetada para ler barras ou ausência de barras com 0,33 mm de espessura. Quando a barra existe, representa o binário 1 e a sua ausência representa o binário 0. A existência de barras mais grossas é pura ilusão, pois, na realidade, são várias barras justapostas, representando uma seqüência de s binários 1. O mesmo acontece em relação aos espaços, isto é, espaços maiores representam uma seqüência de s binários 0. Adotou-se comercialmente em todo mundo o código EAN-13 como o padrão para identificação de produtos comerciais. Apenas os Estados Unidos e o Canadá não adotam este padrão. Utiliza-se também o código EAN-8, muito raramente, apenas quando o tamanho do produto impede o uso do código EAN-13, pois, o primeiro utiliza 8 dígitos decimais para representar o código do produto, enquanto que o segundo utiliza 13 s decimais. 2. HARDWARE: A leitora é ligada na entrada para teclado da CPU e este na leitora, através de uma dupla de conectores presentes no final do cabo da mesma. Para o teclado Para a CPU Desta forma, a leitora ótica funciona como se fosse um teclado, não necessitando portanto de qualquer instalação de software. Como estão ligados em paralelo, tanto faz digitar os números do código de barras, como lê-los através da leitora, que estes serão colocados no objeto que estiver focado no momento (edit, memo, dbedit, etc...).

LINGUAGEM DE PROGRAMAÇÃO DELPHI - Prof. Alberto Cezar de Carvalho Página 2 3. O CÓDIGO EAN-13: Existe uma entidade mundial que controla a numeração dos produtos comerciais: é a EAN. O Brasil se filiou à mesma e recebeu o número 789 como prefixo de todos os seus produtos. No nosso país, quem controla a liberação dos números é a GS1 BRASIL, constituída oficialmente em 8 de novembro de 1983, a ABAC - Associação Brasileira de Automação Comercial - atualmente GS1 BRASIL, começou a ser delineada em fevereiro daquele ano, quando a SEI - Secretaria Especial de Informática - convocou empresas do comércio para elaborar um documento refletindo as necessidades do setor com relação a automação comercial. (http://www.gs1brasil.org.br) Os 3 primeiros s representam o País onde o produto foi embalado. Este número é fornecido pela EAN mundial, que atribuiu ao Brasil, como já dissemos, o número 789. Para a Argentina, por exemplo, o número é 779, etc. A G1 BRASIL estabeleceu que os 4 ou 5 s decimais seguintes representariam a Empresa. Ela utiliza 4 s quando a empresa produz muitos produtos. Estão disponíveis no Brasil 6000 códigos de Empresas nesta situação, estes códigos são numerados de 0000 a 5999. São utilizados 5 s para empresas com menor número de produtos. Neste caso, existem 40000 códigos, numerados de 60000 a 99999. Os dígitos seguintes, exceto o último, representam os códigos dos produtos produzidos. Consideram-se produtos diferentes aqueles que, mesmo sendo do mesmo produto, têm embalagens diferentes, ou pesos diferentes, etc. Na realidade, o código de barras deverá identificar, sem nenhuma dúvida o produto que está sendo comercializado. Estes códigos de produtos, representados por 4 ou 5 s (dependendo se a Empresa tem um código com 5 ou 4 s) são de responsabilidade da Empresa, e devem ser informados à G1 BRASIL os códigos escolhidos com a respectiva correspondência ao produto produzido. O último dígito, é o DÍGITO VERIFICADOR, que através de um pequeno algoritmo, verifica a autenticidade do número lido pela leitora de códigos de barra, minimizando o erro de leitura da mesma. Existe a necessidade deste dígito, pois, se a leitora fizer a leitura de uma seqüência de s errada (defeitos de impressão na embalagem, sujeira, amassados, descoloração, etc) o último certamente irá dar diferente do que está gravado na embalagem, causando um erro de leitura. Existindo tal erro, a leitura é repetida um certo número de vezes. Caso persista, a entrada do código deverá ser feita manualmente pelo teclado, fato que constatamos frequentemente nos supermercados.

LINGUAGEM DE PROGRAMAÇÃO DELPHI - Prof. Alberto Cezar de Carvalho Página 3 EXEMPLO: 7899168510017 = 789 91685 1001 7 Código do País Dígito verificador Número do produto Número da empresa 4. ALGORITMO DO DÍGITO VERIFICADOR: a) Numere os s da esquerda para a direita (retirei o próprio dígito verificador): 7 8 9 9 1 6 8 5 1 0 0 1 01 02 03 04 05 06 07 08 09 10 11 12 b) Some todos os s das posições ímpares: 7 + 9 + 1 + 8 + 1 + 0 = 26 c) Some todos os s das posições pares multiplicando-os por 3: 8 * 3 + 9 * 3 + 6 * 3 + 5 * 3 + 0 * 3 + 1 * 3 = 87 d) Some o resultado da letra b com o da letra c : 26 + 87 = 113 e) Ache o múltiplo de 10 mais próximo, para mais, do resultado da letra d : 113 120 f) O dígito verificador será o valor da letra e menos o valor da letra d : 120 113 = 7 o dígito verificador será 7. 5. DIMENSÕES DO CÓDIGO EAN-13: 510017 Alterações nestas dimensões são permitidas, através de tabelas de conversão, que não publicamos neste trabalho, pois, fogem ao assunto do mesmo.

LINGUAGEM DE PROGRAMAÇÃO DELPHI - Prof. Alberto Cezar de Carvalho Página 4 6. REPRESENTANDO OS NÚMEROS EM BARRAS: Cada, dependendo da sua posição, terá sua representação definida de acordo com a tabela a seguir: Algarismo Tabela A Tabela B Tabela C 0 0001101 0100111 1110010 1 0011001 0110011 1100110 2 0010011 0011011 1101100 3 0111101 0100001 1000010 4 0100011 0011101 1011100 5 0110001 0111001 1001110 6 0101111 0000101 1010000 7 0111011 0010001 1000100 8 0110111 0001001 1001000 9 0001011 0010111 1110100 Tabela 1 A posição 1 indicará a seqüência de tabelas A ou B para os s das posições de 2 a 7: 1º Tabela do 2º Tabela do 3º Tabela do 4º Tabela do 5º Tabela do 6º Tabela do 7º 0 A A A A A A 1 A A B A B B 2 A A B B A B 3 A A B B B A 4 A B A A B B 5 A B B A A B 6 A B B B A A 7 A B A B A B 8 A B A B B A 9 A B B A B A Tabela 2 A tabela C é utilizada para os s localizados nas posições 8 a 13. As barras do código EAN-13, ainda têm alguns códigos binários adicionais. Abaixo, descreveremos toda a sequência de binários em um código de barras: Margem de silêncio (vazia, sem barras) Caractere auxiliar de guarda: 101 Seis caracteres utilizando a tabela A ou B, de acordo com o primeiro caractere. No nosso exemplo, o primeiro caractere é 7 e portanto, consultando a tabela 2 verificamos que a seqüência para este é: A B A B A B. Então pela tabela 1 temos a seguinte sequência de binários: guarda 8 9 9 1 6 8 101 0110111 0010111 0001011 0100111 0101111 0001001 tabela A tabela B tabela A tabela B tabela A tabela B

LINGUAGEM DE PROGRAMAÇÃO DELPHI - Prof. Alberto Cezar de Carvalho Página 5 Caractere auxiliar central: 01010 101011011100101110001011010011101011110001001 01010 Seis caracteres utilizando a tabela C da tabela 1 : 5 1 0 0 1 7 1001110 1100110 1110010 1110010 1100110 1000100 Um caractere auxiliar de guarda: 101 10101101110010111000101101001110101111000100101010100111011001101000100 101 Margem de silêncio final. Você pôde verificar que o primeiro não possui barras, ele é representado pela seqüência das tabelas utilizadas, de acordo com a tabela 2. A seguir, apresentamos algumas rotinas que podem ser incluídas em um programa que desenha os códigos de barra através de um objeto Canvas dentro de um objeto Image. Sugiro que acrescente ao formulário um objeto Edit, onde serão digitados os 12 primeiros s do código EAN-13, e o próprio programa se encarregará de determinar o dígito verificador. Em seguida, será desenhado dentro do objeto Image o código de barras correspondente: Declarar globalmente as constantes a seguir, que guardam a tabela de caracteres: Const TabelaA: array[0..9] of string[7] = ('0001101', // 0 '0011001', // 1 '0010011', // 2 '0111101', // 3 '0100011', // 4 '0110001', // 5 '0101111', // 6 '0111011', // 7 '0110111', // 8 '0001011');// 9 TabelaB: array[0..9] of string[7] = ('0100111', // 0 '0110011', // 1 '0011011', // 2 '0100001', // 3 '0011101', // 4 '0111001', // 5 '0000101', // 6 '0010001', // 7 '0001001', // 8 '0010111');// 9

LINGUAGEM DE PROGRAMAÇÃO DELPHI - Prof. Alberto Cezar de Carvalho Página 6 TabelaC: array[0..9] of string[7] = ('1110010', // 0 '1100110', // 1 '1101100', // 2 '1000010', // 3 '1011100', // 4 '1001110', // 5 '1010000', // 6 '1000100', // 7 '1001000', // 8 '1110100');// 9 TabelaPaises: array[0..9] of string[6] = ('AAAAAA', 'AABABB', 'AABBAB', 'AABBBA', 'ABAABB', 'ABBAAB', 'ABBBAA', 'ABABAB', 'ABABBA', 'ABBABA'); Agora sugerimos uma rotina que desenha realmente uma barra: Procedure Barra(x,altura:byte); With Form1.Image1.Canvas do MoveTo(x,0); LineTo(x,ALTURA); A rotina a seguir, auxilia na escolha de qual das tabelas iremos acessar: Function Binario(t,n: byte): string; Case T of 1: Binario:= TabelaA[n]; 2: Binario:= TabelaB[n]; 3: Binario:= TabelaC[n];

LINGUAGEM DE PROGRAMAÇÃO DELPHI - Prof. Alberto Cezar de Carvalho Página 7 A função abaixo, nos mostra como podemos compor o número binário correspondente aos 13 s do código de barras: Function Codigo(c: string): string; Var aux: string; i: byte; Aux:= 101 ; Pais:= Tabelapaises[strtoint(c[1])]; For i:= 2 to 7 do If Pais[i-1] = A then Aux:=Aux+Binario(1,StrToInt(c[i])) else Aux:= Aux+Binario(2,StrToInt(c[i])); Aux:= Aux + 01010 ; For i:= 8 to 13 do Aux:= Aux + Binario(3,StrToInt(c[i])); Codigo:= Aux + 101 ; A rotina abaixo, é a que comanda o desenho de todas as barras, inclusive detecta aquelas que deverão ter uma altura maior do que as outras: Procedure Desenha_Barra(cod: string); var i: byte; For i:= 1 to length(cod) do If cod[i] = '1' then If i in [1..3,46..50,93..95] then Barra(15 + i,95) else Barra(15 + i,90); A função abaixo, faz o cálculo do dígito verificador: Function digito_verificador(n: string): string; var i: byte; s, x: integer; S:= 0; for i:= 1 to 12 do If odd(i) then s:= s + StrToInt(n[i]) else s:= s + StrToInt(n[i]) * 3; x:= 0; while (x < s) do inc(x,10); digito_verificador:= IntToStr(x-s);

LINGUAGEM DE PROGRAMAÇÃO DELPHI - Prof. Alberto Cezar de Carvalho Página 8 Para montar o programa faça: 1) Permita ao usuário montar o número do código utilizando um objeto Edit por exemplo. O número é composto pelas seguintes partes: a) o código do País b) número da empresa c) número do produto 2) De posse deste número chame a rotina "Digito_Verificador", passando a esta função o número digitado, como parãmetro. 3) Acrescente o dígito verificador ao final do número que havia sido digitado (item 1). 4) Passe à função "Codigo" o número obtido no item 3, como o parãmetro da mesma. 5) O valor retornado da função codigo (item 4) será passado como parâmetro da rotina "Desenha_Barra", para que a mesma comande o desenho de todas as barras. 6) Pronto. O código de barras será desenhado no objeto Canvas do objeto Image1. Tente fazer, é importante você se acostumar a encontrar e resolver os problemas de programação!!!