0
votes

I have a multi-form Windows mobile application that accesses the barcode scanner of the MC75 using the EMDK (version 2.6). I access the barcode scanner using a Singleton. When the application starts I call barcodereader.Actions.Enable() and when the application exits I call `barcodereader.Actions.Disable()'. Basically I've used the EMDK samples as a guide to get the scanner working.

While the application is running I add the event handler to the barcode reader `readNotify' on the form activation event and remove the event handler when the form activates. I have put code in to check that this is happening correctly and added a check to ensure no existing event handlers are present before a new one is added.

The application works fine but for some reason the barcode scanner suddenly cuts out and will not work when the trigger button is pressed. This always seems to happen in the same place (after around 20 odd scans spread across the three forms). No error is caught and the scanner light fails to come on. I have a set number of scans to do and the scanning stops on a form where I've done a successful scan seconds earlier. I can do more than 20 scans on a single form but I only seem to get the issue when doing scanning on different forms.

If I restart the application the scanner works again. The datawedge software is installed but is not used.

I have seen this issue during my research here, but my issue does not seem to be intermittent.

I saw a note on the Symbol support site stating it was not desirable to repeatedly call `.Actions.Enable' and '.Actions.Disable' when moving between forms and I don't do this.

I'm at a loss as to what to check in the application. Any ideas?

Details - using Windows Visual Studio 2008, device is running Windows Mobile 6.5 Professional, EMDK version 2.6, application written in C#.

2

2 Answers

2
votes

I had this exact same issue on an MC70 device. Unfortunately it was at a previous employer so I no longer have the source code to look back on. I do remember having to create a somewhat ugly workaround to get it working.

I know that I ended up declaring/instantiating the barcodereader object inside of the parent form (so no need for the singleton class). Then every time I instantiated a child form, I passed either the parent form object or the barcodereader object BY REFERENCE into the child form. Then I was able to access it from the child form repeatedly without it crashing/locking up. I know that is a pretty vague description, but it's been a couple of years since I worked on that code. Hope this helps.

1
votes

I knew this problem years ago!. The solution to that is: DON'T disable the barcode reader when doing form navigation (Keep it always Active ). It works perfectly for me (I did MC9062 6 years ago and now MC75A device). Just put some logic to tell your program to handle scanned data differently under different form. Yes, it is important to use reader object as "Singleton".