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
Software
Document |
Description |
Download |
Firmware - OS |
This is the main firmware file for the H15. It can be installed in one of two ways. See the Upgrading section for details. |
Download |
Supported Platforms
Setup & Configuration
Usage
Cold Boot
To Perform a Cold Boot (factory reset) simply press together [POWER] + [F1] + [F4]
Warm Boot
To perform a Warm Boot (reboot) simply press together [F1] + [F4]
Suspend
To suspend the unit (put to sleep) simply press the [POWER] button once. Press the [POWER] button a second time to wake up the H15.
Current Firmware
To determine your current firmware navigate to the following path:
- 'Start' > 'Settings' > 'Control Panel' > 'Control Center' > 'Information' > 'OS Version'
Upgrading
Upgrading the Windows ROM on your H15 is an easy process. There are two ways to perform this activity. Method one requires a micro SD card of no greater than 2GB in size. Method two requires either an SD card or an Activesync connection to copy files over to the device.
SD Card Method
The firmware on an H15 can be updated simply by copying certain files to an SD card and executing a specific button sequence on the unit.
- Download the OS image file from the Software Downloads table above.
- Copy this file (xip.nb0) onto the root of a micro SD card of no greater than 2GB in capacity.
- Install this micro SD card into the socket underneath the battery of the H15.
- Install the battery into the H15 and close and latch the battery door. Note that the battery must be at least 30% charge.
- Perform a Cold Boot.
- Immediately after releasing the buttons press and hold [F1] + [F2] + [F3] together. You should see the following message on the screen:
Updating System
Please Wait...
Followed closely by:
Reading File
Please Wait...
- You will see a progress bar move along the screen for a short time (approximately 1 minute) at which point you will see the following message:
Update Successfully
Please Reboot system
- Perform another Cold Boot.
- Your device will now boot up right into Windows. The upgrade is now complete.
Installer Method
More on this method to come soon.
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