Windows Embedded SDKs & Tools - Motorola Solutions LaunchPad ...
Windows Embedded SDKs & Tools - Motorola Solutions LaunchPad ...
Windows Embedded SDKs & Tools - Motorola Solutions LaunchPad ...
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