DLL functions or shared variables? Or something else?
I have a Labview 2014-64 executable (or I can build a DLL) that runs one piece of equipment, the X-ray. The other engineer has a large CVI Labwindows 2015 + MS Visual Studio 2012 (C++) executable that runs everything else. I want the Labview code to be a slave of the CVI code, accepting commands to turn X-ray On or Off, reporting failures, and the like. Translating the X-ray code into C++ would be possible in principle, but not fun.
Shared variables look easy, but I'm kinda scared of them. I would define all the shared variables in my LV code, since I'm more familiar with LV, then use them in both. There's a thread in here called "Shared Variable Woes" so maybe I should be scared. In the alternative, I tried building a proof-of-concept DLL in Labview, and calling its functions in CVI/C++, and it works, but it's kinda clunky. (I'm attaching it below in case you want to play, or advise.)
Your advice would be appreciated.
By Óscar Gómez
In a few days my team and me will start a project and I'm a little anxious because I've never work with PXI Systems... If anyone want to tell me a tip, recommendation or something about your experience with this systems, you'll welcome. I'm one of the developers in the crew!.
I've experience with cRIO and cDAQ.
Hello fellow LabVIEWers,
I am trying to get a self developed PXI chassis up and running - with some problems.
As this is this my first time developing a chassis, some general questions about 3rd party chassis:
If I want to get a 3rd party PXI chassis up and running with MAX I just need to add the right description files into the right folder? otherwise the chassis will be recognized as "undefined"? but will still work - except triggers?
Whats my status right now?
Chassis is connected via PCIe 8361 - PXIe 8360 and the Connection seems to work Chassis seems to work and inserted cards get recognized by MAX and "self test" works Chassis seems to get recognized with the Keysight Resource Manager (I installed it and selected it in NI MAX) no unknown devices in windows device manager (so the NI SMBus Controller gets recognized correctly)
btw my actual SW installation:
PXI Services 17.5.1
I am open for any suggestions and tipps!
Thought I'd pass this along and see if anyone can reproduce with different versions of LabVIEW. Appreciate it if anyone has seen this and has a fix.
I'm using shared variables to communicate between applications (1:N). I'd been seeing some memory creep that was inconsistent and somewhat bizarre. Eventually managed to track it down to that I'm programmatically opening a connection to a shared variable in one loop, then reading the value in a different loop (the different loops have to do with reconnecting on connection loss and startup). There is a functional global used to pass the variable to the second loop. The Read Variable primitive deallocates all but 4 bytes of memory for the previous loop handle and then allocates memory for a new handle on each iteration of the while loop, hence creating a leak. This behavior does not occur if there is only one loop where there is an open, while loop with a read, and a close.
Main.vi demonstrates the issue. Main 2.vi is more like the NI example.
I've got service request #7728859 with NI going, but I think I got the guy's first day.
LabVIEW 2015 SP1 32-bit on Win7 64-bit. Shared Variables memory leak.zip
More out of curiosity than of hope: has anybody any idea why SVs are almost unsupported on linux? By almost I mean that controls and indicators cannot be bound to shared variables, and that shared variables cannot be programmatically created and looked up. I know that SVs hosted on windows can be accessed in linux LV using datasocket nodes, but that is all it gets. And it has been said that datasocket is despicable. What are the missing pieces that make SV windows-only?
I didn't find much in the canonical places, so I posted a dumb zero-kudos attracting idea.