Como criar código de barras CODE 39 e CODE 39 Extended com Delphi / Lazarus

2020-10-23

CODE 39 é o código de barras desenvolvido pela Intermec Corporation em 1975. Até 43 caracteres, incluindo números, letras e alguns símbolos, podem ser incluídos no código de barras: 0123456789 ABCDEFG HIJKLMNOP QRSTUVWXYZ -. $ / +%. Como as letras podem ser manuseadas, o CÓDIGO 39 é indispensável nas áreas industriais e usado em setores como automotivo e eletrônico. Por exemplo, na Alemanha é usado para produtos farmacêuticos, mas é usado principalmente em armazenamento. Nos EUA, o código 39 foi padronizado como ANSI MH 10.8 M-1983 e MIL-STD-1189. Este padrão foi cancelado posteriormente e substituído por ANSI / AIM BC1 / 1995.

Um exemplo da codificação do caractere

Estrutura do CODE 39

O CODE 39 tem esse nome devido ao seu padrão de barras e espaços, com 3 de 9 barras e espaços sendo largos. A composição básica é a seguinte:

  • Uma letra (caractere) é representada por 9 barras e espaços.
  • Asteriscos (*) são colocados no início e no final do código de barras. (caractere iniciar / parar)
  • O espaço entre os caracteres é chamado de "lacuna entre caracteres". Geralmente, a largura da lacuna é tão larga quanto a largura da barra estreita. (A largura máxima é considerada de 3 à 5,3 vezes maior do que a largura da barra estreita.)

lacuna entre caractere

lacuna entre caractere

Esta tabela descreve a especificação do CODE 39. O valor numérico atribuído a cada caractere (exceto start / stop) é usado no algoritmo de checksum descrito abaixo.

Caracteres do CODE 39 (e valores de checksum)

O Código 39 é às vezes usado com um dígito opcional de verificação do módulo 43, o código com o dígito de verificação é conhecido como Código 39 mod 43.

Aqui está como fazer o cálculo da soma de verificação:

  1. Pegue o valor (0 a 42) de cada caractere no código de barras, excluindo os códigos de início e parada.
  2. Some os valores.
  3. Divida o resultado por 43.
  4. O restante é o valor do caractere de checksum a ser anexado no final.

Exemplo de CODE 39

O CODE 39 Extended é uma versão estendida do Code 39 que oferece suporte ao conjunto de caracteres ASCII. Ele pode codificar 128 caracteres: 0123456789 ABCDEFG HIJKLMNOP QRSTUVWXYZ! # $% & '() * +, -. / :; <=>? @ [\] ^ _ `{|} Abcdefg hijklmnopqrs tuvwxyz, que inclui 26 letras maiúsculas ( AZ), 26 letras minúsculas (az) e caracteres especiais com espaço.

É importante observar que o código de barras Código 39 estendido é aproximadamente duas vezes maior do que um código de barras Código 39 normal. De acordo com a ISO 646, esses caracteres são exibidos combinando dois caracteres de símbolo, o primeiro consiste em um dos quatro caracteres $ +% / e é seguido por uma das 26 letras. Se o decodificador for programado com o conjunto completo de caracteres ASCII, apenas o equivalente ASCII é transferido e não a combinação de caracteres de símbolo.

O CODE 39 Estended também pode ser usado com uma soma de verificação do módulo 43 opcional, e o código com o dígito de verificação se parece com “CODE 39 EXTENDED mod 43”.

Exemplo de CODE 39 Extended

Comparação lado a lado do CODE 39 e do  CODE 39 Extended

Vamos comparar as mesmas frases em códigos de barras diferentes. Em ambos os casos, não vemos diferença na primeira coluna. Mas por que não há diferença? Isso ocorre porque os caracteres 0123456789 ABCDEFG HIJKLMNOP QRSTUVWXYZ -. $ / +% em ambos os códigos de barras são codificados da mesma maneira, mas se você substituir as letras maiúsculas por minúsculas, as alterações aparecerão.

Code 39 and Code 39 extended example

Mais uma vez, no CODE 39 Extended, os caracteres são exibidos pela combinação de dois caracteres por símbolo, o primeiro consiste em um dos quatro caracteres $ +% / e seguido por uma das 26 letras.

Exemplo de CODE 39 e CODE 39 extended

Criação de código de barras no designer

O FastReport VCL permite que você use os dois tipos de código de barras descritos anteriormente em seus relatórios. Vamos ver como trabalhar com eles.

No FastReport VCL designer, adicione o componente obCatBarcode ao relatório e selecione o tipo de código de barras da lista:

 obCatBarcode

Próximo, ir ao editor de código de barras:

Editor de código de barras

Code - área para o valor numérico do código de barras;

Type of bar - o tipo do código de barras pode ser alterado imediatamente no editor sem adicionar um novo componente ao relatório;

Calc CheckSum - soma de verificação. Todos os códigos de barras lineares tem essa propriedade. Lembra da “falta de leitura”? Devemos lutar contra isso de alguma forma! Esta propriedade determina se a soma de verificação deve ser calculada automaticamente. Se estiver desabilitado, a soma de verificação deve estar presente no texto do objeto;

Zoom - define a escala do código de barras e é usado apenas em conjunto com a propriedade “Autosize”;

Text - ativa / desativa a exibição de texto sob o código de barras;

Rotation - permite definir a rotação do objeto para um dos ângulos fixos - 0, 90, 180, 270 graus.

Clique no ícone F(x) e entre no editor de expressões grandes. Mais detalhes podem ser encontrados por conta própria no designer do FastReport VCL ou na documentação. ligação 1 e ligação 2

Editor de expressões


Definicao

Vá em propriedades do componente obCatBarcode.

O conteúdo do campo Code será transferido para o campo Expression. Se o campo Expression estiver vazio, o texto do campo Text será exibido.

Resumindo, o Text é um texto estático e a Expression contém a expressão calculada, incluindo o valor de um datasource.

Criando código de barras por código no Delphi / Lazarus

CODE 39
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
uses frxBarcod;
 
procedure TForm1.Button1Click(Sender: TObject);
var bc: TfrxBarcodeView;
begin
 bc :=
TfrxBarcodeView(frxReport1.FindObject('BarCode1'));
{Set the type of the barcode}
bc.BarType := bcCode39;
{Set the fixed barcode value}
 bc.Text := '123456';
{Set the calculated barcode value}
//bc.Expression := '<YourDatasetName."FieldName1"> + <YourDatasetName."FieldName2">';
{Set whether it is necessary to calculate the checksum and add it to the end of the barcode}
bc.CalcCheckSum := False;
{Set the scale at which the barcode will be displayed}
 bc.Zoom := 2;
{Set the angle of the barcode rotation. Can take the following values: 0, 90, 180, 270}
bc.Rotation := 0;
{Set whether to set the width of the barcode depending on its content.}
{If set to False, Zoom will be set to keep the barcode width fixed}
 bc.AutoSize := True;
{Set the barcode background color}
bc.Color := clNone;
{Set the barcode lines color}
bc.ColorBar := clBlack;
{Set whether to display the text at the bottom of the barcode}
 bc.ShowText := True;
 frxReport1.ShowReport();
end;
 

Agora podemos usar o código de barras do padrão CODE 39 em nossos aplicativos de negócios (codificar não apenas caracteres numéricos, mas também alfabéticos), por exemplo, para saída em etiquetas (por exemplo, no formato ZPL, também).

VCL Lazarus FastReport Barcode Delphi VCL Lazarus FastReport Barcode Delphi
26 de abril de 2023

How to use RFID tags in FastReport .NET

The new page object is an RFID tag in FastReport.NET allows users to use the library to create labels or maps without third-party programs
20 de abril de 2023

How to update FastReport Online Designer to the latest version

Step-by-step instructions for updating FastReport Online Designer to the latest version via the client panel.
14 de março de 2023

The Future of Report Generation with Blazor WebAssembly

Step-by-step instructions for creating a demo application on .NET 6 and 7 directly in the browser using Blazor WebAssembly in FastReport .NET.
Fast Reports
  • 800-985-8986 (English, US)
  • +31 97 01025-8466 (English, EU)
  • +49 30 56837-3928 (German, DE)
  • +55 19 98147-8148 (Portuguese, BR)
  • info@fast-report.com
  • 66 Canal Center Plaza, Ste 505, Alexandria, VA 22314

© 1998-2025 Fast Reports Inc.