LabWindows/CVI

cancel
Showing results for 
Search instead for 
Did you mean: 

Distributing application using DAQmx

Hello,
I have an application that optionally uses a USB-6501 card. That card comes with a NI-DAQ CD that contains the DAQmx 8.01 software. I can safely assume that the user installes the DAQ software from that CD.
 
The card is visible under NI-MAX and works fine with the test panel. Therefore, I am assuming that I do not need to include the DAQmx Runtime Engine in my distribution build. Is this a correct assumption?
 
I guess not, because my app cannot access the card. When I add the (>200MB) Runtime3 version of DAQmx to my distribution, the application see's the card. The distribution kit however links version 8.1.0 of DAQmx.
Therefore my question is - does it work because of the higher version of DAQmx or because the distribution Runtime3 contains files which are not installed when I use the DAQmx CD that comes with the card.
 
Thanks,
Greg
 
0 Kudos
Message 1 of 5
(3,862 Views)
Greg,

Because your target machine only has version 8.0 and your application was developed against version 8.1, you do need to include DAQmx in your distribution.  If it were the other way around (your target had the same or higher version than you developed with), you would not need to include DAQmx in your distribution.

Both versions you mention support the USB-6501, so there should be no hardware compatibility issues.

Hope this helps.

Mert A.
National Instruments
0 Kudos
Message 2 of 5
(3,848 Views)

Hello Mert,

do I need the same DAQ version on the development- and target machine in any case, or only if I use functions that are not supported in the older DAQ version. The reason I'm asking is that I never expierienced that behaviour with other NI libraries such as Traditional DAQ or GPIB 488.2.

The function not working with the 8.01 DAQ version is   DAQmxGetSystemInfoAttribute (DAQmx_Sys_DevNames, ...)

Thanks,

Greg

0 Kudos
Message 3 of 5
(3,826 Views)
Hi Greg,

No, actually, you do not need exactly the same DAQ version on the development and target machines.  The requirement is that your target machine have at least as high a version of the DAQ driver as you develop with.  This requirement exists regardless of whether you use new functions or not.  When you build your DAQ application, it links against a cvi-to-DAQ interface library which dynamically loads functions from the DAQ DLL.  However, it loads functions in batches (e.g. all the reading functions at once), so it actually loads many functions that you may not ever call in your application.  If the library attemps to load a function that is not found (because the DLL is an older version), then you'll run into an error telling you that your DLL is the wrong version.  Offhand, I would guess that in your case the library is attempting to load all the System Configuration functions and is choking on DAQmxSetDigitalLogicFamilyPowerUpState, which is new in version 8.1.  On the other hand, if you try to run a DAQ application on a system with a newer DLL than the one it was built against, everything will load just fine, and you should have no problems.

I do not know if this is different from how the Traditional DAQ or GPIB libraries work, but I would not be surprised either way.

I hope this helps clarify the behavior.

Mert A.
National Instruments

Message Edited by Mert A. on 09-06-2006 03:31 PM

0 Kudos
Message 4 of 5
(3,806 Views)

Thank you Mert, - that makes much sense and helps a lot.

Best Regards,

Greg

 

0 Kudos
Message 5 of 5
(3,778 Views)