this is my last shot so please help me out! I have two MC1000s handheld barcode scanners. My application works on the one but doesn't work on the other. It has something to do with SCAN_ENABLE error that doesn't appear when I remove any SQL code. I emphasis that it works on the one but not on the other. The only difference I have found is that the one that works has an OEM 00.00.0007 and IPL 01.00 and the one that doesn't work has an OEL 01.00.0011 and IPL 01.01.
Please help! I have tried pretty much everything and I really hope someone will give me an answer!
Thanks in advance,
This is probably an issue best pursued with Symbol support, or a Symbol forum ...
That said, it sounds like a configuration/settings issue. Is there a configuration utility available to you? Sounds like you need to configure SCAN_ENABLE to true, or something along those lines.
Hi There John,
I've run into the same problem with a Symbol MC50. Read this post, it may help:
Here is the most significant paragraph for you to read:
The issue is that when I make use of the Symbol scanning (or imaging) API on the MC50 device in my application, and the device memory goes lower than around 7.50 MB (its got the memory slider indicating free program and storage memory on the MC50) I get a SCAN_ENABLE exception. When I get this, it means the scanner is screwed (disabled) until a soft-reset is performed on the device. I guess it doesn't free up all the resources when gets the first error. Symbol have told me that its the compact framework issue (what ever they use for the imager/scanner) as it requires alot of memory to load up - yet the scan wedge application that comes with the device can run when there is barely any memory left on the device (this doesn't use the Symbol scanner/imager API).
I've just tested this today, and found I was able to recreate the Scan_Enable error at will with the MC50. What I'd recommend is for you to check the memory settings for the device that isn't working. On the MC50's, running Windows 2003, it is done via a slider bar. I'm not sure how to do this with the MC1000, which should be running CE 4.3?
I run into the same problem with an MC1000 (God damn the device...!) I also use SQLCE3.0 and CFv2.0. When the program starts, the "SCAN_Enable" message appears. The problem was solved by modifying the amount of program memory (increasing it), from Control Panel -> System. Now it works just fine.
What are you using to develop, VS 2005 or 2003? What Symbol SDK version are you using and what .NET CF did you install?
We are using VS2005, SDK 1.05, and CF 2.0 SP1. Our application runs but the scanner does not work.
Is there any other forum you guys are getting help at? Symbol Support is clueless.
Using Virtual Studio 2005 SP1, .NET Framework 2 SP1, Symbol SDK 1.05 AND a Symbol SDK 1.05 FIX and a set of files to be copied to the Platform folder of the device.
Symbol Support Level 2 Tech helped us out. He sent us some fixes to SDK and Platforms that are not on Symbols website. This contact at Symbol was given from another user on this forum and proved to be great.
A memory allocation change was also needed.
In conclusion all of our MC1000s are now working including the ROHS compliant machines that were ginving us the scanner issues.
I too have the same problem - Scan_ENABLE error which forces me to restart my PDA if I want to continue to use the barcode scanner on my mc50.
I am using VC2005 with the latest 1.5 SMDK and the associated patch.
Does anyone have any tips or suggestions how to write robust c# code for symbol mc50 that doesn't trigger this SCAN_ENABLE nightmare?
I can trigger this scan_ENABLE just by opening and closing a form, about 5-9 times, which contains a field that accepts scanner input.
anthony at dxsolutions.co.uk
How are you going in between the forms as far as the scanner goes. It sounds like you may be instantiating the scanner then disposing of it which may cause this. You should instantiate the scanner once, then terminate before your application closes. When you go in between forms just stop the reading from the scanner, and re-start it on the new form. It seems like I only get this problem with the mc50 when I keep re-deploying my project to the device and usually after a couple type I can't instantiate the scanner b/c of this error. It takes a soft-reset of the device and sometimes a hard reset to fix it. If you let your program run despite the error and you keep stopping and starting it you will eventually run out of memory (their is some sort of memroy leak with the Symbol's scanner object when you get this error). I've also noticed that when I can't enable the scanner, I also cannot enable the imager on the mc50. The mc50 scanner still is a horrible scanner btw.
(...not sure what's up but when I try to reply to this post in IE7, the page doesn't load - but all seems ok with Firefox )
Thank you for your kind reply.
The MC50 scanner/ Symbol C# API has caused me continual frustration. I might have to go back to using the Wedge application if I can not resolve my problem.
This is my problem in more detail:
Firstly I have a static instance of the Scanning object, just the same as in the CS_ScanSample3 application.
I have a start menu form in which I init the scanner :
// other stuff...
private void exitImageBn_Click(object sender, EventArgs e)
From the start menu form, the user is able to open a search form and scan a barcode which is searched against, and if matched, resuls in a detail form being presented (from which new items can be scanned). Note that as each form is opened, the parent(s) remain open.
Start Menu Form
Scan New Item Form
Now the search form works fine. I hook it into the scanner as follows:
private void SearchForm_Load(object sender, EventArgs e)
MyEventHandlerSearchForm = new EventHandler(OnBarcodeScannedSearchForm);
Scanning.MyEventHandler = MyEventHandlerSearchForm;
private void SearchForm_Activated(object sender, EventArgs e)
Scanning.MyEventHandler = MyEventHandlerSearchForm;
protected override void OnClosing(System.ComponentModel.CancelEventArgs e)
private void OnBarcodeScannedSearchForm(object sender, EventArgs e)
Symbol.Barcode.ReaderData TheReaderData = Scanning.MyReaderData;
if (TheReaderData.Result == Symbol.Results.SUCCESS)
result = TheReaderData.Text;
This seems robust and works just like in the sample apps.
However, if from the search form, I open a results form and from that, open up a scan new item form - which is the next form I want hooked into the scanner, I experience problems.
First of all I set up the Scan new item form, in the same way as my search form, with its own OnNotify handler. However, when I scan, the add new item form onNotify handler is not called! I close that form, and then i close its parents results form and I am back to my Search form - where suddenly the search form OnNotify handler is triggered, which promptly searches for the barcode I previously scanned as a new item (!)
I don't understand why this is happening. My child form event handlers are being loaded into the Scanning object as one would expect,
Scanning.MyEventHandler = MyEventHandlerAddNewItemForm;
but only the search form event handler is responding to a scan event.
I have kludged the app to work somewhat, by adding
to the constructor of my search results form which appears as a response of finding a search item from the search screen.
When I do this, the OnNotify event handler for my Add New item form is called correctly. However it isnt long before i get the the dreaded Scan_Enable error requiring a soft reset, because of the constant disposing and instantiating of the scanner because of this kludge.
Does anyone know what is going wrong? Why isnt the OnNotify handler on the child form being called (unless I terminate and reactivate the scanner!)
I just want to be able to scan on any form I want, with the form's OnNotify handler being triggered, and Scan_Enable errors be avoided.
One thing you need to make sure is that you are calling a stopread() every time you leave a form. Then every time a form is shown you need to do a startread() and setup the event handler. I wouldn't put your scanner stuff in the Activated event. What I usually do is just overload the show method of the form and put it in the scanner startup code there. Then whenever the form is closed or hidden, I call a stop read. If you follow this method for every form that you use the scanner in it should work.
Thanks again for your reply Steve.
Can I ask what you mean exactly by override the show method of the form?
I display my form with ShowDialog(), so would I declare my override as follows?
public new DialogResult ShowDialog()
= new EventHandler(this.OnBarcodeScannedExisting);
Scanning.MyEventHandler = this.MyEventHandlerScanExist ;
and lose the Scanning init code from my Activate event handler?
I tried that, and it did make a difference. For one it no longer searches for the missed barcode when i return back to my search screen...however, the ReadNotify event handler on the child forms is never triggered?
Through debugging, I am certain that I call stopread and startread&setup handler as you describe.
If it is helpful, I am using Virtual Studio 2005 SP1, .NET Framework 2 SP1, Symbol SDK 1.5 AND a Symbol SDK 1.5 patch
I finally got my scanner application working - thanks Steve for the guidance.I stopped using ShowDialog() to invoke my forms and instead used the Show() method so the forms were not displayed modally. After I made this change, scanning notifications on the various forms were called as expected.This confused me because the Sample Application that comes with the PDA did use modal forms - but anyway, my app works and I am grateful just for that!I was also confused why when I invoked my forms with Show() the event handlers for closed and onclosing were not fired, but these were for ShowDialog(). I got around this by adding an eventhandler for the scanner forms Deactivate event.Anyway problem solved!Many thanks,Anthony
I have the similar problem too: when call 'Symbol.Barcode.Reader.Actions.Enable()' method, it will thrown OperationFailureException(), with message 'SCAN_Enable'. I found the problem can be solve with a program called scanWedge, which is bundled source code with Symbol Mobility Developer Kit for C.
Place the compiled 'scanWedge.exe' in startup folder of your pda then soft-reset to make it load every soft boot (manual launch also OK), and the problem will be solve :-)
Just note this here so other one can found and try this solution if they face the same problem. Symbol never mention this in their website....... you may found more info about this if you search "scanWedge.exe" in Google
My platform is Window ce 2003, Visual Studio .Net 2003, pda is Symbol PDT8100 series.
Thanks Siuguyguy - that worked a treat.
Although I found I had repaired by multi-form scanning problem, there was still something going wrong when the application was just opened and closed (say about 9 times). The Scan Enable error would just fire. All that was happening was the scanner was activated and deactivated. You can repeat this behaviour even with Symbol's supplied ScanSample3 application.
There is something severely kooky with the way Symbol have developed their Barcode Scanner C# API.
I was very suprised to discover that after copying the ScanWedge app to my windows/startup dir on the PDA, this error seemingly goes away (tested 20+ iterations of opening and closing app and then got bored )
I am using MC50 i am having the Problem of SCAN_Enable. Will any one suggest me the optimal solution. I tried by increasing the meemory Size. But it dosent help much after 4 to 5 tries again its giving the same Error (SCAN_Enable). Will any suggest how the ScanWedge app related to the Barcode Scanner C# API.
Doest it really fix's the Barcode scanner.
I am using vs 2003 and sqlCE 2.0 and Symbol Mobility Developer Kit v1.5 for .NET
Thanks in advance
On an MC50 using the latest (I think) V1.6 SDK, it still occurs every couple of application relaunches.
I can also get it to happen by launching my app, running the DisplaySample a few times - sorry the Fusion sample crash's all of my MC50's - then trying to scan within my app.
The scanwedge trick does not seem to work.
Its a nightmare - if we do not find a solution to this I suspect my customers may decide to go elsewhere for their hardware !
I too am having this SCAN_ENABLE exception on the MC50 when I call Reader.Actions.Enable().
WM 2003 4.21.0 Plat 19
.NET CF 2.0
I've read postings in this thread and others about the various workarounds to this issue, but I'm mystified about why this just began happening for me after almost a year of using the MC50 without incident. I've read in this forum that this is caused by low memory (<7.6MB program memory free) but I have about 20MB program memory free, so that doesn't seem like the issue.
Perhaps most frustrating for me is the fact that this problem is intermittent for me; I can go for days without encountering this problem, but when it happens, I can't make it stop happening unless I warm boot the MC50.
Does anyone know what the root cause of this issue is?
I spend a lot of time on the MC50 device to fix the SCAN_ENABLED error. But I didn't get a correct solution. But I found some kind of Hacks. I am giving the List of point that help me in fixing the issue.
Before Starting the application I am running Scan Wedge application and making it disabled. (Note: the Scan wedge app must always run in background just disable the reader in the app).
Once if the Scan Wedge starts my application never crashed even your device have less than 8 MB memory.
And also make sure that your device had 8MB memory free even at the time of running your application.
Please suggest if any one had better solution.
Hello to all. Many of you seem to be experiencing the same difficulty with Symbol scanning. First off, let me state the the wedge is not an appropriate work around. The ScanWedge application simply turns the scanner into a "keyboard" input. This does no allow any programatic manipulatiion of the scanner or the incoming data.
I would suggest creating a STATIC class that contains all the various functions you wish to use for the scanner. Also, create a delegate for the handler when a barcode is scanned. When you application begins, call the static function to Initialize your reader. Likewise, use the static function to terminate the reader on exit.
Now, since the scanner is being manipulated from a static class, only ONE instance of the reader will exist. This prevents the memory issues you have all been experiencing. On pages that need to be notified, create an instance of the handler delegate and then add the handler to the event. Dialogs should be displayed modally. When a dialog closes, remove the handler from the scan event.
I know that a code sample would probably be helpful, but the code I have written is very proprietary. However, if someone wants to attempt to create a staic class, I can fix the code if it has any errors.
I hope that this helps you all. Please feel free to let me know if I can assist you further.
Ive tried to follow this thread as best as I can so if what I say is irrelevant ignore me.
I use the Symbol Scanner in some of my projects.
I too found out that the best way to use the scanner class is to instantiate it once for the application and dispose it just before the application exits.
I also add EventHandlers in Forms constructors but I think some of the problems being experienced may come from going to the next form but not removing the event handler from the current form.
Before you move to the next display or close a display you will have to remove the scanner event handler from the Form.
Otherwise you will get crashes and funny behaviour.