Analise identificadores de aplicativos GS1 usando o VintaSoft Barcode .NET SDK.

Categoria do blog: Código de barras.NET

17.06.2025

Na logística moderna, no varejo, na medicina e na indústria, os padrões GS1, incluindo os Identificadores de Aplicação (AI), tornaram-se uma ferramenta universal para estruturar dados em códigos de barras. Para trabalhar eficazmente com esses códigos, é fundamental não apenas ler uma sequência de caracteres, mas também analisar corretamente o conteúdo — selecionando cada identificador de aplicação e os dados associados a ele. O software VintaSoft Barcode .NET SDK oferece uma ferramenta poderosa para analisar e estruturar informações de acordo com o padrão GS1.

O que são identificadores de aplicação GS1 e por que analisá-los?

Os identificadores de aplicação GS1 são prefixos numéricos curtos (geralmente de 2 a 4 dígitos) colocados no código de barras antes dos dados propriamente ditos. Cada prefixo identifica exclusivamente o tipo de informação, como um Número Global de Item Comercial (GTIN), data de produção, data de validade, peso, número de série,etc. A interpretação correta desses identificadores permite a extração automática de informações estruturadas e inequívocas do código de barras para contabilização, rastreamento e automação de processos empresariais.

Quais formatos de código de barras os identificadores GS1 suportam?

Os padrões GS1 com identificadores de aplicação são usados ​​em muitos sistemas de símbolos de código de barras:

Esses são os formatos mais frequentemente usados ​​por grandes empresas em todo o mundo para garantir rastreabilidade e automação de ponta a ponta.

Como funciona a análise de identificadores GS1 com o VintaSoft Barcode .NET SDK

O pacote de software VintaSoft Barcode .NET SDK permite não apenas a leitura rápida de qualquer tipo de código de barras, mas também a análise automática de linhas de dados de acordo com o padrão GS1.

Principais etapas da análise:

Aplicação e benefícios para os negócios

A análise dos identificadores de aplicação GS1 com o VintaSoft Barcode .NET SDK abre novas oportunidades de automação e controle para as empresas. A solução integra-se facilmente à cadeia de processos de negócios, facilita a contabilização da movimentação de mercadorias e garante um alto nível de confiabilidade dos dados.

Entre as vantagens práticas:

O uso de uma ferramenta como essa ajuda as empresas não apenas a reduzir custos, mas também a melhorar a qualidade dos serviços, acelerar o processamento de mercadorias e tornar os processos mais transparentes e modernos.

Conclusão

A análise e o processamento de identificadores de aplicação GS1 são parte integrante dos processos modernos de automação e contabilidade no varejo, logística e saúde.

O VintaSoft Barcode .NET SDK oferece uma solução universal, flexível e de alto desempenho para leitura e análise de códigos de barras complexos que atendem aos padrões globais GS1. Com suporte para uma ampla gama de formatos, análise automática de dados estruturados e fácil integração com sistemas existentes, as soluções da VintaSoft ajudam as empresas a aumentar a transparência dos processos e reduzir os custos operacionais.

Para obter mais informações sobre os recursos do SDK de código de barras .NET da VintaSoft e exemplos de integração, visite o site oficial da VintaSoft ou entre em contato com o serviço de suporte da empresa.


Aqui está um código C# que demonstra como gerar uma imagem de código de barras Code128 com informações GS1 (GS1-128) e reconhecer um código de barras GS1-128 na imagem gerada:
using System;
using System.Text;

using Vintasoft.Barcode;
using Vintasoft.Barcode.BarcodeInfo;
using Vintasoft.Barcode.GS1;
using Vintasoft.Barcode.SymbologySubsets;
using Vintasoft.Imaging;

/// <summary>
/// Test that shows how to encode the barcode data in GS1 format using the GS1Codec class,
/// create image with GS1-128 barcode,
/// read GS1-128 barcode from image and
/// parse data stored in GS1 format.
/// </summary>
class GS1CodecExample
{

    /// <summary>
    /// Runs the test.
    /// </summary>
    public static void TestGS1Codec()
    {
        bool valueVisible = true;

        // form the GS1 Application identifiers

        GS1ApplicationIdentifierValue[] aiValues = new GS1ApplicationIdentifierValue[4];
        GS1ApplicationIdentifier ai;
        // 01 - Global Trade Item Number
        ai = GS1ApplicationIdentifiers.FindApplicationIdentifier("01");
        aiValues[0] = new GS1ApplicationIdentifierValue(ai, "0123456789123C");
        // 310 - Net weight, kilograms
        ai = GS1ApplicationIdentifiers.FindApplicationIdentifier("310");
        aiValues[1] = new GS1ApplicationIdentifierValue(ai, "0012.55");
        // 30 - Count of Items
        ai = GS1ApplicationIdentifiers.FindApplicationIdentifier("30");
        aiValues[2] = new GS1ApplicationIdentifierValue(ai, "10");
        // 90 - Company Internal Information
        ai = GS1ApplicationIdentifiers.FindApplicationIdentifier("90");
        aiValues[3] = new GS1ApplicationIdentifierValue(ai, "ABCabc12345");

        // get GS1 printable value
        StringBuilder printableValue = new StringBuilder();
        foreach (GS1ApplicationIdentifierValue value in aiValues)
            printableValue.Append(value);


        // create the barcode writer
        using (BarcodeWriter writer = new BarcodeWriter())
        {
            // specify that writer must create output image as 24-bpp image
            writer.Settings.PixelFormat = BarcodeImagePixelFormat.Bgr24;

            // specify that writer must generate Code128 barcode
            writer.Settings.Barcode = BarcodeType.Code128;

            // encode GS1 value in GS1-128 symbology
            writer.Settings.Value = GS1Codec.GS1_128.Encode(aiValues, writer.Settings);
            // set printable value
            if (valueVisible)
            {
                writer.Settings.ValueVisible = true;
                writer.Settings.PrintableValue = printableValue.ToString();
            }
            else
            {
                writer.Settings.ValueVisible = false;
            }

            // create image with barcode
            using (VintasoftBitmap barcodeImage = writer.GetBarcodeAsVintasoftBitmap())
            {
                // delete aiValues array
                aiValues = null;

                // create barcode reader
                using (BarcodeReader reader = new BarcodeReader())
                {
                    // specify that reader must search for GS1-128 barcodes only

                    reader.Settings.ScanBarcodeTypes = BarcodeType.None;
                    reader.Settings.ScanBarcodeSubsets.Add(BarcodeSymbologySubsets.GS1_128);

                    // read barcode from image
                    IBarcodeInfo[] infos = reader.ReadBarcodes(barcodeImage);

                    // gets a GS1 Application identifiers from barcode value
                    aiValues = ((GS1BarcodeInfo)infos[0]).ApplicationIdentifierValues;

                    printableValue = new StringBuilder();

                    // print Application identifiers values
                    for (int i = 0; i < aiValues.Length; i++)
                    {
                        GS1ApplicationIdentifierValue aiValue = aiValues[i];
                        ai = aiValue.ApplicationIdentifier;
                        Console.WriteLine(string.Format("[{0}] {1}", i + 1, aiValue));
                        Console.WriteLine(string.Format("Application identifier   : {0}", ai.ApplicationIdentifier));
                        Console.WriteLine(string.Format("Value                    : {0}", aiValue.Value));
                        Console.WriteLine(string.Format("Data title               : {0}", ai.DataTitle));
                        Console.WriteLine(string.Format("Data content             : {0}", ai.DataContent));
                        Console.WriteLine(string.Format("Format                   : {0}", ai.Format));
                        Console.WriteLine(string.Format("Is contains decimal point: {0}", ai.IsContainsDecimalPoint));
                        Console.WriteLine(string.Format("Is variable length       : {0}", ai.IsVariableLength));
                        Console.WriteLine();
                        printableValue.Append(aiValue.ToString());
                    }

                    // print GS1 printable value
                    Console.WriteLine("Printable GS1 value: " + printableValue.ToString());
                }
            }
        }
    }
}