VintaSoft Barcode .NET SDK 14.3: 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; }
    
    
    public: __property static HibcLicDataMatrixBarcodeSymbology* get_HIBCLICDataMatrix();
    
    
    
    public:
    static property HibcLicDataMatrixBarcodeSymbology^ HIBCLICDataMatrix { HibcLicDataMatrixBarcodeSymbology^ 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 8; .NET 7; .NET 6; .NET Framework 4.8, 4.7, 4.6, 4.5, 4.0, 3.5

    See Also