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.
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).
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.
Ask away and I'll do my best!
I would have tagged this Honeywell Dolphin 9500 but I am a new user.
The reason that I think you can't get to the KeyDown
handler is that the one that is for the TabControl1_IndexChanged
is a System.EventHandler
which is a generic form of the KeyDown
.
Try doing something like this and see if it is catching the KeyDown
private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
{
if (sender is Form1 && e is KeyEventArgs)
{
Form1_KeyDown(sender, (KeyEventArgs) e);
}
else
{
//Do other stuff
}
}
This is a bit of a hack, but I think it will work. Set AllKeys( true );
. That should ensure that your application captures any keypad press.
AllKeys P/Invoke signature: http://blogs.msdn.com/b/mikefrancis/archive/2009/03/28/porting-gapi-keys-to-wm-6-1-and-6-5.aspx
General AllKeys information: http://windowsteamblog.com/windows_phone/b/windowsphone/archive/2009/07/14/just-say-no-to-gapi-what-you-need-to-know-about-allkeys-and-input-management.aspx
It sounds like the decode control is swallowing the message you need. You could try contacting HHP developer support. If they have an online developer support forum that may work too. As a test, what happens if you start commenting out lines 192-202? Does one of those lines cause your keydown event to stop working?
-PaulH
Edit
The imageControl and decodeControl both accept a TriggerKey
parameter. That sounds like they expect to be doing the keypress event handling themselves.
Try this: only have one of those instantiated at a time depending on what tab you're on. Get rid of the Form1_KeyDown
handling code all together (including the AllKeys). See if that works.
Alternately, you can still kill your Form1_KeyDown
handler, but keep both controls just like they are and do this in your tabControl1_SelectedIndexChanged
handler instead:
private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
{
if (this.tabControl1.SelectedIndex == 0)
{
this.decodeControl1.TriggerKey = HHP.DataCollection.Common.TriggerKeyEnum.TK_ONSCAN;
this.imageControl1.TriggerKey = null;
}
else if (this.tabControl1.SelectedIndex == 1)
{
this.decodeControl1.TriggerKey = null;
this.imageControl1.TriggerKey = TriggerKeyEnum.TK_ONSCAN;
}
}
Now only one of them will be watching the scan button depending on what tab you're on.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With