15.02.2014 Views

Windows Embedded SDKs & Tools - Motorola Solutions LaunchPad ...

Windows Embedded SDKs & Tools - Motorola Solutions LaunchPad ...

Windows Embedded SDKs & Tools - Motorola Solutions LaunchPad ...

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.

<strong>Windows</strong> <strong>Embedded</strong><br />

<strong>SDKs</strong> & <strong>Tools</strong><br />

Prashanth Kadur<br />

Software Architect


Agenda<br />

Introduction to Development <strong>Tools</strong><br />

EMDK<br />

DataWedge<br />

Resources


Introduction to Development <strong>Tools</strong>


Introduction to Development <strong>Tools</strong><br />

Family of Products<br />

This presentation will provide a brief introduction to development tools and their<br />

features. Refer to the product help documentation for detailed information.<br />

These products provide developers with the tools necessary for creating applications that<br />

target the enterprise mobility features, such as scanning, printing, Bluetooth, MagStripe,<br />

Sensors, Vehicle Bus and RFID<br />

There are two major development tools:<br />

• EMDK family of products<br />

o EMDK for C supports developing C/C++ applications.<br />

o EMDK for .NET supports developing managed application.<br />

o EMDK for Java supports developing Java applications.<br />

• DataWedge. DataWedge is a utility that allows you to add advanced data capture<br />

capability to any application without writing code.


Introduction to Development <strong>Tools</strong><br />

Requirement for EMDK<br />

EMDK for C<br />

Requirements for<br />

developing “C” (native)<br />

applications<br />

• Microsoft’s Visual Studio 2005 or Visual Studio 2008<br />

• Microsoft’s WM 6.5 SDK for WM 6.5 devices such as ES400<br />

• <strong>Motorola</strong>’s PSDK for CE devices such as MC2100<br />

• EMDK for C v2.5 Update2<br />

EMDK for .NET<br />

• Microsoft’s Visual Studio 2005 or Visual Studio 2008<br />

Requirements for<br />

developing .NET<br />

applications<br />

• Microsoft’s Visual Studio 2005 or Visual Studio 2008<br />

• Microsoft’s WM SDK 6.5 for WM 6.5 devices such as ES400<br />

• No PSDK required for CE devices such as MC2100<br />

• EMDK for .NET v2.6 Update2<br />

EMDK for Java<br />

Requirements for<br />

developing Java<br />

applications<br />

• Eclipse IDE for Java Developers for targeting J9 JVM<br />

• NetBeans IDE v6.0 Mobility or higher for targeting Crème JVM<br />

• J9 or Crème JVM<br />

• Java <strong>SDKs</strong> (refer to the EMDK for Java website)


Introduction to Development <strong>Tools</strong><br />

Requirement for DataWedge<br />

DataWedge<br />

Requirements<br />

for using<br />

DataWedge<br />

• Requires the DataWedge to be running.<br />

• Latest devices come with the DataWedge preinstalled<br />

(but not enabled)<br />

• Download DataWedge from Support.Symbol.Com<br />

for older devices<br />

• No other requirements


Introduction to Development <strong>Tools</strong><br />

Why do I need EMDK? Isn’t DataWedge enough?<br />

DataWedge is a powerful tool for capturing data.<br />

For many application, DataWedge is more than enough and there is no need for using<br />

EMDK<br />

However EMDK is very useful if:<br />

You want to access features that are not available in DataWedge. For example<br />

Bluetooth, Fusion (Extended WiFi interface), Image capturing etc.<br />

If you want a complete control of the feature such as scanning in your application<br />

Backward compatibility


Introduction to Development <strong>Tools</strong><br />

Why do I need EMDK? Isn’t Microsoft SDK enough?<br />

Microsoft SDK is enough for a number of operations<br />

However, Microsoft SDK may provide little or no access to <strong>Motorola</strong> value added features<br />

scanners, magstripe reading, Telemetry, RFID etc…<br />

Bluetooth: Microsoft does not have a .NET solution. <strong>Motorola</strong> .NET solution for BT<br />

provides a simplified and abstracted solution to both Microsoft and Stonestreet stacks.<br />

Image capturing: Customers find Microsoft DirectShow too complicated. <strong>Motorola</strong><br />

Imaging APIs are simple yet powerful.


Introduction to Development <strong>Tools</strong><br />

Why do I need EMDK? Isn’t Microsoft SDK enough?<br />

Image Capturing: Microsoft does not have .NET solution. <strong>Motorola</strong> does.<br />

Fusion: <strong>Motorola</strong> APIs provide extended access to Wi-Fi. Microsoft APIs provide only a<br />

high level access.<br />

Sensors: <strong>Motorola</strong> APIs provide extended access to Sensor devices such as accelerometer,<br />

Orientation, Compass, Ambient Light, Proximity etc.


EMDK


EMDK<br />

Features (not all devices support all features)<br />

Audio<br />

Audio Extension<br />

Display<br />

Fusion<br />

Image Capture<br />

Keyboard<br />

MSR / DCR<br />

Notification<br />

Printing<br />

Resource Coordinator<br />

RFID/RFID2/RFID3<br />

Scanning (with RS)<br />

Telemetry (VC6096 only)<br />

IO (VC6096 only)<br />

Keylight (VC6096 only)<br />

StoneStreet One Bluetooth<br />

MS Bluetooth<br />

Sensor<br />

Document Capture


EMDK<br />

Sensors on devices to be released very shortly<br />

Multiple of sensors integrated to platform to sense and react to environmental changes.<br />

These sensors include<br />

• Accelerometer<br />

• Magnetometer<br />

• Gyroscope<br />

• Ambient Light Sensor (ALS)<br />

• Near Range Proximity Sensor<br />

Sensor APIs provides an interface to enumerate available<br />

Ability to access sensor data and configure certain parameters of sensors.


EMDK<br />

Document Capture<br />

Document Capture (DocCap) feature provides the ability to capture an image of a<br />

document. In this case, “document” refers to a printed page or label. If the captured<br />

image contains a barcode, the barcode data can also be captured.<br />

The document capture can be performed using one of the following 3 modes:<br />

• Barcode-anchoredanchored - In this mode, a specified part of the label is captured based on<br />

its relative position to the barcode in the label. The document must contain a<br />

barcode.<br />

• Free-form<br />

- In this mode, the document is captured by identifying the border and<br />

contrast between the document and the surface behind it. The document may<br />

optionally contain a barcode.<br />

• Barcode-linked<br />

- In this mode, the document is captured by identifying the border<br />

and contrast between the document and the surface behind it. The document must<br />

contain a barcode.


EMDK<br />

Scan&Pair in EMDK for .NET<br />

Provides simple methods to scan a BT barcode and pair/unpair with that device.<br />

Supports only SPP on the remote device<br />

Simple to use – Only 2 lines of code (see next slide)<br />

First the scanning of the address is performed, the validity of the scanned data is checked<br />

and then an attempt is made to pair with the device using the PIN provided<br />

Uses - Bluetooth printers and PCs


EMDK<br />

Scan&Pair in EMDK for .NET<br />

<br />

Using Symbol.Barcode and Symbol.WPAN<br />

<br />

Using Symbol.Power<strong>Tools</strong><br />

private Reader myScanReader = null;<br />

private ReaderData myScanReaderData = null;<br />

Bluetooth myBT = null;<br />

RemoteDevice myRemoteDevice = null;<br />

private void TestScanAndPair()<br />

{<br />

myBT = new Bluetooth();<br />

myBT.Enable();<br />

myScanReader = new Reader(Device.AvailableDevices[0]);<br />

myScanReaderData = new ReaderData(ReaderDataTypes.Text,<br />

ReaderDataLengths.MaximumLabel);<br />

myScanReader.Actions.Enable();<br />

myScanReader.ReadNotify += new EventHandler(myScanReader_ReadNotify);<br />

myScanReader.Actions.Read(myScanReaderData);<br />

}<br />

void myScanReader_ReadNotify(object sender, EventArgs e)<br />

{<br />

ReaderData rd = this.myReader.GetNextReaderData();<br />

if (rd.Result == Symbol.Results.SUCCESS)<br />

{<br />

// Invoke into main thread and call PairRemoteDevice passing rd.Text<br />

}<br />

}<br />

private void PairRemoteDevice(string BTAddress)<br />

{<br />

myRemoteDevice = new RemoteDevice(string.Empty, rd.Text, string.Empty);<br />

myRemoteDevice.LocalComPort = 5;<br />

myBT.RemoteDevices.Add(myRemoteDevice);<br />

myRemoteDevice.Pair("0000");<br />

}<br />

private void Form1_Closing(object sender, CancelEventArgs e)<br />

{<br />

myReader.Actions.Flush();<br />

myReader.Actions.Disable();<br />

myReader.Dispose();<br />

myBT.Dispose();<br />

}<br />

private void TestScanAndPair()<br />

{<br />

ScanAndPairTool mySP = new ScanAndPairTool();<br />

if (ScanAndPairResults.SUCCESS ==<br />

mySP.ScanAndPair("0000"))<br />

{<br />

// Perform serial communication operations<br />

}<br />

}


EMDK<br />

LocateAndLaunch<br />

Uses GPS<br />

Executes pre-defined set of actions when the device changes geographic location. Some<br />

of the actions:<br />

• enable/disable Bluetooth<br />

• enable/disable WiFi<br />

• enable/disable WAN<br />

• launch a pre-defined application<br />

• log the movements of the device to a file<br />

The app running on the device provides GUI access for using this feature without writing<br />

code<br />

The .NET interface API provides programmatic access to this feature


EMDK<br />

Design Considerations<br />

Understand the different types of keyboards: QWERTY & non-QWERTY keyboards. Some<br />

devices may just not have any keyboard.<br />

Understand the size, shape, screen resolution, screen orientation of the display : QVGA,<br />

VGA.<br />

Touch and non-touch display – If supporting touch and non-touch, design your app to<br />

perform all touch operations (such as buttons, links, pull downs etc) on a non-touch<br />

device.<br />

Support for Microsoft & StoneStreet One Bluetooth stacks. Most of devices have both<br />

stacks. Some devices may support only one stack. Apps written in “C” cannot be ported<br />

to other stack. .NET apps written using EMDK are mostly portable.<br />

For MS stack, use com port from 0 to 9 if not used. For SS1, refer to the following registry<br />

for available com ports:<br />

• HKEY_LOCAL_MACHINE\Software\StonestreetStonestreet One\BTExplorer<br />

BTExplorer\Device<br />

Settings\FactoryCOMPorts


EMDK<br />

Design Considerations<br />

For scanning purposes, your device may have 1D scanner and/or 2D imager or 2D camera.<br />

Cameras are generally not optimized for scan intensive applications.<br />

When scanning, do not enable all available symbologies. Enable only the required<br />

symbologies for performance gain.<br />

Imagers can be used for taking pictures. But for quality pictures, use camera if the device<br />

has one.<br />

Your app may require to scan and then take pictures. In this case, you cannot have both<br />

scanner/imager and camera enabled at the same time. Disable scanner and then enable<br />

camera.


EMDK<br />

Design Considerations<br />

For capturing pictures, you can use Microsoft DirectShow. Many customers have found<br />

DirectShow to be very complicated to write code for. <strong>Motorola</strong> offers Imager API which is<br />

easy to understand and simple to write code, but yet provides access to numerous<br />

advanced configuration settings of the camera.<br />

Some devices may not have built-in scanners or imagers for scanning. Consider using<br />

external scanners/imagers such as RS309, RS407, RS419 or RS507 (Bluetooth).<br />

The latest devices (both CE and WM) come with Compact Framework (CF) 3.5. Older WM<br />

devices were shipped with CF2.0.<br />

No support for Visual Studio 2010. VS2010 does not support <strong>Windows</strong> Mobile or CE<br />

development.


EMDK<br />

Design Considerations<br />

<strong>Motorola</strong> products support several mobile printers from different vendors. <strong>Motorola</strong>’s<br />

printing API provides a simple and abstracted interface for printing.<br />

If porting application from an older version of CE to the latest <strong>Embedded</strong> Handheld 7.0,<br />

please note there are a number of APIs either deprecated or obsoleted. use<br />

CeAppCompat to determine the compatibility of your app.<br />

• APIs removed: http://msdn.microsoft.com/en-us/library/aa924080.aspx<br />

• APIs deprecated: http://msdn.microsoft.com/en-us/library/gg154286.aspx<br />

Many of the devices come with GPS. The advanced settings such as enable A-GPS SUPL,<br />

Quality of Position, Enable Access to SUPL Server, Smart Aiding/Reaiding, Estimated<br />

Coarse Location etc under the registry:<br />

• HKLM\Software\Symbol\GPSMux


DataWedge


DataWedge<br />

What is DataWedge?<br />

DataWedge is a utility that allows you to add advanced data capture capability to any<br />

application without writing code.<br />

It runs in the background and handles the interface to barcode scanners, magnetic stripe<br />

readers and communications ports (USB and Serial).<br />

The captured data is converted to keystrokes and sent to the target application as if it was<br />

typed on the keypad.


DataWedge<br />

Automatic data Switching<br />

Allows different behaviors for different target applications<br />

Create a configuration profile for each application<br />

DataWedge monitors foreground application and switches profiles if new application<br />

appears<br />

Example usage: Disable barcode scanning when picture taking application comes to<br />

foreground.<br />

Internet Explorer Pictures and Videos


DataWedge<br />

Buffered Data Collection<br />

Data is queued to allow fast and continuous collection of data with controlled transfer to<br />

slow applications.<br />

0123456789010


DataWedge<br />

Advanced Data Formatting (ADF)<br />

ADF allows the captured data to be automatically modified using a set of rules before<br />

being sent to the target application.<br />

Capture<br />

Modify<br />

Send to Target<br />

0123456789010<br />

A123456789A1A<br />

ADF Rules<br />

• Crunch Spaces<br />

• Replace String<br />

• Send Remaining<br />

• Etc.


DataWedge<br />

API for Enabling and Disabling<br />

Any application can easily control DataWedge.<br />

Allows an application to disable DataWedge input when user input or picture taking is<br />

required.<br />

Prevents inadvertent scans into your application when it is not ready to accept the data.


DataWedge<br />

Remote Configuration<br />

Settings and profiles can be configured remotely over ActiveSync using Internet Explorer<br />

running on a PC.<br />

Allows non-touch and headless devices to be easily configured.


DataWedge<br />

XML Configuration<br />

Settings and profile information are stored in XML files. When configuration is completed<br />

for one device, the XML files can be deployed to other devices using provisioning tools<br />

such as MSP.


Resources


Resources<br />

For access to the tool downloads<br />

Go to the “Developer Kits and software tools” page on Support Central<br />

To create an account and get notification of new releases<br />

Register your email address on Support Central web site<br />

For a datasheet on development tools<br />

Download the EMDT datasheet from the <strong>Motorola</strong> web site<br />

For a datasheet on configuration tools<br />

Download the EMCT datasheet from the <strong>Motorola</strong> web site<br />

For more information on the complete toolset<br />

Visit the Enterprise Mobility Development & Configuration <strong>Tools</strong> page<br />

For information on the EMDK Collateral page<br />

Visit this Compass page for Datasheets, Power Point presentations etc.<br />

Click Here<br />

Click Here<br />

Click Here<br />

Click Here<br />

Click Here<br />

Click Here


THANK YOU

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

Saved successfully!

Ooh no, something went wrong!