Skip to main content

Scanning and barcode input

Across the warehouse the operator identifies the same things the same way — cells, containers, products, and pack types are all recognised from a barcode. This article describes how a code is entered, and how a single scan lands in the right place.

Ways to enter a code​

How a scan is captured depends on the device:

  • Built-in scanner (PDT). The operator aims the terminal's scanner and pulls the trigger; the code drops into the field that is currently active.
  • Camera (Client). On a phone or tablet the device camera reads the code. The camera is only requested on screens where a scan is expected — on screens that do not need one it stays off, so the operator is not interrupted by a camera prompt.
  • Attached scanner (Client). When a ring or handle scanner is paired with the device, it feeds the code straight into the active field without opening the camera.
  • By hand. When a barcode is damaged, missing, or unreadable, the operator types or pastes the code into the field instead of scanning.

One scan, the right field​

A scan is resolved by context — it fills whichever field is active and is interpreted by what the code belongs to:

  • a cell or container code fills the source or the target, depending on which one the screen is waiting for;
  • a product barcode identifies the SKU — see SKU selection;
  • a pack barcode sets the pack type.

The on-screen scanner button starts a scan for the field that is active, so the operator can drive source, target, product, and pack-type selection from a single button without tapping into each field first.

When a scan does not resolve cleanly​

A code is not always enough on its own — it may be unknown to the system, match several products, or not be valid for the current operation. In those cases the operator is guided through a short dialog before continuing — see Barcode resolution.

Scanner setup for GS1 labels​

A GS1 pallet label carries the pallet code (SSCC), the product, the quantity, the lot and its dates — in two or three GS1-128 barcodes that the operator scans one after another, or in a single GS1 DataMatrix. The system reads all of it from the label, but only if the terminal's built-in scanner passes each barcode on unchanged. This section is for the administrator who sets up the scanner on the PDT. The app's camera needs no setup: it reads GS1 labels as they are and collects all barcodes of a label in one go.

Reading GS1 labels also has to be turned on for the company: Global Settings → Barcode policy, Parse GS1-128. The i button next to the switch opens PDT scanner setup for GS1, a short version of the steps below.

Turn on the GS1 symbologies​

Enable GS1-128 (on some scanners it is called UCC/EAN-128) and GS1 DataMatrix in the scanner's list of symbologies. Where there is no separate GS1 DataMatrix switch, enable Data Matrix. Without them the scanner either does not read the label or reads it as an ordinary Code 128.

Send FNC1 as the GS character​

Fields of variable length in a GS1 barcode are divided by an invisible separator, FNC1, which the scanner must send as the GS character (ASCII 29, 0x1D). On many labels such a field is not the last one: the quantity (37) stands before the lot (10). Without the separator the barcode cannot be split unambiguously.

For example, a label (02)07613036611329(20)78(15)280131(37)0036(10)6197091108 without GS after the quantity arrives as …3700361061970…, and there is no telling where the quantity ends and the lot begins.

Most scanners send FNC1 as GS on their own. Make sure nothing replaces or removes it: leave the separator replacement empty and keep removal of control characters off.

Turn on the AIM symbology identifier​

Set the scanner's code identifier to AIM. The scanner then puts a short prefix before the data: ]C1 for GS1-128, ]d2 for GS1 DataMatrix. The prefix is what marks a barcode with a single field as GS1 — for example, a separate lot barcode (10)LLA1763911. Without it that barcode looks like the ordinary code 10LLA1763911, and the operator has to type the lot in by hand.

Without AIM the system still recognises the product barcode, the pallet code and any barcode with a GS inside. A separate barcode with the lot or a date is the one that is lost.

Once AIM is on, most scanners add an identifier to every barcode, so a product's EAN-13 arrives as ]E04820187043135. The app removes such prefixes from barcodes that are not GS1, and ordinary product barcodes keep working.

caution

Update the app on the terminals before you turn AIM on. An older version does not remove the prefixes, and product barcodes stop being found on every screen.

Deliver scans through an intent​

Set the scanner to send its data to the app as an intent (broadcast) and turn keyboard output off: the intent carries the GS character as it is. In keyboard (keystroke) mode the separator can be lost or sent as a key press instead of a character.

In the app on the terminal open Profile → Settings. Under Barcode Scanner turn on Use Intent Receiver, tap Select Device and pick the terminal from Known Devices — the app fills in Intent Action and Data Key. For a scanner that is not on the list, copy the action and the data key from the scanner's intent output settings.

Where to find the settings​

The names below come from the manufacturers' manuals and can differ between firmware versions. If a name does not match, look for the setting by what it does.

ScannerGS1 symbologiesAIM identifierOutput to the app
Zebra, DataWedge profile for the appBarcode input → Decoders → GS1 Datamatrix; Decoder params → Code128 → Enable GS1-128Scan params → Code ID Type → Code ID Type AimIntent output on, Intent action com.dwbasicintent1.ACTION, Intent delivery — Broadcast Intent; Keystroke output off
Honeywell EDA / CT: Settings → Honeywell Settings → Scanning → Internal Scanner → Default profileSymbology Settings → GS1-128, DataMatrixData Processing Settings → Symbology Prefix → AIMData Processing Settings → Data Intent on, Wedge off
Urovo DT50 / i6300: Scan SettingsGS1-128 in the Code 128 settings; Data MatrixLabel Formatting → Code Id Type → Code Id Type AimKeystroke output off — the scanner then sends an intent. Keep Delete Non-printing Control Character off: it removes GS
Sunmi L2k / L2s / L2H: Scanner SettingsUCC/EAN 128, Data MatrixID type returned → AIM IDData Output Mode → Output via broadcast, No text output
CipherLab RS / RK: ReaderConfigSymbology → Code 128 → GS1-128; Data Matrix; Separator Character — None in bothScanner Preferences → Transmit AIM Code IDData Output → Data Output Method → Keyboard Emulation — None; Intent Action and Intent Decode Data as the app shows for CipherLab
Newland MT: scanner settings appSymbologies → 1D code → GS1-128(UCC/EAN-128) (AIM128 is a different symbology); DATAMATRIXNot in the standard menu — ask Newland support how to turn on the AIM IDOutput Mode → Output via API; leave Broadcast-output Settings at their defaults