I have a system that is using the Ocean Optics USB2000+ spectrometer. There are numberous diferent driver VI's provided by Ocean Optics. They are little more than wrappers for functions called through a Call Library Function node to functions contained in their OOIDRV32.DLL file.
Here is the call setup screen:
The block digram is here:
The my code seems to be working just fine. My trouble comes in the behavior of the supplied Ocean Optics driver VI's. This is the first of the Ocean Optics supplied drivers that are called from my VI. Sometimes this VI detects the spectrometer and the library call returns a serial number and an integer 1 to Successful. Other times it returns a * and 0, respectfully. When this happens I open the call setup screen and cick the browse folder icon and reselect the exact same OOIDRV32.DLL and click ok and the library call works correctly. It seems there is some issue with the library call. Some occasions I can even save and close my VI and it will work the following time, others it will not and the fix is to "relink" the very same OOIDRV32.DLL file to the library call.
I attempted to hard code the serial number into my VI and ignore this particular VI with its odd library call, but then the next Ocean Optics driver VI that calls a diferent function from this same OOIDRV32.DLL file has the same problem.
I need to find out why this relinking of the DLL to the library call function keeps being required (intermittently). I need to package my VI as an application and I cannot get the application to work after I build it even after a number of successful executions in the Labview development environment.
Is there a way to programatically set up a library call? perhaps that would be a work around?