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.
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:
- Enable Direct Part Marking Mode within the Data Matrix Symbology Settings to enable DPM recognition.
- 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;