none
Honeywell Dolphin 9500 C# Event Handling Conflicts? RRS feed

  • Question

  • Environment

    • Windows XP x32 Visual Studio 2005 Standard Edition
    • Honeywell Dolphin 9500 running Windows Mobile 2003 (Pocket PC 2003)
      • With built in Barcode scanner and B&W camera
      • Using their SDK located here.
    • .NET Compact Framework 1.0 SP3 and .NET Framework 1.1

    Goal

    I am attempting to create an application that allows an individual to scan a barcode and then capture an image. These things should not happen simultaneously. The user should be able to double check the barcode scan, then move onto the portion of the application that handles image capturing.


    Problem

    Line numbers are referencing my code in the friendpaste link in the Code section below.

    I have two event handlers in place: one for the decode event from the barcode scanner control, and one to invoke the image capture control via a KeyDown event. The decode control has its own event/handler DecodeEventHandler and a trigger key set with an enum (lns 201 and 202). The image control, however, does not. Its documentation states that the Form should have a KeyDown event handler (ln 120) and the trigger key enum (ln 178). Upon running the application (without the SelectedIndexChanged [ln 76] event handler in place), the barcode scanner works great, but switching over to the tab (or Form, as I have tried separate forms as well), with the image capture control and hitting the Trigger Key on the device (SCAN in this case) causes the handheld to act like it's still scanning a barcode (red lights come on, green aim light is show, beeps when encounters a barcode) instead of the behavior normally displayed when using the image control (no lights, or white lights like a flash).


    Things I have Tried

    • IMPORTANT: If I remove the decode control from the application, the image control works. If I build a separate application with only the image control, it works.
    • I put a break point at line 210 and found out the KeyDown event is never getting hit. At this point I tried to somehow segregate the event handlers or controls so I introduced the SelectedIndexChanged event handler for my tab control and upon switching to the tab with the appropriate control, I tried removing event handlers. I was able to remove the DecodeEvent handler but was still unable to hit the KeyDown event handler delegate I wrote.
    • Both the decode and image controls from Honeywell's SDK have "Disconnect" events which (to quote the documentation) "Disconnect from the scan engine". So I tried disconnecting and reconnecting controls based on which tab I was switching to but was unsuccessful in this as well.
    • I also read somewhere that Form events can sometimes be disrupted if the Form loses focus. So I implemented the Form.LostControl event/handler and put in this.Focus() to return focus to the form but to no avail.
    • I have run across multiple people suggesting KeyPreview = true and handling/delegating the events at the form level. It appears the .NET Compact Framework version 1 does not implement this as my Form objects have no KeyPreview member.
    • Within the TriggerKey enum (example at line 202) there is an enum for the Enter key on the device. I tried wiring that up to the image control, and scan up to the decoder control but was still unable to hit the KeyDown event.

    Code

    http://friendpaste.com/355cQOCghvPkE5YR29lthO

    I posted the code as a friendpaste link because it's somewhat long (~230 lines). Let me know if I should just include it here.


    Need additional information?

    Ask away and I'll do my best!

    Wednesday, March 16, 2011 2:23 PM