Riconosci e genera codici a barre Data Matrix utilizzando VintaSoft Barcode .NET SDK.

Categoria del blog: Barcode.NET

19.08.2025

VintaSoft Barcode .NET SDK è un SDK professionale multipiattaforma per Windows, Linux, macOS, Android, che consente di riconoscere e generare codici a barre Data Matrix in .NET, WPF, Web, MAUI. VintaSoft Barcode .NET SDK consente di integrare la funzionalità di riconoscimento e generazione di codici a barre Data Matrix utilizzando solo poche righe di codice.


Cos'è un codice a barre Data Matrix?

Data Matrix è un codice a barre a matrice bidimensionale che si è diffuso nell'industria, nella produzione e nell'etichettatura dei prodotti. Una caratteristica distintiva del codice a barre Data Matrix è il modello di ricerca "L" sotto forma di una linea continua su entrambi i lati del codice a barre:



Caratteristiche del codice a barre Data Matrix

La moderna versione del codice a barre Data Matrix ECC200 è definita dallo standard ISO/IEC 16022 del 2006. Lo standard descrive anche le versioni precedenti da ECC000 a ECC140, il cui utilizzo non è consigliato.

Il codice a barre Data Matrix può memorizzare dati misti di diverso tipo in tre modalità di codifica:

Il codice a barre Data Matrix utilizza l'algoritmo di correzione degli errori Reed-Solomon, che consente di riconoscere i codici a barre danneggiati.

Il supporto per lo standard GS1 consente di codificare i dati nel formato GS1 (BarcodeSymbologySubsets.GS1DataMatrix).

Il codice a barre Data Matrix può codificare i seguenti simboli speciali:


Codice a barre Data Matrix rettangolare - quando l'area di marcatura non è quadrata

Esistono 6 versioni speciali del codice a barre Data Matrix rettangolare:


Questi codici a barre vengono utilizzati su articoli di piccole dimensioni quando lo spazio disponibile non consente un codice a barre quadrato.


Struttura del codice a barre Data Matrix

La versione ECC200 della matrice di codici a barre Data Matrix è disponibile in 24 versioni quadrate con dimensioni che vanno da 10x10 a 144x144 moduli, oltre a versioni rettangolari: 8x18, 8x32, 12x26, 12x36, 16x36 e 16x48 moduli. L'orientamento del codice a barre è determinato dal modello di ricerca "L", il cui centro si trova nell'angolo inferiore sinistro del codice a barre.



È facile distinguere la versione moderna di Data Matrix ECC200 dalla versione obsoleta ECC000-ECC140: nella versione ECC200 la dimensione della matrice è sempre pari, mentre in ECC000-140 è sempre dispari, quindi nella versione ECC200 c'è sempre un modulo bianco nell'angolo in alto a destra, mentre nella versione obsoleta c'è sempre un modulo nero.


Se è necessario codificare una grande quantità di dati, è necessario un simbolo speciale "Struttura aggiunta"

Il codice a barre Data Matrix supporta un simbolo speciale "Struttura aggiunta", che consente di suddividere i dati in più codici a barre Data Matrix. Il simbolo "Structure Append" è codificato nel codice a barre e consente di determinare con certezza il numero di parti del codice a barre e il loro ordine:

VintaSoft Barcode .NET SDK contiene un algoritmo per il recupero dei dati da un set di codici a barre, parti del Data Matrix che sono state separate utilizzando il simbolo "Structure Append".


Quali codici a barre Data Matrix può riconoscere VintaSoft Barcode .NET SDK?

VintaSoft Barcode .NET SDK riconosce tutti i tipi di codici a barre Data Matrix versione ECC200. Durante il riconoscimento, vengono utilizzati algoritmi unici che consentono di riconoscere rapidamente i codici a barre che presentano vari problemi:



Ecco un codice C# che mostra come riconoscere i codici a barre Data Matrix in un'immagine acquisita da una fotocamera:
/// <summary>
/// Reads Data Matrix barcodes from a <see cref="System.Drawing.Bitmap"/>.
/// </summary>
/// <param name="bitmap">A bitmap with barcodes.</param>
public static void ReadDataMatrixBarcodesFromBitmap(System.Drawing.Bitmap bitmap)
{
    // create barcode reader
    using (Vintasoft.Barcode.BarcodeReader reader = new Vintasoft.Barcode.BarcodeReader())
    {
        // specify that reader must search for Data Matrix barcodes
        reader.Settings.ScanBarcodeTypes = Vintasoft.Barcode.BarcodeType.DataMatrix;

        // read barcodes from image
        Vintasoft.Barcode.IBarcodeInfo[] infos = Vintasoft.Barcode.GdiExtensions.ReadBarcodes(reader, bitmap);

        // if barcodes are not detected
        if (infos.Length == 0)
        {
            System.Console.WriteLine("No barcodes found.");
        }
        // if barcodes are detected
        else
        {
            // get information about extracted barcodes

            System.Console.WriteLine(string.Format("{0} barcodes found:", infos.Length));
            System.Console.WriteLine();
            for (int i = 0; i < infos.Length; i++)
            {
                Vintasoft.Barcode.IBarcodeInfo info = infos[i];
                System.Console.WriteLine(string.Format("[{0}:{1}]", i + 1, info.BarcodeType));
                System.Console.WriteLine(string.Format("Value:      {0}", info.Value));
                System.Console.WriteLine(string.Format("Region:     {0}", info.Region));
                System.Console.WriteLine();
            }
        }
    }
}


Quali codici a barre Data Matrix può generare VintaSoft Barcode .NET SDK?

VintaSoft Barcode .NET SDK genera tutti i tipi di codici a barre Data Matrix.

Ecco il codice C# che mostra come generare una bitmap di un codice a barre Data Matrix:
/// <summary>
/// Returns the Data Matrix barcode as <see cref="System.Drawing.Bitmap"/>.
/// </summary>
/// <param name="value">The barcode value.</param>
/// <returns>A <see cref="System.Drawing.Bitmap"/> object.</returns>
public static System.Drawing.Bitmap GetDataMatrixBarcodeAsBitmap(string value)
{
    // create the barcode writer
    using (Vintasoft.Barcode.BarcodeWriter barcodeWriter = new Vintasoft.Barcode.BarcodeWriter())
    {
        // set barcode writer settings
        barcodeWriter.Settings.Barcode = Vintasoft.Barcode.BarcodeType.DataMatrix;
        barcodeWriter.Settings.Value = value;

        // get a barcode image as System.Drawing.Bitmap
        return Vintasoft.Barcode.GdiExtensions.GetBarcodeAsBitmap(barcodeWriter);
    }
}


Ecco un codice C# che mostra come generare un'immagine vettoriale (SVG) del codice a barre Data Matrix:
/// <summary>
/// Returns the Data Matrix barcode in vector form as a SVG string.
/// </summary>
/// <param name="barcodeValue">Barcode value.</param>
public static void GetDataMatrixBarcodeAsSvgString(string barcodeValue)
{
    // create the barcode writer
    using (Vintasoft.Barcode.BarcodeWriter barcodeWriter = new Vintasoft.Barcode.BarcodeWriter())
    {
        // set barcode writer settings
        barcodeWriter.Settings.Barcode = Vintasoft.Barcode.BarcodeType.DataMatrix;
        barcodeWriter.Settings.Value = barcodeValue;

        // generate Data Matrix barcode as a SVG string
        return barcodeWriter.GetBarcodeAsSvgFile();
    }
}