H15

Revision as of 28 October 2010 14:22 by smcghee (Comments | Contribs) | (Support Platforms) m

The H15 is a Windows CE 5.0 handheld terminal. Slim and simplistic in its design, it carries the full power of a Windows-based OS for more advanced applications. It connects to the PC via a wired cradle, the CRD15, and uses ActiveSync to transfer data and deploy software. It also possesses WiFi and Bluetooth capabilities for wireless data transfer needs.

The scan engine can be configured either programmatically, via C++ or .NET APIs, or through a control panel. Various configuration options are available, as well as the ability to send Universal Menu Book commands for additional configuration. As far as getting barcode data into an application, the H15 can either wedge the data in wherever there is text focus, or receive the barcode data from event handlers implemented and registered in applications.

Downloads

Supported Platforms

Setup & Configuration

Usage

Upgrading

SDK

FAQ

What do I need to create, build, and load applications I make for the H15?

First, you will want some version of Visual Studio, typically 2005 onwards, or emBedded Visual C++ 4.0 (if you're keeping it cheap and building a native application). You should also have ActiveSync 4.5 installed for deploying and debugging your application. Next, you'll want to install the H15 SDK, and make sure that your copy of Visual Studio can find the H15 SDK's libraries and headers (again, if you're building a native application). If you're building a .NET application, then you need only to reference the bcrctl.net DLL in your Visual Studio project. Finally, you'll need to create the appropriate project type; typically a Windows Application or Windows Forms Application. If you're building a .NET application, target at least version 2.0 of the .NET Compact Framework; you can target 3.5 if you want, but you will need to deploy or install it to the device when you deploy or install your application.

Are there any getting started guides or how-to guides installed with the .NET SDK?

No, there are not. There is a .chm file where the H15 SDK was installed that describes the classes, enums, and the like available for use in your application.

Where is the .NET SDK DLL?

Typically where you unzipped the SDK, and from there: \bcrctl\Version xxx\NETCF\bcrctl.net.dll.

How do I soft-reset the device programmatically from my .NET application?

In C#:
[DllImport("coredll.dll", SetLastError = true)]
static extern int SetSystemPowerState(string psState, int StateFlags, int Options);
const int POWER_FORCE = 4096;
const int POWER_STATE_RESET = 0x00800000;
Then call
SetSystemPowerState(null, POWER_STATE_RESET, POWER_FORCE);

How do I run my application after a warm reset?

There are various ways. One way involves editing the registry (see this link), where you can then do a backup of your device, and have it (and your application) persist across cold resets. Another way, which is very simple, is to just place a shortcut to your application in \FlashDisk\Startup\warm\.

I want to build an application for the PC that talks to my device application. How do I do that?

Check out the Microsoft.SmartDevice namespace. It contains classes that are used both on the device-side application and the PC-side application to communicate over ActiveSync. There is an unmanaged reference as well. If you want to get deeper into host-device communication, check out Microsoft's Remote API (RAPI).

The scan engine seems to behave incorrectly or lose settings when I attempt to scan in my application, immediately after the device wakes up from a suspend state. What gives?

Check out the IsSysBusy() function. It returns a boolean, depending on whether or not the barcode engine is currently undergoing its reinitialization process. Attempts to scan while this is happening can essentially crash the scan engine, so waiting until IsSysBusy() returns false before your application directs the scanner to scan should alleviate the problem.

OS Release Log

  • Version 4.4.3
    • Fixes a problem with the scan engine becoming unusable or losing settings if a scan is attempted directly after waking up. Provides support for a new function in version 1.0.3 of the .NET SDK, IsSysBusy(). This function is designed to be called in a user application before attempting a barcode scan, in order to determine if the scan engine is ready for scanning.

Links