Welcome to the Industrial Automation website!

NameDescriptionContent
XING-Automation
E-mail  
Password  
  
Forgot password?
  Register
当前位置:

Zebra EPL2 Complete Guide

F: | Au:FANS | DA:2026-05-15 | 777 Br: | 🔊 点击朗读正文 ❚❚ ▶ | Share:

Zebra EPL2 Programming Complete Guide

Introduction: The positioning and advantages of EPL2

EPL2 (Eltron Programming Language 2) is the core page description language for Zebra desktop printers such as GK420, LP2844, G-Series, etc. Unlike the early line mode (EPL1), EPL2 adopts a "assemble first, print later" mechanism, which can efficiently process text, barcodes, graphics, and QR codes. Its syntax is concise and commands are compact, making it particularly suitable for quickly generating tags in resource constrained embedded environments.

This article is based on the official EPL Programming Guide (document number 14245L-003 Rev. A), which outlines common commands, form storage techniques, variable and counter usage, 2D barcode configuration, network settings (SGD), and common troubleshooting methods for engineers. It helps you quickly locate problems when developing or maintaining Zebra printing applications.


EPL2 Basic Concepts and Command Structure

2.1 Command syntax rules

Each EPL2 command starts with one or two case sensitive letters, followed by parameters (separated by commas), and ends with a line break (LF, ASCII 10). The carriage return (CR) will be ignored. The optional parts in the parameters are represented by square brackets, and the fixed data is enclosed in double quotation marks.

Example: A50,50,0,1,1,1, N, "Hello" - Print "Hello" at coordinates (50,50) using font 1, in normal orientation, without highlighting.

2.2 Image Buffer and Coordinate System

EPL2 uses a dot matrix coordinate system, with the origin (0,0) located in the upper left corner. The X-axis represents width, and the Y-axis represents height. All drawing commands (text, barcode, lines, boxes) are based on this coordinate system. Before printing, the image buffer must be cleared using the N command.

2.3 Media and Printing Control

Set label width (dots): q416 represents a width of 416 dots.

Q sets the label length and gap: Q160,24 represents 160 point labels+24 point gaps.

S sets the printing speed: S2 corresponds to 2 ips (inches/second), the specific value varies depending on the model.

D Set printing density: D5 range 0-15 (0 is shallowest, 15 is deepest).

P printing label: P1 prints one set, P2, Print 2 sets, with 3 copies per set.


Detailed explanation and practical skills of core commands

3.1 Text Printing - A Command

Command syntax: A p1, p2, p3, p4, p5, p6, p7, "DATA"

P1, p2: Starting coordinates (points)

P3: Rotation (0/1/2/3=0 °/90 °/180 °/270 °)

P4: Font selection (1-5 are built-in equal width Latin fonts; 8-9 are Asian double byte fonts; A-Z are soft fonts)

P5, p6: Horizontal/vertical magnification (1-6, 8, and 1-9)

P7: Normal (N) or reversed (R)

Tip: It is recommended to use the LE (Line Draw Exclusive OR) command to draw white text on a black background instead of the R parameter of the A command for more precise border control.

3.2 One Dimensional Barcode - B Command

The B command supports Code 39, Code 128, EAN/UPC, Interlocked 2 of 5, Codabar, Postnet, Planet, and more. The parameters include narrow bar width, wide bar width, barcode height, and whether to print readable characters.

Common problem: Barcode scanner cannot read barcodes in the "ladder" direction (rotated 90 °/270 °). Suggest using the "fence" direction (0 °/180 °) as much as possible. If rotating barcodes must be used, automatic optimization can be disabled through the oB command (but this may cause some scanners to fail to read, and Zebra does not guarantee compatibility).

Code 128 functional characters: Supports FNC1 – FNC4, automatically processes extended ASCII. For 5 or more consecutive extended characters, the printer automatically locks into extended mode; If there are less than 5, use the shift method.

3.3 Graphic Storage and Printing - GM/GG

GM "NAME" size: Download PCX format graphics to memory, size is in bytes. Binary data follows closely behind.

GG x, y, "NAME": Print stored graphics.

GW x, y, width, height, data: Directly write the original bitmap data into the image buffer (without storage).

Operation suggestion: Use DOS COPY/b command or Zebra Firmware Downloader to send graphic files. Do not add extra line breaks after graphic data.

3.4 Tables and Lines

LO x, y, width, height: Draw a black solid rectangle (covering existing content).

LW x, y, width, height: Draw a white rectangle (erase).

LE x, y, width, height: XOR line drawing can be used to invert existing graphics.

Form storage and automation of variables/counters

4.1 Form Concept

EPL2 allows storing complete label designs as "Forms". The form can contain fixed elements, variable fields, and counters, and can be printed by filling in variables each time it is called. This greatly reduces the overhead of duplicate data transmission.

Storage process:

FS "FORMNAME" - Start storing the form.

Define variables (V00,10, N, "Prompt"), counters (C0,5, L,+1, "-"), then add commands such as A/B and reference these variables.

FE - End storage.

Call process:

FR "FORMNAME" - Recall the form from memory.

Command followed by variable values (in defined order).

P1 printing.

4.2 Variables (V command)

Vnn, max, justification, "prompt" defines a variable field, where nn ranges from 00 to 99 and max is the maximum number of characters. Reference through Vnn in text or barcode data.

Expression support: A100200, 0, 4, 1,1, N, "Oil change at" V00+3000 "miles." can perform addition operations (only supports constant and variable addition). If the result exceeds the field length, fill in "X".

4.3 Counter (C command)

Cn, digits, justification, step, "prompt" define automatic up/down counters (only numbers are supported). The step size is+1 to+9 or -1 to -9. Use as an additional variable when the step size is+0.

Protecting consecutive numbers: Adding a minus sign - in front of the prompt can make the prompt only appear once when the form is recalled, and then automatically use the last value and increment it to prevent duplicate printing of the same serial number.


Advanced configuration of 2D barcode

EPL2 supports two-dimensional barcodes such as Aztec, Data Matrix, MaxiCode, PDF417, QR Code (Japanese models), etc., all of which use the b command, but the third parameter is different (A is Aztec, D is Data Matrix, M is MaxiCode, P is PDF417, Q is QR Code).

5.1 PDF417 Automatic Optimization

b x,y,P,max_width,max_height,sN,cM,xW,yH,rR,lC,tT,oR,"DATA"

Set the error correction level (s0-s8, default automatic).

Choose compression mode (c0 automatic, c1 binary).

X module width (dots, 2-9), y module height (4-99, default 4 x width).

Maximum number of rows for r and maximum number of columns for l.

The printer will automatically adjust the module size and number of rows/columns to fit the maximum size limit.

Common error: When the amount of data is too large to fit, error 93 (PDF-417 coded data too large) will be reported. The maximum width/height should be increased or the error correction level should be raised.

5.2 MaxiCode Mode Selection

MaxiCode supports modes 2, 3, 4, and 6. If not specified, the printer automatically selects mode 2 for all digits and mode 3 for alphanumeric characters based on the postal code. The data format for Mode 2/3 is: [)><RS>01<GS>zip<GS>country<GS>class<GS>tracking<GS>..., where<RS>=0x1E,<GS>=0x1D. The printer can automatically parse the AIM standard format.

5.3 Geometric Shape of Data Matrix

B x, y, D, cC, rR, hH, "DATA" where C specifies the number of columns and R specifies the number of rows. If not specified, the printer automatically selects the smallest square. If only columns (such as 18, 26, 32, 36, 48) or rows (8, 12, 16) are specified, rectangular symbols may be generated. When the data length is incompatible with the geometric shape, error 03 (Data Length Error) is reported.


Asian fonts and multilingual support

Asian models (Chinese, Japanese, Korean) support dual byte font 8 (24 × 24 dots @ 203 dpi, 36 × 36 @ 300 dpi) and font 9 (Traditional Chinese/Japanese). Single byte Latin fonts are retained simultaneously.

Use the 'i' command to set the spacing between Asian characters: i3 adds 3 spaces between characters.

Japanese JIS input: Use Shift (1C hex) plus&to enter JIS mode, Shift. to exit.

Code page switching: I8,0001 select American English (Code Page 437). The appendix lists various code pages (437, 737, 850, 852, 855, 857, 860, 861, 862, 863, 865, 866, 869, 1250-1255) and Asian double byte code pages.

Practical reminder: When changing languages, the corresponding firmware version must be used (such as Simplified Chinese, Japanese, and Korean are not compatible with each other). Switching code pages through the I command only affects Latin fonts (1-5) and does not affect double byte fonts 8/9.

SGD Command: Network and Device Configuration

The SGD (Set/Get/Do) command allows for dynamic configuration of printers through serial ports, USB, or Ethernet. They are! Starting with U1, the format is! U1 getvar "attribute" or!  U1 setvar "attribute" "value"。

7.1 Common Configuration Items

Example values for attribute description

The current programming language for device. languages is epl_zpl, which supports both EPL and ZPL

Media.printmode Printing modes: tea off ("T"), peel off ("P"), cutter ("C")

Ip.primary_network main network interface wired or wireless

Ip.dhcp.enable DHCP switch on/off

Ip.addr static IP address "192.168.1.100"

WLAN.ESSID wireless network name "Zebra_SIP"

The security types "none", "wep 40 bit", "wpa psk", etc. for wlan.security

Odometer.otal_print_1ength The total print length of the printer (read-only) returns "12345 INCHES, 31356 CENTIMETERS"

Debugging tips: Use! U1 getvar "ip.active_network" to check if the current connection is wired or wireless. If wireless association fails, check wlan.associated and wlan.signal_strength.

7.2 Batch Sending SGD Commands

Can be omitted! U1 prefix, end with END:

text

! U getvar "ip.telnet.enable"

getvar "ip.dhcp.enable"

END


Common faults and diagnostic methods

8.1 Dump Mode

Send the dump command to put the printer into dump mode. All data received afterwards will be printed in hexadecimal and ASCII format for checking the actual byte sequence sent to the printer. Press the feed button to print multiple pages, and then press the feed button to exit the dump mode.

Application scenario: When the label output does not match expectations, first enter dump mode, print a page, and observe whether the data contains unexpected control characters (such as extra line breaks, NUL, etc.), especially baud rate errors or XON/XOFF interference in serial communication.

8.2 Error Report

US Enable Error Report: When an error occurs, the serial port returns NACK (0x15) and an error code.

^Ee immediately returns an error status (4 bytes).

Common error codes: 07 (missing paper or tape), 08 (duplicate name), 09 (name not found), 11 (print head lifted), 84 (AutoSense failed).

Solution suggestion: Automated applications should regularly poll ^ ee or enable US to obtain real-time information on paper shortage status to avoid losing print tasks.

8.3 AutoSense and Media Detection

The xa command executes AutoSense to automatically calibrate sensors and set gap/black label parameters, but does not print configuration labels. If the printer's paper feed is inaccurate after replacing the medium, execute xa once. For continuous paper (without gaps), manually set the Q command and set the second parameter to 0.

8.4 Print Head Life Reminder (G-Series and 2746e)

Enable print head lifespan reminder for oLY, disable for oLN. OL [threshold, freq, "message"] Customize reminder thresholds (in kilometers), reminder frequencies (every N tags), and custom messages. URR prints the current status, while URH prints the print head history. These features help develop preventive maintenance plans.


Performance optimization and memory management

9.1 Dual Buffer Mode

RN disables double buffering, rY re enables it. Double buffering allows for the preparation of the next image while printing the previous label, improving throughput. But when the label width is small and there is not enough memory, the printer will automatically disable it. You can check the configuration through the U command to confirm if it is in a double buffering state.

9.2 Memory Allocation

The M command (for older firmware only) sets the memory size of the form. Modern Flash printers automatically manage memory, but users should still pay attention to:

EI lists soft fonts, EK "*" removes all soft fonts.

GI lists graphics, GK "*" deletes all graphics.

FI lists the forms, FK "*" deletes all forms.

Frequent deletion/storage will consume Flash write life, so try to reuse forms/graphics as much as possible.

9.3 Accelerate Printing Speed

Use S to select the appropriate printing speed (too high may cause barcode deformation).

Use D to adjust the concentration and avoid excessive heating.

Try to reduce the size of the image buffer as much as possible: when q is set small, double buffering is easier to take effect.

Use JB/JC/JF to control the "header top rollback" behavior to avoid unnecessary paper feeding/unloading actions.


Upgrading and replacement precautions

If upgrading from old models (such as Eltron early printers) to Zebra G-Series or 2844, please note:

Command compatibility: EPL2 commands are basically the same, but some options (such as the P option in the O command) may be different. Suggest printing configuration labels (U) on the new printer to confirm the firmware version.

Serial port settings: default 9600, N, 8,1. After using the Y command to make changes, the printer automatically resets and the host must synchronize the changes.

Line mode switching: Some models support EPL1 line mode, which can be switched by pressing the paper button when powered on, or by sending OEPL1 (later switched back to ESC EPL2).

Windows driver: Zebra universal printer driver supports sending EPL commands directly. In the Driver Properties → Printer tab → Tools, you can open the "Direct Command Input" window and test each command one by one.

  • Sigmatek MDD111-1 DIAS Drive Axis Module
  • Sigmatek DKL042 05-024-042 Terminal Module
  • Sigmatek DM822 Control Module
  • Sigmatek CDM167 12-008-167-O Module
  • Sigmatek TAE151 Touch Display Unit
  • Sigmatek DCC041 SLIDES Module 05-700-041-D
  • Sigmatek AKM65M-ANC2GBB0 PM Servo Motor
  • Sigmatek ETT221 01-230-221 Operator Terminal
  • Sigmatek SLIDES DAM 124 Analog Module
  • Sigmatek AKM31C-ANCNGBB0 Servo Motor
  • Mannesmann Demag Sigmatek CP626 Central Unit
  • SIGMATEK 0332.554.03 Board 371071000154
  • SIGMATEK 12-250-021 Base Plate Back Panel CM5V020
  • SIGMATEK DM162 S-DIAS Digital Mix Module
  • DEMAG ERGOTECH 061 381 66 Sigmatek 9842.243.02 Circuit Board
  • SIGMATEK CP313-1 PLC Module
  • Sigmatek ETV0551-2 VARAN Touch Terminal
  • Sigmatek SDM 081 FS S-Dias Safety Module
  • DEMAG 05-250-023 Ergotech Motherboard with Sigmatek TMS012
  • Sigmatek CM5V020 12-250-023-K Wiring Base
  • Sigma Tek 5000B-37 Attitude Gyro Indicator
  • Sigmatek SDD120-2 DIAS Drive
  • Sigmatek CME221 Memory Module
  • Sigmatek DCP640 DIAS Central Unit
  • Sigmatek STO040 Safety Output Module
  • Sigmatek CET281 Control Panel
  • Sigmatek CIPC LX800 Demag NC5 CPU
  • Sigmatek DKL093 05-024-093 Terminal Module
  • Sigmatek AI088 20-009-088 Analog Input Module
  • Sigmatek CAI888 Analog Input Module
  • SIGMATEK CCA021 12-025-021 Analog Output Module
  • SIGMATEK 1104.579.05 Control Module
  • SIGMATEK SDI100 Digital Input Module
  • SIGMATEK C-IPC 256MB LX800 Compact Dias
  • SIGMATEK 9423.090.02 Control Module
  • SIGMATEK C-IPC 256 Power Supply 148498
  • SIGMATEK CAI025 Analog Input Module
  • SIGMATEK CTO166 Digital Output Module
  • SIGMATEK CP112 20-004-112 Processor Module
  • SIGMATEK CAI887 12-009-887 Safety Module
  • Sigma-Tek 4000B-31 Directional Gyro 1U262-002-42
  • Sigmatek C-IPC 256MB LX800 IPC Controller
  • Sigmatek C-IPC 01-450-031 Industrial PC LX800
  • Sigmatek C-IPC 256 Industrial PC Controller
  • Sigmatek CCP-531 PLC Processor Module
  • Sigmatek CDI163 Digital Input Module
  • Sigmatek ETV0501 VARAN Terminal 12-230-0501
  • Sigmatek CTMS020 C-DIAS Technology Module
  • Sigmatek CIV512 VARAN Switch Module
  • Sigmatek HU011 20-080-011 Interface Module
  • SIGMATEK SLIDES DAM 124 Module
  • SIGMATEK C-IPC 161 01-450-161L Industrial PC
  • SIGMATEK C-IPC 128MB VIA 733MHz 01-450-024-K
  • SIGMATEK 12-780-012 R8-IPC Geode LX800 Module
  • SIGMATEK CAM124 Analog Module
  • SIGMATEK S1 032-8AF61-R4 EZ Servo Motor
  • SIGMATEK CTO163 Digital Output Module
  • SIGMATEK CCP082 12-004-082 Processor Module
  • SIGMATEK CRCH081 C-DIAS Temperature Module
  • SIGMATEK PC322-K 01-310-322-K Industrial PC
  • SIGMATEK SDD310-2 Servo Drive
  • SIGMATEK AI084 Analog Input Module
  • SIGMATEK CRCH081 12-752-081 Temperature Module
  • Sigma-Tek 5000L-4 Attitude Gyro 1U284-001-3
  • SIGMATEK CM5V020 12-250-023-K Wiring Module
  • Sigma-Tek 4000H-6 Directional Gyro IU262-035-7
  • SIGMATEK Dias DCP160 05-004-160 Processor Module
  • SIGMATEK 0147.395.02 Control Module
  • SIGMATEK A1084 Control Module
  • SIGMATEK DI200 20-006-2000 Digital Input Module
  • Sigmatek DNC115 Encoder Module
  • Sigmatek DAM122 05-017-122 Analog Module
  • Sigmatek 9802.289.01 Control Board TA71 Display
  • Sigmatek TO127 20-007-127 Digital Output Module
  • Sigmatek DNC031 05-011-031 Digital Module
  • Sigmatek VI022 20-003-022 Interface Module
  • Sigmatek CAI085 Analog Input Module
  • Sigmatek CP111 S-DIAS CPU Module
  • Sigmatek CTMS030 Krauss Maffei Module
  • Sigmatek CAM123 Control Module
  • Sigmatek TAE732-P 01-240-732-P Touch Display Unit
  • Sigmatek MDM021 Digital Mixed Module
  • Sigmatek DCP642 DIAS Central Unit
  • Sigmatek CST022 12-014-022 C-DIAS Module
  • Sigmatek SRO021 20-893-021 Safety Relay Output
  • Krauss Maffei MC5 Control System Sigmatek
  • Sigmatek DC061 Module 18-24VDC 300mA
  • Herrmann EVT0855 Ultrasonic Welder Touch Panel
  • Sigmatek CIV521 Control Module 1.4A 2W
  • Sigmatek DDI61 05-006-161 Digital Input Module
  • SIGMATEK ETT312-E Touch Terminal 01-230-312
  • Cessna S3326-1 Sigma Tek 5000B-67 Gyro 1U149-015-9
  • SIGMATEK PS101 Power Supply Module
  • SIGMATEK 0332.554.03 Control Module 371071000154
  • SIGMATEK ETT312-E Touch Terminal 01-230-312
  • SIGMATEK CDM163 Control Module
  • SIGMATEK VSV046 16-023-046 Module
  • SIGMATEK AM221 20-017-221 Analog Module
  • SIGMATEK CTS051 12-053-051 Control Module
  • SIGMATEK AM221 20-017-221 Analog Module
  • Sigmatek CSDI161 12-891-161 Safety Input Module
  • Sigma Tek 4000C-1 Directional Gyro Indicator
  • Sigmatek ETV0501 12-230-0501 VARAN Terminal
  • Sigmatek DDM165 SLIDES Module
  • Sigmatek N100 20-011-100 Control Module
  • Sigmatek AKM54K-ANC2R-B0 PM Servo Motor
  • Sigmatek CTO166 Digital Output Module
  • Sigmatek CP212-K 20-004-212-K CPU Module
  • Sigmatek CDI161 Digital Input Module
  • Sigmatek DCC080 05-700-080-2 Control Module
  • SIGMATEK SCP011 S-DIAS Safety CPU
  • SIGMATEK SCP011 S-DIAS Safety CPU
  • SIGMATEK SRO022 Relay Output Module
  • SIGMATEK MDD 121 Drive Axis Module
  • SIGMATEK DSI021 SLIDES Siemens Interface
  • SIGMATEK DIAS DCP161 Module 05-004-161
  • Sigmatek ETT312 Built-in Touch Terminal
  • SIGMATEK DCP 643 DIAS Controller System
  • SIGMATEK CIO021 Multi I/O Module
  • SIGMATEK CTMS020 Control Module
  • Sigmatek CME 221 Memory Module
  • Sigmatek 0420.615.01 Control Board
  • Sigmatek CP111 20-004-111 CPU Module
  • Sigmatek 9405.065.03 Control Board
  • Sigmatek ETEK 01-450-032-K C-IPC 256MB Industrial PC
  • Sigmatek CTO163 12-007-163 Safety Output Module
  • Sigmatek TO081 20-007-081 Digital Output Module
  • Sigmatek SI021 20-022-021 Safety Input Module