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.
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.
| Scanner | GS1 symbologies | AIM identifier | Output to the app |
|---|---|---|---|
| Zebra, DataWedge profile for the app | Barcode input → Decoders → GS1 Datamatrix; Decoder params → Code128 → Enable GS1-128 | Scan params → Code ID Type → Code ID Type Aim | Intent output on, Intent action com.dwbasicintent1.ACTION, Intent delivery — Broadcast Intent; Keystroke output off |
| Honeywell EDA / CT: Settings → Honeywell Settings → Scanning → Internal Scanner → Default profile | Symbology Settings → GS1-128, DataMatrix | Data Processing Settings → Symbology Prefix → AIM | Data Processing Settings → Data Intent on, Wedge off |
| Urovo DT50 / i6300: Scan Settings | GS1-128 in the Code 128 settings; Data Matrix | Label Formatting → Code Id Type → Code Id Type Aim | Keystroke output off — the scanner then sends an intent. Keep Delete Non-printing Control Character off: it removes GS |
| Sunmi L2k / L2s / L2H: Scanner Settings | UCC/EAN 128, Data Matrix | ID type returned → AIM ID | Data Output Mode → Output via broadcast, No text output |
| CipherLab RS / RK: ReaderConfig | Symbology → Code 128 → GS1-128; Data Matrix; Separator Character — None in both | Scanner Preferences → Transmit AIM Code ID | Data Output → Data Output Method → Keyboard Emulation — None; Intent Action and Intent Decode Data as the app shows for CipherLab |
| Newland MT: scanner settings app | Symbologies → 1D code → GS1-128(UCC/EAN-128) (AIM128 is a different symbology); DATAMATRIX | Not in the standard menu — ask Newland support how to turn on the AIM ID | Output Mode → Output via API; leave Broadcast-output Settings at their defaults |