VintaSoft Barcode .NET SDK 16.0: Documentation for .NET developer
Vintasoft.Barcode.SymbologySubsets Namespace / BarcodeSymbologySubsets Class / HIBCLICDataMatrix Property
Syntax Remarks Example Requirements SeeAlso
In This Topic
HIBCLICDataMatrix Property (BarcodeSymbologySubsets)
In This Topic
Gets the HIBC LIC Data Matrix barcode symbology.
Syntax
'Declaration

Public Shared ReadOnly Property HIBCLICDataMatrix As HibcLicDataMatrixBarcodeSymbology

public static HibcLicDataMatrixBarcodeSymbology HIBCLICDataMatrix { get; }

Remarks

HIBC LIC barcode is used by Labelers of health care products for identification purposes. Subset of Data Matrix barcode symbology.

Example

This C#/VB.NET code shows how to generate and recognize HIBC LIC barcode:



Imports Vintasoft.Barcode
Imports Vintasoft.Barcode.BarcodeInfo
Imports Vintasoft.Barcode.SymbologySubsets
Imports Vintasoft.Imaging

Class HIBCLICExample
    ''' <summary>
    ''' Generates and recognizes HIBC LIC 128 Primary barcode.
    ''' </summary>
    Public Shared Sub TestHibcLic128PrimaryBarcode()
        ' create HIBC LIC Primary data
        Dim primaryData As New HibcLicPrimaryDataStructure("A123", "BJC5D6E7", 1)

        ' create HIBC LIC barcode value
        Dim barcodeValue As New HibcLicValueItem(primaryData)

        ' create barcode writer
        Using writer As New BarcodeWriter()
            ' encode ISBT 128 Data Matrix barcode to writer settings
            BarcodeSymbologySubsets.HIBCLIC128.Encode(barcodeValue, writer.Settings)

            ' generate barcode image
            Using barcodeImage As VintasoftBitmap = writer.GetBarcodeAsVintasoftBitmap()
                ' recognize barcode value
                Dim recognizedValue As HibcLicValueItem = Recognize(barcodeImage)

                ' check value
                If barcodeValue.ToString() <> recognizedValue.ToString() Then
                    Throw New ApplicationException()
                End If

                ' privt value
                PrintValue(recognizedValue)
            End Using
        End Using
    End Sub

    ''' <summary>
    ''' Generates and recognizes HIBC LIC 128 Secondary barcode.
    ''' </summary>
    Public Shared Sub TestHibcLic128SecondaryBarcode()
        ' create HIBC LIC Secondary data
        Dim secondaryData As New HibcLicSecondaryDataStructure("200116", "YYMMDD", "10X3", Nothing)

        ' create HIBC LIC barcode value, used lick characer 'G' - check character from primary data
        Dim barcodeValue As New HibcLicValueItem(secondaryData, "G"C)

        ' create barcode writer
        Using writer As New BarcodeWriter()
            ' encode ISBT 128 Data Matrix barcode to writer settings
            BarcodeSymbologySubsets.HIBCLIC128.Encode(barcodeValue, writer.Settings)

            ' generate barcode image
            Using barcodeImage As VintasoftBitmap = writer.GetBarcodeAsVintasoftBitmap()
                ' recognize barcode value
                Dim recognizedValue As HibcLicValueItem = Recognize(barcodeImage)

                ' check value
                If barcodeValue.ToString() <> recognizedValue.ToString() Then
                    Throw New ApplicationException()
                End If

                ' privt value
                PrintValue(recognizedValue)
            End Using
        End Using
    End Sub

    ''' <summary>
    ''' Generates and recognizes HIBC LIC Data Matrix barcode.
    ''' </summary>
    Public Shared Sub TestHibcLicDataMatrixBarcode()
        ' create HIBC LIC Primary data
        Dim primaryData As New HibcLicPrimaryDataStructure("A123", "BJC5D6E7", 1)

        ' create HIBC LIC Secondary data
        Dim secondaryData As New HibcLicSecondaryDataStructure("210116", "YYMMDD", "10X3", Nothing)

        ' Additional Supplemental Data - date of manufacture
        Dim manufactureDateAdditionalData As New HibcLicManufactureDateAdditionalDataStructure(DateTime.Now)

        ' Additional Supplemental Data - quantity
        Dim quantityAdditionalData As New HibcLicQuantityAdditionalDataStructure(100)

        ' Additional Supplemental Data - quantity
        Dim serialNumberAdditionalData As New HibcLicSerialNumberAdditionalDataStructure("77DEFG45")

        ' create HIBC LIC barcode value
        Dim barcodeValue As New HibcLicValueItem(primaryData, secondaryData, manufactureDateAdditionalData, serialNumberAdditionalData, quantityAdditionalData)

        ' create barcode writer
        Using writer As New BarcodeWriter()
            ' encode ISBT 128 Data Matrix barcode to writer settings
            BarcodeSymbologySubsets.HIBCLICDataMatrix.Encode(barcodeValue, writer.Settings)

            ' generate barcode image
            Using barcodeImage As VintasoftBitmap = writer.GetBarcodeAsVintasoftBitmap()
                ' recognize barcode value
                Dim recognizedValue As HibcLicValueItem = Recognize(barcodeImage)

                ' check value
                If barcodeValue.ToString() <> recognizedValue.ToString() Then
                    Throw New ApplicationException()
                End If

                ' privt value
                PrintValue(recognizedValue)
            End Using
        End Using
    End Sub


    ''' <summary>
    ''' Recognizes the HIBC LIC barcode from image.
    ''' </summary>
    ''' <param name="barcodeImage">The barcode image.</param>
    Private Shared Function Recognize(barcodeImage As VintasoftBitmap) As HibcLicValueItem
        ' create barcode reader
        Using reader As New BarcodeReader()
            reader.Settings.ScanDirection = ScanDirection.Vertical Or ScanDirection.Horizontal
            reader.Settings.AutomaticRecognition = True

            ' specify that HIBC LIC barcodes must be recognizeds
            reader.Settings.ScanBarcodeSubsets.Add(BarcodeSymbologySubsets.HIBCLIC128)
            reader.Settings.ScanBarcodeSubsets.Add(BarcodeSymbologySubsets.HIBCLIC39)
            reader.Settings.ScanBarcodeSubsets.Add(BarcodeSymbologySubsets.HIBCLICAztecCode)
            reader.Settings.ScanBarcodeSubsets.Add(BarcodeSymbologySubsets.HIBCLICDataMatrix)
            reader.Settings.ScanBarcodeSubsets.Add(BarcodeSymbologySubsets.HIBCLICQRCode)

            ' recognize barcodes
            Dim info As IBarcodeInfo = reader.ReadBarcodes(barcodeImage)(0)

            ' return HIBC LIC value
            Return DirectCast(info, HibcLicBarcodeInfo).HibcLicValue
        End Using
    End Function

    ''' <summary>
    ''' Prints HIBC LIC barcode value.
    ''' </summary>
    ''' <param name="value">The recognized value.</param>
    Private Shared Sub PrintValue(value As HibcLicValueItem)
        ' print value
        Console.WriteLine("Barcode value:    " & value.ToString())

        If value.PrimaryDataStructure IsNot Nothing AndAlso value.SecondaryDataStructure IsNot Nothing Then
            Console.WriteLine("Data structure:   Primary + Secondary")
        ElseIf value.PrimaryDataStructure IsNot Nothing Then
            Console.WriteLine("Data structure:   Primary")
        Else
            Console.WriteLine("Data structure:   Secondary")
        End If

        If value.PrimaryDataStructure IsNot Nothing Then
            Console.WriteLine(String.Format("LIC:              {0}", value.PrimaryDataStructure.Lic))
            Console.WriteLine(String.Format("Product ID:       {0}", value.PrimaryDataStructure.Pcn))
            Console.WriteLine(String.Format("Unit of Measure:  {0}", value.PrimaryDataStructure.UnitOfMeasureID))
        End If

        If value.SecondaryDataStructure IsNot Nothing Then
            If value.SecondaryDataStructure.ExpiryDateString IsNot Nothing Then
                Console.WriteLine(String.Format("Expiry date:      {0} ({1}={2})", value.SecondaryDataStructure.ExpiryDate.ToShortDateString(), value.SecondaryDataStructure.ExpiryDateStringFormat, value.SecondaryDataStructure.ExpiryDateString))
            End If
            If value.SecondaryDataStructure.LotNumber IsNot Nothing Then
                Console.WriteLine(String.Format("Lot number:       {0}", value.SecondaryDataStructure.LotNumber))
            End If
            If value.SecondaryDataStructure.SerialNumber IsNot Nothing Then
                Console.WriteLine(String.Format("Serial number:    {0}", value.SecondaryDataStructure.SerialNumber))
            End If
            If value.PrimaryDataStructure Is Nothing Then
                Console.WriteLine(String.Format("Link character:   {0}", value.LinkCharacter))
            End If
        End If

        If value.AdditionalData IsNot Nothing Then
            For Each additionalData As HibcLicAdditionalDataStructure In value.AdditionalData
                If TypeOf additionalData Is HibcLicSerialNumberAdditionalDataStructure Then
                    Console.WriteLine(String.Format("Serial number:    {0}", DirectCast(additionalData, HibcLicSerialNumberAdditionalDataStructure).SerialNumber))
                End If
                If TypeOf additionalData Is HibcLicManufactureDateAdditionalDataStructure Then
                    Console.WriteLine(String.Format("Manufacture date: {0}", DirectCast(additionalData, HibcLicManufactureDateAdditionalDataStructure).ManufactureDate.ToShortDateString()))
                End If
                If TypeOf additionalData Is HibcLicExpiryDateAdditionalDataStructure Then
                    Console.WriteLine(String.Format("Expiry date:      {0}", DirectCast(additionalData, HibcLicExpiryDateAdditionalDataStructure).ExpiryDate.ToShortDateString()))
                End If
                If TypeOf additionalData Is HibcLicQuantityAdditionalDataStructure Then
                    Console.WriteLine(String.Format("Quantity:         {0}", DirectCast(additionalData, HibcLicQuantityAdditionalDataStructure).Quantity))
                End If
            Next
        End If

        Console.WriteLine(String.Format("Check character:  {0}", value.CheckCharacter))
    End Sub
End Class


using System;

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

class HIBCLICExample
{
    /// <summary>
    /// Generates and recognizes HIBC LIC 128 Primary barcode.
    /// </summary>
    public static void TestHibcLic128PrimaryBarcode()
    {
        // create HIBC LIC Primary data
        HibcLicPrimaryDataStructure primaryData = new HibcLicPrimaryDataStructure("A123", "BJC5D6E7", 1);

        // create HIBC LIC barcode value
        HibcLicValueItem barcodeValue = new HibcLicValueItem(primaryData);

        // create barcode writer
        using (BarcodeWriter writer = new BarcodeWriter())
        {
            // encode ISBT 128 Data Matrix barcode to writer settings
            BarcodeSymbologySubsets.HIBCLIC128.Encode(barcodeValue, writer.Settings);

            // generate barcode image
            using (VintasoftBitmap barcodeImage = writer.GetBarcodeAsVintasoftBitmap())
            {
                // recognize barcode value
                HibcLicValueItem recognizedValue = Recognize(barcodeImage);

                // check value
                if (barcodeValue.ToString() != recognizedValue.ToString())
                    throw new ApplicationException();

                // privt value
                PrintValue(recognizedValue);
            }
        }
    }

    /// <summary>
    /// Generates and recognizes HIBC LIC 128 Secondary barcode.
    /// </summary>
    public static void TestHibcLic128SecondaryBarcode()
    {
        // create HIBC LIC Secondary data
        HibcLicSecondaryDataStructure secondaryData = new HibcLicSecondaryDataStructure("200116", "YYMMDD", "10X3", null);

        // create HIBC LIC barcode value, used lick characer 'G' - check character from primary data
        HibcLicValueItem barcodeValue = new HibcLicValueItem(secondaryData, 'G');

        // create barcode writer
        using (BarcodeWriter writer = new BarcodeWriter())
        {
            // encode ISBT 128 Data Matrix barcode to writer settings
            BarcodeSymbologySubsets.HIBCLIC128.Encode(barcodeValue, writer.Settings);

            // generate barcode image
            using (VintasoftBitmap barcodeImage = writer.GetBarcodeAsVintasoftBitmap())
            {
                // recognize barcode value
                HibcLicValueItem recognizedValue = Recognize(barcodeImage);

                // check value
                if (barcodeValue.ToString() != recognizedValue.ToString())
                    throw new ApplicationException();

                // privt value
                PrintValue(recognizedValue);
            }
        }
    }

    /// <summary>
    /// Generates and recognizes HIBC LIC Data Matrix barcode.
    /// </summary>
    public static void TestHibcLicDataMatrixBarcode()
    {
        // create HIBC LIC Primary data
        HibcLicPrimaryDataStructure primaryData = new HibcLicPrimaryDataStructure("A123", "BJC5D6E7", 1);

        // create HIBC LIC Secondary data
        HibcLicSecondaryDataStructure secondaryData = new HibcLicSecondaryDataStructure("210116", "YYMMDD", "10X3", null);

        // Additional Supplemental Data - date of manufacture
        HibcLicManufactureDateAdditionalDataStructure manufactureDateAdditionalData = 
            new HibcLicManufactureDateAdditionalDataStructure(DateTime.Now);

        // Additional Supplemental Data - quantity
        HibcLicQuantityAdditionalDataStructure quantityAdditionalData =
            new HibcLicQuantityAdditionalDataStructure(100);

        // Additional Supplemental Data - quantity
        HibcLicSerialNumberAdditionalDataStructure serialNumberAdditionalData =
            new HibcLicSerialNumberAdditionalDataStructure("77DEFG45");

        // create HIBC LIC barcode value
        HibcLicValueItem barcodeValue = new HibcLicValueItem(
            primaryData, secondaryData, manufactureDateAdditionalData, serialNumberAdditionalData, quantityAdditionalData);

        // create barcode writer
        using (BarcodeWriter writer = new BarcodeWriter())
        {
            // encode ISBT 128 Data Matrix barcode to writer settings
            BarcodeSymbologySubsets.HIBCLICDataMatrix.Encode(barcodeValue, writer.Settings);

            // generate barcode image
            using (VintasoftBitmap barcodeImage = writer.GetBarcodeAsVintasoftBitmap())
            {
                // recognize barcode value
                HibcLicValueItem recognizedValue = Recognize(barcodeImage);

                // check value
                if (barcodeValue.ToString() != recognizedValue.ToString())
                    throw new ApplicationException();

                // privt value
                PrintValue(recognizedValue);
            }
        }
    }


    /// <summary>
    /// Recognizes the HIBC LIC barcode from image.
    /// </summary>
    /// <param name="barcodeImage">The barcode image.</param>
    private static HibcLicValueItem Recognize(VintasoftBitmap barcodeImage)
    {
        // create barcode reader
        using (BarcodeReader reader = new BarcodeReader())
        {
            reader.Settings.ScanDirection = ScanDirection.Vertical | ScanDirection.Horizontal;
            reader.Settings.AutomaticRecognition = true;

            // specify that HIBC LIC barcodes must be recognizeds
            reader.Settings.ScanBarcodeSubsets.Add(BarcodeSymbologySubsets.HIBCLIC128);
            reader.Settings.ScanBarcodeSubsets.Add(BarcodeSymbologySubsets.HIBCLIC39);
            reader.Settings.ScanBarcodeSubsets.Add(BarcodeSymbologySubsets.HIBCLICAztecCode);
            reader.Settings.ScanBarcodeSubsets.Add(BarcodeSymbologySubsets.HIBCLICDataMatrix);
            reader.Settings.ScanBarcodeSubsets.Add(BarcodeSymbologySubsets.HIBCLICQRCode);
       
            // recognize barcodes
            IBarcodeInfo info = reader.ReadBarcodes(barcodeImage)[0];

            // return HIBC LIC value
            return ((HibcLicBarcodeInfo)info).HibcLicValue;
        }
    }

    /// <summary>
    /// Prints HIBC LIC barcode value.
    /// </summary>
    /// <param name="value">The recognized value.</param>
    private static void PrintValue(HibcLicValueItem value)
    {
        // print value
        Console.WriteLine("Barcode value:    " + value.ToString());

        if (value.PrimaryDataStructure != null && value.SecondaryDataStructure != null)
            Console.WriteLine("Data structure:   Primary + Secondary");
        else if (value.PrimaryDataStructure != null)
            Console.WriteLine("Data structure:   Primary");
        else
            Console.WriteLine("Data structure:   Secondary");

        if (value.PrimaryDataStructure != null)
        {
            Console.WriteLine(string.Format("LIC:              {0}", value.PrimaryDataStructure.Lic));
            Console.WriteLine(string.Format("Product ID:       {0}", value.PrimaryDataStructure.Pcn));
            Console.WriteLine(string.Format("Unit of Measure:  {0}", value.PrimaryDataStructure.UnitOfMeasureID));
        }

        if (value.SecondaryDataStructure != null)
        {
            if (value.SecondaryDataStructure.ExpiryDateString != null)
            {
                Console.WriteLine(string.Format("Expiry date:      {0} ({1}={2})",
                    value.SecondaryDataStructure.ExpiryDate.ToShortDateString(),
                    value.SecondaryDataStructure.ExpiryDateStringFormat,
                    value.SecondaryDataStructure.ExpiryDateString));
            }
            if (value.SecondaryDataStructure.LotNumber != null)
                Console.WriteLine(string.Format("Lot number:       {0}", value.SecondaryDataStructure.LotNumber));
            if (value.SecondaryDataStructure.SerialNumber != null)
                Console.WriteLine(string.Format("Serial number:    {0}", value.SecondaryDataStructure.SerialNumber));
            if (value.PrimaryDataStructure == null)
                Console.WriteLine(string.Format("Link character:   {0}", value.LinkCharacter));
        }

        if (value.AdditionalData != null)
        {
            foreach (HibcLicAdditionalDataStructure additionalData in value.AdditionalData)
            {
                if (additionalData is HibcLicSerialNumberAdditionalDataStructure)
                    Console.WriteLine(string.Format("Serial number:    {0}", ((HibcLicSerialNumberAdditionalDataStructure)additionalData).SerialNumber));
                if (additionalData is HibcLicManufactureDateAdditionalDataStructure)
                    Console.WriteLine(string.Format("Manufacture date: {0}", ((HibcLicManufactureDateAdditionalDataStructure)additionalData).ManufactureDate.ToShortDateString()));
                if (additionalData is HibcLicExpiryDateAdditionalDataStructure)
                    Console.WriteLine(string.Format("Expiry date:      {0}", ((HibcLicExpiryDateAdditionalDataStructure)additionalData).ExpiryDate.ToShortDateString()));
                if (additionalData is HibcLicQuantityAdditionalDataStructure)
                    Console.WriteLine(string.Format("Quantity:         {0}", ((HibcLicQuantityAdditionalDataStructure)additionalData).Quantity));
            }
        }

        Console.WriteLine(string.Format("Check character:  {0}", value.CheckCharacter));
    }
}

Requirements

Target Platforms: .NET 10; .NET 9; .NET 8; .NET 7; .NET 6; .NET Framework 4.8, 4.7, 4.6, 4.5, 4.0, 3.5

See Also