Analizza gli identificatori delle applicazioni GS1 utilizzando VintaSoft Barcode .NET SDK

Categoria del blog: Barcode.NET

17.06.2025

Nei moderni settori della logistica, della vendita al dettaglio, della medicina e della produzione, gli standard GS1, inclusi gli identificatori di applicazione (AI), sono diventati uno strumento universale per la strutturazione dei dati nei codici a barre. Per lavorare efficacemente con questi codici, è fondamentale non solo leggere una stringa di caratteri, ma anche analizzarne correttamente il contenuto, selezionando ciascun identificatore di applicazione e i dati ad esso associati. Il software VintaSoft Barcode .NET SDK offre un potente strumento per l'analisi e la strutturazione delle informazioni in conformità con lo standard GS1.

Cosa sono gli identificatori delle applicazioni GS1 e perché analizzarli

Gli identificatori di applicazione GS1 sono brevi prefissi numerici (solitamente da 2 a 4 cifre) inseriti nel codice a barre prima dei dati effettivi. Ogni prefisso identifica in modo univoco il tipo di informazione, come il Global Trade Item Number (GTIN), la data di produzione, la data di scadenza, il peso, il numero di serie, ecc. La corretta interpretazione di questi identificatori consente l'estrazione automatica di informazioni strutturate e univoche dal codice a barre per la contabilità, la tracciabilità e l'automazione dei processi aziendali.

Quali formati di codice a barre supportano gli identificatori GS1

Gli standard GS1 con identificatori di applicazione sono utilizzati in molti sistemi di simboli di codici a barre:

Si tratta dei formati più utilizzati dalle grandi aziende di tutto il mondo per garantire la tracciabilità e l'automazione end-to-end.

Come funziona l'analisi degli identificatori GS1 con VintaSoft Barcode .NET SDK

Il pacchetto software VintaSoft Barcode .NET SDK consente non solo di leggere rapidamente qualsiasi tipo di codice a barre, ma anche di analizzare automaticamente le linee di dati in conformità con lo standard GS1.

Fasi principali dell'analisi:

Applicazione e vantaggi per le aziende

L'analisi degli identificativi delle applicazioni GS1 con VintaSoft Barcode .NET SDK apre nuove opportunità di automazione e controllo per le aziende. La soluzione si integra facilmente nella catena dei processi aziendali, semplifica la contabilizzazione della movimentazione delle merci e garantisce un elevato livello di affidabilità dei dati.

Tra i vantaggi pratici:

Utilizzando uno strumento di questo tipo le aziende non solo possono ridurre i costi, ma anche migliorare la qualità dei servizi, velocizzare l'elaborazione delle merci e rendere i processi più trasparenti e moderni.

Conclusione

L'analisi e la sintassi degli identificatori delle applicazioni GS1 sono parte integrante dei moderni processi di automazione e contabilità nei settori della vendita al dettaglio, della logistica e dell'assistenza sanitaria.

VintaSoft Barcode .NET SDK offre una soluzione universale, flessibile e ad alte prestazioni per la scansione e l'analisi di codici a barre complessi conformi agli standard globali GS1. Grazie al supporto di un'ampia gamma di formati, all'analisi automatica dei dati strutturati e alla facile integrazione nei sistemi esistenti, le soluzioni VintaSoft aiutano le aziende ad aumentare la trasparenza dei processi e a ridurre i costi operativi.

Per maggiori informazioni sulle funzionalità di VintaSoft Barcode .NET SDK ed esempi di integrazione, visitare il sito web ufficiale di VintaSoft o contattare il servizio di supporto dell'azienda.


Ecco un codice C# che mostra come generare un'immagine di codice a barre Code128 con informazioni GS1 (GS1-128) e riconoscere un codice a barre GS1-128 nell'immagine generata:
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());
                }
            }
        }
    }
}