Programming Scanners and Barcodes

All barcode scanners used within the EBMS software require programming to scan barcodes.    The following scanner programming applies to various wired and wireless sales and product scanners.   Review Purchasing a Barcode Scanner for guidelines for purchasing scanner hardware.

Note that this section does not apply to the Mobile Scanners.   Review Mobile Scanners > Configuring the Scanner in EBMS for details on the alternative mobile scanner.

Programming Scanner

Scanners must be configured to start and end the scanning process within EBMS.  The scanner must be programmed to send a F8 ASCI hexadecimal 1D character Chr(29) at the beginning of the scan and the F10 Hex1F chr(31) at the end of the scan.    Review the technical programming instructions provided by the manufacturer to program these important processes that are required to interface with EBMS.  

Scanners reading GTIN and IFT-14 barcodes require an additional prefix.   Scanners programmed to read GTIN and ITF-14 barcodes require the scanners to be configured to send both a F8 ASCI hexadecimal 1D character CHR(29) and an ASCI hexadecimal 1E character CHR(30)  ad the beginning and the F10 Hex1F CHR(31) at the end.  These additional characters are only required to handle GTIN and IFT-14 codes.

Programming Barcodes

Open documents 

The following dialogs can be opened by prefixing the barcode with the following EBMS Special Character Sequences:

Set focus and populate values

The following prefix(es) must be added to focus and populate an entry:  

Combine prefixes

Put the document and entry codes together to create a single string.  Example:  The $S12345$O3$Q3$IABCDE$U10  sets the ordered, shipping, product id, and price within the sales order.

If an inventory-oriented special character sequence is present, the inventory id must also be specified within the same scan. In other words, the barcode sequence must be accompanied by a $I special sequence. If not, the special sequences will not be interpreted. The quantity will default to one (or incremented by one if lines are combined) and all unspecified settings with default if they are not set using the barcode.  

Special character sequences that reference documents ($N, $S) also support lookup by AutoID. For example, expense invoice 123 from VENDOR1 could use either:

$NVENDOR1/123, where APINV.ID = "VENDOR1" and APINV.INVOICE = "            123", or $N5473NP5AL57BBL10 , where APINV.AUTOID = "5473NP5AL57BBL10"

If a special character sequence is present, but the digit following the $ is not recognized (e.g. $1), then the $ prefix will be ignored, and the remainder of the barcode will be processed as if it were not a special character sequence.

If a special character sequence is not present, a lookup on the scanner characters is performed, to see if it is a known inventory item id, UPC, serial number or lot number, in that order.

Focus only

To set focus without assigning a value, the special character must come last and must have no value after it. A dollar sign ($) must be used before each prefix. Multiple prefixes may be used.

Character restrictions

Non-numeric sequences are limited to the character set of the Code 39 Symbology, and $ (dollar sign) is further disallowed, as it is reserved for the special sequence prefix. Therefore, a company's item id's, customer id's, invoices, etc. will not be scannable if they use any other punctuation characters outside of Code 39. Supported punctuation includes: /,%,+.


$Q232$IDUCTAP will add 23 DUCTAP to the order.

$Q232$IDUCTAP$U will add 23 DUCTAP to the order and set the focus on the unit price field.

NOTE: The "Default the Quantity Shipped to equal Quantity Ordered" in Sales->Options must be turned off for this to work, unless you change your "$Q" to "$O".

Special Character Barcode Sequences

NOTE: The order of special characters is not important, but the scan cannot open a document and populate the document on the same barcode.

• $2 Fixed width sequence $2IIIIIIAAAA... unpacks to 2IIIIII AA.AA  Review the UPC-A Barcodes section below:

• $A Extended Price

• $B Compressed number 1WWWWWUUUUUIIIII... uncompressed to WWW.WW, UUU.UU, IIII.....  ( W = unit weight ) Review the Compressed Barcodes section below:

• $C Customer Id

• $D Work Code (Payroll) / Bin Code (Horticulture)

• $E Employee ID

• $F Warehouse Transfer Document

• $H Job Costing Inventory Transfer  (JCINVTRN.ID)

• $I Inventory ID

• $J Job ID

• $K Proposal

• $L Location (Only applies to wireless scanners)

• $M Unit of measure

• $N Expense Invoices -   APINV.ID / APINV.INVOICE  (Example: Vendor: ACE & Invoice 456.5)  = *$NACE/456.5*

• $O Ordered

• $P AutoID of INTRAN to prelink

• $Q Shipped Quantity

• $R  Serial Number

• $S Sales Invoice Number

• $T Task ID (not ticket)

• $U Unit Price

• $V Received (Warehouse Transfer only)

• $W Warehouse  (INWH.WAREHOUSE)

• $X Compressed number 1QQQQQUUUUUIIIII... uncompressed to QQQ.QQ, UUU.UU, IIII.....   Review the Compressed Barcodes section below:

• $Y Section (Horticulture module)

Compressed Barcodes

A "compressed" character sequence is composed of the prefix (e.g. $B), the digit '1', followed by a special encoding of the remaining information. For example, $B format after uncompression is first 5 digits is Quantity xxx.xx next 5 is the price xxx.xx the rest is the inventory ID (or, more likely, UPC code).



Use an EBMS function to compress codes by converting numeric values into alphanumeric codes.

UPC-A Barcode

EBMS supports barcode labels for weighed items (like bulk foods) conforming to the UPC-A symbology.

The printed label may contain all sorts of human-readable information:

But the printed barcode contains only twelve digits of information, formatted as follows:

Example: 2123456 0299 0

If the leading digit is 2 (and the scanner adds a '$' prefix), then EBMS will expect the barcode to be formatted as follows:

  1. First character (2 in example code) identifies the product Type
    0 = normal UPC code
    2 = weighed items
    5 = coupon
    7 = normal UPC code
    Many companies using EBMS are using the code with bulk foods so the leading digit needs to be 2.

  2. Next 6 digits contain the UPC code.  123456 in the example

  3. Next 4 digits contain the price.  0299 in example equals $2.99

  4. Last character (0 in example) is the check digit.   This value is ignored by EBMS.

 In the above example, EBMS would search for an item whose UPC equals "123456" (6 digits). EBMS stores UPC information in the INVENTRY.UPC  and INVENUNT.UP fields:

Review boggle technical documentation for more details on this barcode programming.

Barcodes for the Mobile Scanner

$C Customer (for a new Sales Order)
$E Employee (Log in)
$F Warehouse Transfer
$G Lot Number
$H Job Transfer
$J Job
$L Location (treated as Reference Code in End of Year mode)
$N Purchase Order
$O Serial Number
$P Purchase Order
$R Reference Code (End of Year mode)
$S Sales Order
$T Task
$V Vendor (for a new Purchase Order)
$W Warehouse