19.11.2014 Views

Downloads - Motorola Solutions LaunchPad Developer Community

Downloads - Motorola Solutions LaunchPad Developer Community

Downloads - Motorola Solutions LaunchPad Developer Community

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Developing Zebra Printing<br />

Capabilities into your<br />

Mobile Applications on<br />

Enterprise Android and<br />

Microsoft platforms<br />

Choo ChaiPei<br />

Zebra Technologies Asia Pacific<br />

ISV Technical Support, APAC


ZEBRA OVERVIEW<br />

• Chicago-based, large manufacturer of printing & location systems<br />

• Best in Class AIDC solution provider with vertically targeted<br />

location software solutions<br />

• 6M printers shipped to 100 countries<br />

• Broadest product portfolio in the industry<br />

• Exceptional technical expertise<br />

Active RFID<br />

Location Tracking<br />

Desktop<br />

Bar Code<br />

Mobile<br />

Kiosk<br />

High<br />

Performance<br />

Bar Code<br />

Midrange<br />

Bar Code<br />

Card<br />

Passive<br />

RFID<br />

Photo<br />

24730<br />

(WhereNet)<br />

UWB<br />

(MSSI)<br />

2<br />

Zebra Confidential<br />

1985 1990 1995<br />

2000<br />

2010


WORLDWIDE ZEBRA LOCATIONS<br />

Worldwide Headquarters | Lincolnshire, IL USA<br />

Regional Headquarters | Vernon Hills, IL USA | Bourne End, UK | Doral, FL, USA | Singapore<br />

United States of America<br />

Lincolnshire, IL<br />

Vernon Hills, IL<br />

San Jose, CA<br />

Agoura Hills, CA<br />

San Diego, CA<br />

Greenville, WI<br />

Lincoln, RI<br />

Flowery Branch, GA<br />

Doral, FL<br />

Germantown, MA<br />

McAllen, TX<br />

Madison Heights, MI<br />

Rogersville, TN<br />

Bentonville, AR<br />

3<br />

Zebra Confidential<br />

Latin America<br />

Mexico City, Mexico<br />

Monterrey, Mexico<br />

Guadalajara, Mexico<br />

Buenos Aires,<br />

Argentina<br />

Brasilia, Brasil<br />

Sao Paulo, Brasil<br />

EMEA<br />

Bourne End, UK<br />

Preston, UK<br />

Paris, France<br />

Crailsheim, Germany<br />

Dusseldorf, Germany<br />

Frankfurt, Germany<br />

Chennai, India<br />

Mumbai, India<br />

Milan, Italy<br />

Duerne, Belgium<br />

Heerenveen, Netherlands<br />

Zeist, Netherlands<br />

Warsaw, Poland<br />

Moscow, Russia<br />

Johannesburg, South Africa<br />

Barcelona, Spain<br />

Stockholm, Sweden<br />

Dubai, UAE<br />

APAC<br />

Singapore<br />

Mosman, NSW,<br />

Australia<br />

Hong Kong, China<br />

Shanghai, China<br />

Beijing, China<br />

Yokohama, Japan<br />

Seoul, Korea<br />

Mumbai, India


ZEBRA SPECIALTY PRINTING SOLUTIONS<br />

High Performance<br />

Printers<br />

Mid-Range<br />

Printers<br />

Desktop Printers<br />

Patient ID Printer<br />

Performance<br />

Class Card Printers<br />

Security<br />

Card Printers<br />

Mobile Printers<br />

Kiosk Printers<br />

Specialty Supplies<br />

RFID<br />

Printer/Encoders<br />

Direct to Card<br />

Printers<br />

Retransfer<br />

Card Printers<br />

Print and Apply<br />

Engines<br />

Printer<br />

Management<br />

Software<br />

Label Design<br />

Software<br />

Networking<br />

Products<br />

ID <strong>Solutions</strong><br />

Card Printer<br />

Supplies<br />

5<br />

Zebra Confidential


ZEBRA SPECIALTY PRINTING SOLUTIONS<br />

6<br />

Zebra Confidential


VERTICAL MARKETS AND INDUSTRIES<br />

healthcare<br />

government<br />

retail<br />

transportation<br />

& logistics<br />

automotive<br />

manufacturing<br />

oil & gas<br />

7<br />

Zebra Confidential


TODAY’S REQUIREMENT<br />

• Modern enterprises require printing operations at any<br />

level of the organization.<br />

• When barcode printing is involved, it most likely means<br />

that printing is a vital part of the asset management and<br />

logistics of the business.<br />

• Driving a modern printing infrastructure can be very easy<br />

when the right tools are used.<br />

• Users at any level ask for simplicity, ie.:<br />

– The end users just wants to print a label with relevant data;<br />

– <strong>Developer</strong>s want to focus their resources in the actual design<br />

and user experience, not working out how the different printers<br />

work.<br />

8<br />

Zebra Confidential


SYSTEM ELEMENTS LAYERS OF<br />

CONTROL – INTEGRATE LAYER<br />

APPLICATIONS<br />

Communication<br />

Data Manipulation<br />

Configuration<br />

Formatting<br />

ZPL, CPCL, EPL, APL(s)<br />

SGD, SNMP, XML, HTML, WML<br />

ZBI<br />

Serial, Parallel, USB, Ethernet, WLAN, Bluetooth, RFID<br />

9<br />

Zebra Confidential


ZEBRA LINK MULTIPLATFORM SDK<br />

iOS SDK<br />

Win Mobile and<br />

Win CE SDK<br />

Android SDK<br />

Blackberry SDK<br />

10<br />

Zebra Confidential


WHAT'S IN THE SDK?<br />

• Free Software Development Kit<br />

– Programming methods and classes<br />

– Documentation – with examples<br />

– Source code for common tasks:<br />

• Discover, Pair, Print Format, Fill Variables, Print Image, List Files,<br />

Read Mag Stripe, Check Printer Status<br />

• SDK installs in Windows or Mac OS X<br />

– All files are included, ready for use<br />

– Easily integrated into Development Environments<br />

11<br />

Zebra Confidential


SDK FEATURES AND BENEFITS<br />

• ZebraLink Smartphone Utility (Zebra<br />

Utilities)<br />

– <strong>Downloads</strong> & installs directly to your<br />

phone<br />

– A free functional utility and a demo tool<br />

• Find, Print & Manage<br />

– Find – Printers via Bluetooth or WLAN<br />

– Print – Variable content labels, with<br />

forms generated on the fly<br />

– Manage – Check status, reset<br />

configurations, print configuration page<br />

12<br />

Zebra Confidential


...CODE SNIPPET ON WIN MOBILE / CE<br />

SDK<br />

private void doConnectBT() doConnectUsb() doConnectSerial() private void connectTCP(String { { {<br />

ipAddress, int portNumber) {<br />

if (this.macAddress.Length updateGuiFromWorkerThread("Connecting... this.ipAddress != 12) = ipAddress; {<br />

Please wait...", Color.Goldenrod);<br />

updateGuiFromWorkerThread("Connecting... updateGuiFromWorkerThread("Invalid try { this.portNumber = portNumber; MAC Please Address", wait...", Color.Red); Color.Goldenrod);<br />

disconnect(); connection Thread = new UsbPrinterConnection(this.usbPort);<br />

t = new Thread(doConnectTcp);<br />

try<br />

} else<br />

{<br />

threadedConnect(this.usbPort);<br />

{ t.Start();<br />

updateGuiFromWorkerThread("Connecting... } catch (ZebraException) }<br />

{<br />

Please wait...", Color.Goldenrod);<br />

connection = new SerialPrinterConnection(this.portName, this.baudRate, this.dataBits, this.parity, this.stopBits,<br />

try updateGuiFromWorkerThread("COMM {<br />

Error! Disconnected", Color.Red);<br />

this.handshake);<br />

connectionClosed(); = new BluetoothPrinterConnection(this.macAddress);<br />

threadedConnect(this.portName);<br />

} threadedConnect(this.macAddress);<br />

} } catch (ZebraException) {<br />

} catch updateGuiFromWorkerThread("COMM (ZebraException) {<br />

Error! Disconnected", Color.Red);<br />

public void connectionClosed();<br />

sendLabel() {<br />

ZebraPrinter updateGuiFromWorkerThread("COMM } printer = getPrinter(); Error! Disconnected", Color.Red);<br />

} if (printer != null) {<br />

} connectionClosed();<br />

byte[] configLabel = getConfigLabel(printer.GetPrinterControlLanguage());<br />

getConnection().Write(configLabel);<br />

} updateGuiFromWorkerThread("Sending Data", Color.CornflowerBlue);<br />

Thread.Sleep(2000);<br />

} }<br />

disconnect(); }<br />

private byte[] getConfigLabel(PrinterLanguage printerLanguage) {<br />

string unicodeString = "";<br />

unicodeString = "! 0 200 200 400 1\r\n" +<br />

"SETFF 350 5\r\n" +<br />

"TEXT GBUNSG24.CPF 0 50 10 真 珍 斑 马 科 技 有 限 公 司 \r\n" +<br />

"FORM\r\n" +<br />

"PRINT\r\n";<br />

}<br />

//return unicodeBytes;<br />

return Encoding.UTF8.GetBytes(unicodeString);<br />

13<br />

Zebra Confidential


SUPPORTED PRINTERS….<br />

Desktop Tabletop Mobile Kiosk<br />

G Series GC<br />

G Series GK<br />

G Series GX<br />

HC 100<br />

2824 Plus<br />

ZT200 Series<br />

Xi Series<br />

Z Series<br />

105 SL<br />

S4M<br />

QLn<br />

RW<br />

P4T<br />

MZ<br />

QL Plus<br />

KR203<br />

KR403<br />

LP/TLP Plus<br />

14<br />

Zebra Confidential


RHOMOBILE SUITE & RHOELEMENTS<br />

• <strong>Motorola</strong> provides the developer community with<br />

RhoMobile Suite<br />

• RhoMobile Suite and its enterprise extension<br />

RhoElements overcome the traditional compromise<br />

between consumer experience and enterprise robustness.<br />

• Cross-platform : develop ones and deploy in several<br />

platforms (Android, iOS, etc )<br />

15<br />

Zebra Confidential


HOW IT WORKS?<br />

HTTP POST /<br />

BLUETOOTH<br />

ZPL/CPCL<br />

16<br />

Zebra Confidential


APD<br />

• Simple<br />

• Yet powerful interface to RhoElements applications to<br />

transfer to virtually any portable printer via Bluetooth or<br />

Wireless LAN<br />

17<br />

Zebra Confidential


WHAT CAN APD PRINT?<br />

• Receipts<br />

• Labels<br />

• Tags<br />

• Tickets<br />

• Wristbands<br />

• Whatever the printer can print!<br />

18<br />

Zebra Confidential


TEMPLATE FILES<br />

19<br />

• ^XA<br />

• ^MMT<br />

• ^PW291<br />

• ^LL3300<br />

• ^LS0<br />

• ^FT80,1808^BQN,3,7^FDMM,A$$[1]$$^FS<br />

• ^FT181,2677^A0B,58,57^FH\^FD$$[1]$$^FS<br />

• ^FT267,2677^A0B,58,57^FH\^FD$$[2]$$^FS<br />

• ^FT92,2674^A0B,83,81^FH\^FDAPP FORUM 2012^FS<br />

• ^PQ1,0,1,Y^XZ<br />

Zebra Confidential


...CODE SNIPPET<br />

// Prints label to the printer<br />

function btn0_Click() {<br />

//Constructs Printer ID<br />

make_strPID();<br />

//Opens connection with the printer<br />

apd.PSExternal(261, strPID );<br />

//Sends ZPL data to the printer<br />

apd.PSExternal(266, "^XA" + "^MNN" + "^LL400" + "^FO200,100" + "^A0N,50,50" + "^FDHello World" + "^FS" + "^XZ");<br />

//Closes connection with the printer<br />

apd.PSExternal(271, ""); }<br />

//Constructs Printer ID<br />

function make_strPID() {<br />

strPID = commMethod + "|" + document.frmPAdd.txtPAdd.value; }<br />

20<br />

Zebra Confidential


GENERATING ZPL CODES<br />

21<br />

Zebra Confidential


HOW TO CREATE THE A RECEIPT OR<br />

LABEL TEMPLATE FILE<br />

22<br />

Zebra Confidential


HOW IT WORKS?<br />

HTTP post (variable data)<br />

XML<br />

template<br />

Web Service<br />

Cloud<br />

23<br />

Zebra Confidential


ZEBRA PRINT MANAGER INTERFACE<br />

COMPONENTS<br />

• ZXP Print Monitor<br />

• Monitors and logs printer status for ZXP-8, 7, 3<br />

• Administrator for Print Manager<br />

• ZXP Print Manager<br />

• Managed Network Card Printing<br />

• Device Output (ZMotif, XML, CSV, binary)<br />

• Interface Commands<br />

• For data streaming ( Store, Submit, Delete, Request )<br />

• Template XML specification<br />

• Defines card layout and data binding<br />

• Data Document specification<br />

• Identifies template and data to be bound<br />

• Job Document specification<br />

• Self contained data and card layout, does not require template<br />

24<br />

Zebra Confidential


ZEBRA PRINT MANAGER<br />

Print<br />

Monitor<br />

Print<br />

Queue 2<br />

Print<br />

Manager<br />

Print<br />

Queue 1<br />

25<br />

Zebra Confidential


THANK YOU

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!