LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

installed program no comm with driver

Solved!
Go to solution

Hello,

 

I have developed a small DAQ program in LabView (2013) for an "Extrel quadrupol mass spectrometer (MS)" using the very nice company supplied LabView driver.

The developer laptop is a win7 x64 system with LabView2013 Pro. The Extrel soft is installed, the laptop can communicate with the MS instrument. The developed program runs on the developer laptop from its VI, from the build EXE, and I also made an installer version and it works too.

 

The target laptop is also win7 x64, with no LabView installed. I included the LabView2013 runtime engine in the first version of my installer, and I installed it on the target laptop.

When I run the installed program, it launches the native  "ExtrelMerlin" software as it should, but from this point the event structure (see example in driver: "Panel_Tune Display.vi", "ScanDataCluster": Value change in the event structure) what should get data (for example in every 2 sec) from the driver is not fired, the program hangs, and when I exit it, it exits without error...

 

I have some more info about this LV driver:

 

 

  • The LabVIEW driver project utilizes Event Callback functions to get information back from Merlin Automation COM Server. This feature is not available in the Base development system of LabVIEW. You will need the full development system of LabVIEW to run this project.
  • The LabVIEW driver uses Merlin Automation COM Server (Which will be installed and configured during the installation setup of Merlin Automation software) to access scan data and control the instrument. A custom DLL (\Extrel MerlinLV\Public\Bin\ Extrel.LVDataAdapter.dll) is used by the VI files to convert the COM data structures to LabVIEW compatible data types.


In my installer's build options I see that, the " Extrel.LVDataAdapter.dll" is listed under the dependencies. I wonder why my installed program can get data from the COM server on the developer laptop (with LV 2013 Pro dev. environment), but not on the target laptop with runtime engine...? Should I explicitely include the dll somewhere else in the build options? Since the target laptop has only runtime engine installed?

It would be wonderful if someone with more experience could point me where to find the source of the problem...

 

thanks very much for help!

 

here you can have a look on the official instr.lib driver of the MS:

https://dl.dropboxusercontent.com/u/8148153/labview_Extrel_driver.zip

 

0 Kudos
Message 1 of 9
(3,754 Views)

actually the situation is more strange, since I realized that, some functionalities are still working in the exec. version on the target laptop...

I think I just have to install labview on the target laptop too, since I have no idea whats going on...

0 Kudos
Message 2 of 9
(3,718 Views)

so the problem in a "nutshell":

 

There is a LV driver (project classes and an adapter dll) for an external application running in windows. The developed LV code works from code, and also from the EXE on the developer laptop. However the same EXE only partially works on the target laptop: same OP and LV runtime engine. In the same folder build folder what is copied to the target laptop, the "Extrel.LVDataAdapter.dll" file is in the "data" subfolder.

 

The EXE LV program can read out only some parameter data (but not measurement data), but cannot perform any "set" command on the external program, as it can do it on the developer laptop.

Because of this "half working" behaviour, I am totally lost. I have some functioning, but not 100%. I try to pinpoint what is the reason of this...? 
All the dlls, and the LV driver project classes are included in the build, also the Extrel.LVDataAdapter.dll file...How can I "emulate" the working condition set what I have on my developer laptop on a target laptop only with runtime engine?

 

Anyway, tomorrow I install LabView developer environment on the target laptop to see the result...

0 Kudos
Message 3 of 9
(3,698 Views)

@Blokk wrote:

so the problem in a "nutshell":

 

There is a LV driver (project classes and an adapter dll) for an external application running in windows. The developed LV code works from code, and also from the EXE on the developer laptop. However the same EXE only partially works on the target laptop: same OP and LV runtime engine. In the same folder build folder what is copied to the target laptop, the "Extrel.LVDataAdapter.dll" file is in the "data" subfolder.

 

The EXE LV program can read out only some parameter data (but not measurement data), but cannot perform any "set" command on the external program, as it can do it on the developer laptop.

Because of this "half working" behaviour, I am totally lost. I have some functioning, but not 100%. I try to pinpoint what is the reason of this...? 
All the dlls, and the LV driver project classes are included in the build, also the Extrel.LVDataAdapter.dll file...How can I "emulate" the working condition set what I have on my developer laptop on a target laptop only with runtime engine?

 

Anyway, tomorrow I install LabView developer environment on the target laptop to see the result...




Is it possible that there is a different/older version of the dll already installed on the target computer?

Bill
CLD
(Mid-Level minion.)
My support system ensures that I don't look totally incompetent.
Proud to say that I've progressed beyond knowing just enough to be dangerous. I now know enough to know that I have no clue about anything at all.
Humble author of the CLAD Nugget.
0 Kudos
Message 4 of 9
(3,690 Views)

The very same dll is used from the CD of the MS on both laptop. Also, the built exe has the dll next to it, and i copy the whole folder to the target laptop...

0 Kudos
Message 5 of 9
(3,684 Views)

We have also some unexpected LabView crashes sometimes when launching the program from LabView 2013 environment...like 3 crashes, and after that the program runs again fine...

We will contact the company who made the dll and the drivers for further help, there is something wrong for sure with the dll data adapter method...

0 Kudos
Message 6 of 9
(3,674 Views)

Hello Blokk,

 

did you already contact the manufacturer of your dll? What's the resault? Are there any issues noted?

 

Best regards,

Cem

0 Kudos
Message 7 of 9
(3,468 Views)

we are still waiting for a reply. I will come back when I get new info.

0 Kudos
Message 8 of 9
(3,450 Views)
Solution
Accepted by topic author Blokk

I have just figured out, the experianced bug is related to some environment dependent subVIs in the LabView project what came from the company:

 

1. The LabView code starts to get spectrum data at every scan time only after setting some parameters via LabView in the mass spectrometer software. I did not look into deep why it works like that, but this is what I know.

2. So I realized that, when I trigger an event what should set a parameter in the native MS software via a macro string command (sending a string to the MS software via the driver interface) it does not do it. I have checked the format of the string what is sent to the outer software from LV, and I started to bang my head to the table...

 

The programmer who developed the code did not make the double number--> numeric string conversion regio independent. Since the spectrometer's native software only accepts macro command string with numbers using decimal point, the software just could not interpret it as valid command 🙂 Because the target laptop had German Windows with "," decimal mark....The developer laptop had English settings, so it worked there.

 

I am lazy to fix all these mistakes in the LabView code, so I just changed the decimal mark to "." in the target laptop, and voala: everything works 🙂

And I thought there is some very difficult bug I have to deal with 😄

Message 9 of 9
(3,373 Views)