MCA SDK vs. Motion C5 Driver

MCA SDK vs. Motion C5 Driver

Hi,
Does anyone know if there is a incompatiblity issue between the MCA SDK 1.1 and the current Motion C5 driver. I ask this because I am unable to run the sample application that comes it the MCA SDK on the motion C5. I am also unable to run applications I create which reference the Intel.Healthcare.dll assembly, I get a file not found error; however simple applications that does not reference the Intel library run just fine.

It's my understanding that only the end product from my development machine should be deployed to the C5, and the drivers for the motion C5 should have the appropriate libraries for the application(s) which requires it.

Here are some additional questions in bullet point:

* What about version compatibility, my current application and MCA SDK sample is built against version 1.11.0.16700 of the Intel.Healthcare assembly. should the the C5 drivers have this version as well. The version listed in the GAC of the C5 is 1.0.0.9504. If this is the correct version then how would the SDK sample or my app know to use this version unless create a configuration file to point to this version.
* The Intel.Healthcare assembly is this installed in to GAC during the driver installation
* Out of desperation I moved the version of the Intel.Healthcare assembly my code and the Intel sample was compiled against to the C5, this eliminated the file not found exception however I get a general exception error with no description as the application still refuses to load. Can someone explain to me what could be going on here.

By the way the SDK example being run is for the barcode, both examples refuse to load on the C5.

17 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.

Steve,

I did what you said for the logging, however no log files are being generated. I had done this previously and this was the same issue as well. The problem is (I think its the problem) the application is not even being loaded. However, this is the error I have been consistently getting in Event Viewer

EventType clr20r3, P1 barcodedemonet.exe, P2 1.0.0.0, P3 479a0a74, P4 barcodedemonet, P5 1.0.0.0, P6 479a0a74, P7 21, P8 e, P9 system.io.filenotfoundexception, P10 NIL.

Again the line changed in the configuration file is "/Intel/HealthcareSDK/Logging/DefaultLevel = WARN" and replace WARN with DEBUG

Thanks,

Clifton

Hi csantonio,

The problem is that you have used MCA SDK v1.1 to develop your application,but you are trying to run it on a Motion C5 that is using v1.0 of the MCA platform driver. You can resolve the issue by updating to v1.1 or later of the MCA platform driver on the Motion C5. This is available from Motion Computing. I don't believe Motion Computing has posted the newer version of the MCA platform driver on their web site yet, but they can give it to you if you contact them and ask for it.

Of course another alternative would be to develop your application on MCA SDK v1.0 and then it will run on fine on the MCA C5 using v1.0 (or any later version)of the MCA Platform Driver.

-Steve

Thanks Steve. I kind of figured that was the issue, I'll contact Motion and and see what they are saying. One would think they would try to align their release with the release of MCA SDK.

-Clifton

So I got the 1.1 platform driver from motion; however I'm getting the same file not found error. I checked the version and notice that the Intel.Healthcare assembly from the MCA SDK is listed as 1.11.0.16700 and the Intel.Healthcare assembly from the motion platform driver in the GAC of the C5 is 1.11.0.16819.

This would indeed would give me my file not found error. So the question I have is, who is out of synch, motion or Intel? and what can I do to resolved this? Again I'm using the MCA 1.1 sdk and the motion plaform driver 1.1. Thoughts anyone, please.

Clifton

Hi Bruce,

You should be fine on the versions now. It is only v1.11 of both the SDK and PD that need to match up for your versions to be in sync. The remaining numbers are related to the software build and do not need to match. So step one of working to resolve this issueis completed.

For the next step we are going to need some more information to figure out what is happening. We would like for you to send us the MCA log file capturing the event so se can see what the MCA software thinks is happening. The MCA log file will have to be set to the debug level, and then started right before the error, and stopped right after the error occurs. This is because the the log file is set to debug level and will capture a significant amount of data quickly. Here are the steps:

1. Edit the MCA configuration file (C:Program FilesIntelMCABinIntelHealthcare.cfg) and set the log level to debug:

/Intel/HealthcareSDK/Logging/DefaultLevel = DEBUG

2. Delete the MCA log file (c: empMCA.log). The MCA log file will be recreated automatically when the next event occurs.

3. Take the necessary steps to reproduce the failure.

4. Save the MCA log file and then send it back to us. You can attach it as a file under the Options tab in your reply on the forum.

5. Edit the MCA configuration file (C:Program FilesIntelMCABinIntelHealthcare.cfg) and set the log level to the default level of Warnings:

/Intel/HealthcareSDK/Logging/DefaultLevel = WARN

Thanks,

Steve

Hi Clifton,

If the MCA log is not being created, then there is no activiy occuring with the MCA software. So from an MCA SW perspective, your application is not doing anything with the MCA software. Could you send us the code sample from your application where you beleive it is not working? That should help us understand what you are trying to do and why the MCA software is not responding.

Thanks,

Steve

Hi Steve,
The issue was happening with the Intel sample provided; 
however be that as it may. I took the barcode scanning code sample
provided, and put it into a new app. and got a more detail log.
The MCA log was still not created but the .NET runtime
gave me more information this time around. This is the Information
I received.



************** Exception Text **************
System.IO.FileNotFoundException: Could not load file or assembly 'Intel.Healthcare, Version=1.11.0.16700, Culture=neutral, PublicKeyToken=2114a0263e1b67ff' or one of its dependencies. The system cannot find the file specified.
File name: 'Intel.Healthcare, Version=1.11.0.16700, Culture=neutral, PublicKeyToken=2114a0263e1b67ff'
at BarCodeSample.Form1.btnScan_Click(Object sender, EventArgs e)
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

WRN: Assembly binding logging is turned OFF.
To enable assembly bind failure logging, set the registry value [HKLMSoftwareMicrosoftFusion!EnableLog] (DWORD) to 1.
Note: There is some performance penalty associated with assembly bind failure logging.
To turn this feature off, remove the registry value [HKLMSoftwareMicrosoftFusion!EnableLog].



************** Loaded Assemblies **************
mscorlib
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.832 (QFE.050727-8300)
CodeBase: file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
----------------------------------------
BarCodeSample
Assembly Version: 1.0.0.0
Win32 Version: 1.0.0.0
CodeBase: file:///C:/Program%20Files/Intel/MCA/Bin/BarCodeSample.exe
----------------------------------------
System.Windows.Forms
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.832 (QFE.050727-8300)
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.832 (QFE.050727-8300)
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Drawing
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.832 (QFE.050727-8300)
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System.Configuration
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.832 (QFE.050727-8300)
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Configuration/2.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
System.Xml
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.832 (QFE.050727-8300)
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
Accessibility
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.42 (RTM.050727-4200)
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/Accessibility/2.0.0.0__b03f5f7f11d50a3a/Accessibility.dll
-------------------------------------

So again it would seem that it is look for this specific version of the Intel assembly that is in the manifest of the application.


This is the code which is essentialy a copy and past of the intel sample:


private void ScanForBarcode()
{
BarcodeTypes selectedTypes = new BarcodeTypes();


for (int count = 0; count < 14; count++)
{
selectedTypes.Add(bcReader.SupportedTypes[count]);
}

bcReader.ScanTypes = selectedTypes;
PopulateBarcodes();
}

private void PopulateBarcodes()
{
Barcodes barcodes;


bcReader.StartScan();

bcReader.WaitForBarcode(5000);

barcodes = bcReader.Barcodes;


foreach (Barcode barcode in barcodes)
{
ListViewItem lvItem;
string[] barcodeStr = new string[3];
barcodeStr[0] = barcode.Type.ToString();
barcodeStr[1] = barcode.Value;
barcodeStr[2] = barcode.AIMSI;

lvItem = new ListViewItem(barcodeStr);
lvBarcodeTypes.Items.Add(lvItem);
}

}


Thanks,

Clifton


Steve,
I turned on Assembly binding logging and got the following error.

=== Pre-bind state information ===
LOG: User = MOTION3Administrator
LOG: DisplayName = Intel.Healthcare, Version=1.11.0.16700, Culture=neutral, PublicKeyToken=2114a0263e1b67ff
(Fully-specified)
LOG: Appbase = file:///C:/Program Files/Intel/MCA/Bin/
LOG: Initial PrivatePath = NULL
LOG: Dynamic Base = NULL
LOG: Cache Base = NULL
LOG: AppName = BarCodeSample.exe
Calling assembly : BarCodeSample, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null.
===
LOG: This bind starts in default load context.
LOG: No application configuration file found.
LOG: Using machine configuration file from C:WINDOWSMicrosoft.NETFrameworkv2.0.50727configmachine.config.
LOG: Post-policy reference: Intel.Healthcare, Version=1.11.0.16700, Culture=neutral, PublicKeyToken=2114a0263e1b67ff
LOG: GAC Lookup was unsuccessful.

LOG: Attempting download of new URL file:///C:/Program Files/Intel/MCA/Bin/Intel.Healthcare.DLL.
LOG: Attempting download of new URL file:///C:/Program Files/Intel/MCA/Bin/Intel.Healthcare/Intel.Healthcare.DLL.
LOG: Attempting download of new URL file:///C:/Program Files/Intel/MCA/Bin/Intel.Healthcare.EXE.
LOG: Attempting download of new URL file:///C:/Program Files/Intel/MCA/Bin/Intel.Healthcare/Intel.Healthcare.EXE.
LOG: All probing URLs attempted and failed.

Again it seems to me this is a version mismatch issue, between the MCA 1.1 SDK and the motion C5 1.1 Driver.

Thoughts?

-Clifton

Thanks Clifton for the detailed information. One of our developers is looking at it now to determine what may be happening. Either I or the developer will respond as soon as we have identified what is happening.

-Steve

Steve,

Against convention I decided to put the MCA SDK on the motion C5 to see if that would resolve the issue. It did. I actually got the bar code to turn on and the MCA Log file was generated. So again I think there is something wrong with the versions, I will be removing the MCA assembly for the time being until a resolution is found to the version problem.

Thanks,

Clifton

Hi Clifton,

We have been able to duplicate the issue and determine the root cause. We are working on a solution now. I will update you when we have a work-around in place. The problem is related to the publisher policy file and versioning process that is used.

Thanks,

Steve

That's good news Steve. Thanks for all your help.

-Clifton

Hi Clifton,

The root cause of the issue is that we did not update the publisher policy file correctly in the v1.11 MCA platform driver. With the release of v1.1 we created a policy file to redirect 1.0 versions to 1.1. However with the release of 1.11, there should have been a policy file included for the redirection of 1.1 and there was not. Because the MCA platform driver and the MCS SDK releases of version 1.11 are not exactly revision matched, the problem occurred. We will update the policy file correctly for the next release of the MCA platform driver to correct the issue.

In the meantime there is a fairly simple work-around that you can use to move forward with the v1.11 software you have now.

Step 1: Download the attached zip file I posted for you and extract the two files to a temp directory on the Motion C5 where the MCA platform driver v1.11 is installed.

Step 2: From a command prompt, change to the directory where the files are located and run the following commands:

gacutil i Policy.1.1.Intel.Healthcare.dll
gacutil i Policy.1.11.Intel.Healthcare.dll

That should resolve the issue for you.

However, the gotcha of using this method is that you will have to manually uninstall the policy files if/when you update the MCA platform driver from v1.11 to something newer. The command line syntax to uninstall is as follows:

gacutil u Policy.1.1.Intel.Healthcare

gacutil u Policy.1.11.Intel.Healthcare

Note that these are similar, but there is no .dll on the parameter when you uninstall it.

Let me know if you have any questions or if it does not work as expected.

Thanks,

Steve

Attachments: 

AttachmentSize
Download policyfiles.ZIP2.87 KB

Hi Steve,

I tried the steps you provided above; however it was unable to install. I received the following error:

C: emp>gacutil -i Policy.1.1.Intel.Healthcare.dll
Microsoft .NET Global Assembly Cache Utility. Version 2.0.50727.42
Copyright (c) Microsoft Corporation. All rights reserved.

Failure adding assembly to the cache: One or more modules specified in the manifest not found.

Do you not have to sign/have a strong name key for the assembly in order to put it into the GAC? Just a thought, as when I tried the other installation route by using the .Net Framework Configuration tool I got the following error:

---------------------------
Cannot Add Assembly
---------------------------
Unable to add the selected assembly. The assembly must have a strong name (name, version and public key).

After looking at the manifest of the policy file, I see publickey but no publickeytoken. Thoughts?

By the way the gacutil tool does not come with the standard .NET runtime installation. I had to install the .NET Framework SDK. I say this because from what I read the C5 was not suppose to used as a Dev. environment; so I was not sure if installing the SDK to get the gacutil, and and the Framework Configuration tools is an ok action to perform on C5. I suspect not.

-Clifton

Steve,

Even though the policy files you attached did not work, I was still able to perform a binding redirect, using the .NET Framework Configuration Tool; the samples work now. Though I'm not certain of the Microsoft Best practice of performing such an action.

Thanks,

-Clifton

Hi Clifton,

It appears we also need to provide a policy text file toallow the gacutil program to operate correctly. I have uploaded a new zip file that includes the DLL files I previously posted for you, and the new policy text file. All three files should be in the same directory when you run the gacutil program.

Thank you pushing through this manually with uswhile wefigure the problem. Your effort is much appreciated.

-Steve

Attachments: 

AttachmentSize
Download policyfiles.ZIP2.87 KB

Leave a Comment

Please sign in to add a comment. Not a member? Join today