Follow

How to Improve Barcode Detection for Direct Part Marking (DPM) DataMatrix codes

Overview

Direct part marking (DPM) mode can be enabled for DataMatrix symbologies to optimize barcode detection rates, as seen in the Scandit Showcase for iOS and Android.

 

Direct part marking mode in Scandit Showcase

 

How to Optimize for Direct Part Marking (DPM)

The following example works for Scandit SDK version 7.x with the Barcode Capture API. The basic steps are:

  1. Enable Direct Part Marking Mode within the Data Matrix Symbology Settings to enable DPM recognition.
  2. Enable Color Inversion within the Data Matrix Symbology Settings to increase contrast for DPM codes.

 

Kotlin on Android

import com.scandit.datacapture.barcode.capture.BarcodeCaptureSettings
import com.scandit.datacapture.barcode.data.Symbology

val barcodeCaptureSettings = BarcodeCaptureSettings()
barcodeCaptureSettings.enableSymbology(Symbology.DATA_MATRIX, true)

val dataMatrixSymbologySettings = barcodeCaptureSettings.getSymbologySettings(Symbology.DATA_MATRIX)
dataMatrixSymbologySettings.setExtension("direct_part_marking_mode", true)
dataMatrixSymbologySettings.isColorInvertedEnabled = true

 

Java on Android

import com.scandit.datacapture.barcode.capture.BarcodeCaptureSettings;
import com.scandit.datacapture.barcode.data.Symbology;

BarcodeCaptureSettings barcodeCaptureSettings = new BarcodeCaptureSettings();
barcodeCaptureSettings.enableSymbology(Symbology.DATA_MATRIX, true);

SymbologySettings dataMatrixSymbologySettings = barcodeCaptureSettings.getSymbologySettings(Symbology.DATA_MATRIX);
dataMatrixSymbologySettings.setExtensionEnabled("direct_part_marking_mode", true);
dataMatrixSymbologySettings.setColorInvertedEnabled(true);

 

Swift on iOS

import ScanditBarcodeCapture

let barcodeCaptureSettings = BarcodeCaptureSettings()
barcodeCaptureSettings.set(symbology: .dataMatrix, enabled: true)

let dataMatrixSymbologySettings = barcodeCaptureSettings.settings(for: .dataMatrix)
dataMatrixSymbologySettings.set(extension: "direct_part_marking_mode", enabled: true)
    
dataMatrixSymbologySettings.isColorInvertedEnabled = true

 

Objective-C on iOS

#import <ScanditBarcodeCapture/ScanditBarcodeCapture.h>

SDCBarcodeCaptureSettings *barcodeCaptureSettings = [[SDCBarcodeCaptureSettings alloc] init];
[barcodeCaptureSettings enableSymbology:SDCSymbologyDataMatrix enabled:YES];

SDCSymbologySettings *dataMatrixSymbologySettings = [barcodeCaptureSettings settingsForSymbology:SDCSymbologyDataMatrix];
[dataMatrixSymbologySettings setExtension:@"direct_part_marking_mode" enabled:YES];
dataMatrixSymbologySettings.colorInvertedEnabled = YES;

 

TypeScript / JavaScript on Web

import {
  BarcodeCaptureSettings,
  Symbology
} from '@scandit/web-datacapture-barcode';

const barcodeCaptureSettings = new BarcodeCaptureSettings();
barcodeCaptureSettings.enableSymbology(Symbology.DataMatrix, true);

const dataMatrixSymbologySettings = barcodeCaptureSettings.settingsForSymbology(Symbology.DataMatrix);
dataMatrixSymbologySettings.setExtensionEnabled('direct_part_marking_mode', true);
dataMatrixSymbologySettings.isColorInvertedEnabled = true;

 

TypeScript / JavaScript on React Native

import {
  BarcodeCaptureSettings,
  Symbology
} from 'scandit-react-native-datacapture-barcode';

const barcodeCaptureSettings = new BarcodeCaptureSettings();
barcodeCaptureSettings.enableSymbology(Symbology.DataMatrix, true);

const dataMatrixSymbologySettings = barcodeCaptureSettings.settingsForSymbology(Symbology.DataMatrix);
dataMatrixSymbologySettings.setExtensionEnabled('direct_part_marking_mode', true);
dataMatrixSymbologySettings.isColorInvertedEnabled = true;

 

Dart on Flutter

import 'package:scandit_flutter_datacapture_barcode/scandit_flutter_datacapture_barcode.dart';
import 'package:scandit_flutter_datacapture_barcode/scandit_flutter_datacapture_barcode_capture.dart';

final barcodeCaptureSettings = BarcodeCaptureSettings();
barcodeCaptureSettings.enableSymbology(Symbology.dataMatrix, true);

final dataMatrixSymbologySettings = barcodeCaptureSettings.settingsForSymbology(Symbology.dataMatrix);
dataMatrixSymbologySettings.setExtensionEnabled('direct_part_marking_mode', true);
dataMatrixSymbologySettings.isColorInvertedEnabled = true;

 

TypeScript / JavaScript on Capacitor

import {
  BarcodeCaptureSettings, 
  Symbology
} from 'scandit-capacitor-datacapture-barcode';

const barcodeCaptureSettings = new BarcodeCaptureSettings();
barcodeCaptureSettings.enableSymbology(Symbology.DataMatrix, true);

const dataMatrixSymbologySettings = barcodeCaptureSettings.settingsForSymbology(Symbology.DataMatrix);
dataMatrixSymbologySettings.setExtensionEnabled('direct_part_marking_mode', true);
dataMatrixSymbologySettings.isColorInvertedEnabled = true;

 

TypeScript / JavaScript on Cordova

const barcodeCaptureSettings = new Scandit.BarcodeCaptureSettings();
barcodeCaptureSettings.enableSymbology(Scandit.Symbology.DataMatrix, true);

const dataMatrixSymbologySettings = barcodeCaptureSettings.settingsForSymbology(Scandit.Symbology.DataMatrix);
dataMatrixSymbologySettings.setExtensionEnabled('direct_part_marking_mode', true);
dataMatrixSymbologySettings.isColorInvertedEnabled = true;

 

C# on Xamarin / MAUI

using Scandit.DataCapture.Barcode.Capture;
using Scandit.DataCapture.Barcode.Data;

var barcodeCaptureSettings = BarcodeCaptureSettings.Create();
barcodeCaptureSettings.EnableSymbology(Symbology.DataMatrix, true);

var dataMatrixSymbologySettings = barcodeCaptureSettings.GetSymbologySettings(Symbology.DataMatrix);
dataMatrixSymbologySettings.SetExtensionEnabled("direct_part_marking_mode", true);
dataMatrixSymbologySettings.ColorInvertedEnabled = true;
Was this article helpful?
0 out of 0 found this helpful
Have more questions? Submit a request