Line Encodings

Reference for what you can display on each line of a Cloud Display Device — text, barcodes, QR codes, icons, and quantities.

Display Layout Overview

You control the layout of the display by specifying the content for up to five lines and a quantity parameter, using either the REST API or the QueryString API. Each of the five lines can contain simple text (scaled to maximum size to fit), a barcode, a QR-Code, or an icon.

The quantity parameter will display in a box on the upper left-hand corner of the display if the number is less than 64. If the quantity number is higher, it will display elsewhere.

Fewer Lines = Better Readability

Fewer lines are easier to read. Devices support up to five lines, separated by tildes (~) in QueryString mode. Using fewer lines with shorter text allows the device to scale the text larger for better visibility.

About Code Examples

The examples on this page focus on line encoding syntax and use commands for illustration. However, all these encoding techniques work identically with static fields (statica, staticb, staticc, staticd, statice). Command examples omit the seconds parameter for brevity. See the Commands vs. Statics Quick Reference for complete detail on command vs. static behavior.

Using Line Encodings with Commands vs. Statics

All the encoding techniques on this page work with both commands and statics:

Commands (Temporary)

Use line1line5 with commands

  • Lights up LED, plays sound
  • Requires button press (ACK/NACK)
  • Times out after seconds
  • Returns to static display after

Statics (Persistent)

Use staticastatice without commands

  • No LED or sound
  • No ACK/NACK feedback
  • Never times out
  • Persists until changed

Example: Same Display as Command and Static

# Temporary display with LED and button press
session.post(
    url + "device/DEVICE_ID/",
    headers=headers,
    json={
        'command': 'flash',
        'arrow': 'up',
        'line1': 'Pick Widget A',
        'barcode': 'SKU12345',
        'quantity': 3,
        'color': 'g',
        'seconds': 600
    }
)

Note

Convenience fields like arrow, barcode, qrcode, quantity, and icon work with both commands and statics. The same 5-element display limit applies to both.

Simple Text

Each line supports up to 26 Western characters. The shorter the text the better, both because it's easier to read and because the text will scale to fill the surrounding area.

session.post(
    url + "device/DEVICE_ID/",
    headers=headers,
    json={
        'command': 'flash',
        'line1': 'Pick Item',
        'line2': 'SKU-12345',
        'line3': 'Qty: 5'
    }
)

Barcode

Up to 23 characters can be encoded in a barcode. Barcodes are always placed at the bottom of the display. Barcodes less than 10 characters in length will scan more easily than longer barcodes.

If barcodes are combined with both an icon and a QR code, the maximum length is reduced to 15 characters. Barcodes are encoded in Code 128 B.

Two Ways to Specify Barcodes

You can specify barcodes using either line encoding or a convenience field:

MethodFormatExample
Line Encoding\bc prefix on any line\bc12345Test
Convenience Fieldbarcode parameter"barcode": "12345Test"
session.post(
    url + "device/DEVICE_ID/",
    headers=headers,
    json={
        'command': 'flash',
        'line1': 'Pick Item A',
        'barcode': '12345Test'     # barcode as field
    }
)

URL Encoding

To enter a backslash (\) in a test URL typed into a browser, use the encoded form %5c. For example: %5cbc12345Test.

QR Code

Like barcodes, 2-D QR codes can hold up to 23 characters. When specified, they always appear in the top left corner of the display. QR-Codes are encoded using Version 3.

Two Ways to Specify QR Codes

You can specify QR codes using either line encoding or a convenience field:

MethodFormatExample
Line Encoding\qr prefix on any line\qr12345Test
Convenience Fieldqrcode parameter"qrcode": "12345Test"
session.post(
    url + "device/DEVICE_ID/",
    headers=headers,
    json={
        'command': 'flash',
        'line1': 'Scan to verify',
        'qrcode': 'myspecialcode'   # QR code as field
    }
)

Icons (Arrows)

Icons are placed in the top left corner of the display (unless a QR-Code is also used, in which case they are placed in the bottom left corner).

Info

Icons and arrows can be specified using either line encoding or the icon / arrow convenience fields. Both methods are shown in the examples below.

Arrow Directions

DirectionLine EncodingConvenience Field
Left\icleft"left"
Right\icright"right"
Top / Up\ictop"up"
Bottom / Down\icbottom"down"
Top Left\ictopleft"upleft"
Top Right\ictopright"upright"
Bottom Left\icbottomleft"downleft"
Bottom Right\icbottomright"downright"
session.post(
    url + "device/DEVICE_ID/",
    headers=headers,
    json={
        'command': 'flash',
        'arrow': 'up',            # arrow as field
        'line1': 'Pick Item',
        'line2': 'Shelf Above'
    }
)

Quantity

Quantity values are displayed in a large text box in the top left corner of the display. Values must be between 0 and 63.

MethodSyntaxExample
Line Encoding\qt prefix on any line\qt22
Convenience Fieldquantity parameter"quantity": 22
session.post(
    url + "device/DEVICE_ID/",
    headers=headers,
    json={
        'command': 'flash',
        'line1': 'Pick Widget A',
        'quantity': 5              # displays "5" in quantity box
    }
)

Quantity in Feedback

Big Block users can also receive the quantity value in their "ack" or "nack" feedback URL, making it possible to track adjusted quantities from multi-button devices.

Combined Example

You can combine multiple encoding types in a single command. Here's the same command using both methods:

Display Limit: 5 Elements Maximum

The device display can show a maximum of 5 total elements whether using commands or statics. When composing your display, choose from:
  • Text lines (line1–line5 for commands, or statica–statice for statics)
  • Barcode (either \bc or barcode field)
  • QR Code (either \qr or qrcode field)
  • Quantity (either \qt or quantity field)
  • Icon/Arrow (either or icon/arrow field)

In the examples below, we use 4-5 elements combining these types.

session.post(
    url + "device/DEVICE_ID/",
    headers=headers,
    json={
        'command': 'flash',
        'arrow': 'up',               # arrow pointing up
        'line1': 'Pick Widget A',    # text
        'barcode': 'SKU12345',       # barcode
        'quantity': 3,               # quantity box
        'color': 'g',                # green LED
        'sound': '15,c5,4'          # beep pattern
    }
)

Encoding Reference Summary

Content TypeLine PrefixConvenience FieldMax LengthPosition
Text(none)26 chars/lineAny line
Barcode\bcbarcode23 chars (15 with icon+QR)Bottom
QR Code\qrqrcode23 charsTop left
Icon/Arrow\icicon or arrowTop left (or bottom left with QR)
Quantity\qtquantity0–63Top left (boxed)

Line Encoding vs. Convenience Fields

Both methods work identically, but convenience fields are generally cleaner and easier to read in your code. Line encoding (\ic, \bc, etc.) is useful when you need to dynamically construct display strings or when working with QueryString mode. See the Commands vs. Statics page for more details on how these fields behave in different contexts.

Additional Icons (Hazard Signs)

In addition to arrows, devices support a full set of hazard and safety icons. These use the same \ic prefix followed by hazard and the icon character, or you can use the icon convenience field.

For example, hazardd or "icon": "hazardd" displays a "No Smoking" sign.

The complete icon reference is shown below with visual representations and their corresponding codes:

abcde
hazardahazardbhazardchazarddhazarde
fghij
hazardfhazardghazardhhazardihazardj
klmno
hazardkhazardlhazardmhazardnhazardo
pqrst
hazardphazardqhazardrhazardshazardt
uvwxy
hazarduhazardvhazardwhazardxhazardy
zABCD
hazardzhazardAhazardBhazardChazardD
EFGHI
hazardEhazardFhazardGhazardHhazardI
JKLMN
hazardJhazardKhazardLhazardMhazardN
OPQRS
hazardOhazardPhazardQhazardRhazardS
TUVWX
hazardThazardUhazardVhazardWhazardX
YZ/01
hazardYhazardZhazard`hazard0hazard1
23456
hazard2hazard3hazard4hazard5hazard6
789-=
hazard7hazard8hazard9hazard-hazard=
~!@#$
hazard~hazard!hazard@hazard#hazard$
%^&*(
hazard%hazard^hazard&hazard*hazard(
)_+{}
hazard(hazard_hazard+hazard{hazard}
[]|\;
hazard[hazard]hazard|hazard\hazard;
:'"<
hazard:hazard'hazard"hazard<
,./
hazard,hazard.hazard/