08-27-2021 01:54 AM
Hi,
I have created an Application which uses DQMH modules. The Request to these DQMH modules are being triggered through Test Stand. The System runs properly in Development Environment when I am using VI of my Application. But when I use Exe of my Application and try to send Requests using Request VIs I get the error: No instance of the module is running.
Can anyone help me with how do I use request with the Exe.
Regards
Linus Koli
08-27-2021 03:04 AM
Hey Linu95k, in a nutshell, you cannot use the Request VIs to talk to modules inside a built application. The VIs are executed in a different memory space than the modules inside the exe.
The following links might shed some light on how to go about using executables from TestStand:
DSH Pragmatic Software Development Workshops (Fab, Steve, Brian and me)
Release Automation Tools for LabVIEW (CI/CD integration with LabVIEW)
HSE Discord Server (Discuss our free and commercial tools and services)
DQMH® (The Future of Team-Based LabVIEW Development)
08-27-2021 04:07 AM
Hello Linus
TestStand always offers traps when dealing with DQMH modules!
If you have problems with PPL, please have a look at the "Best Parctices"
Claude
08-27-2021 04:29 AM
Hi Claude,
I am fairly new to both Test Stand and DQMH to answer you.
1. I am not used PackedLibraries for DQMH.
2. Yes, I am certain the DQMH module are running in run-time. I am using a Main Application and my DQMH modules are loaded in the Sub-panels of the DQMH module. Also my module are interacting with my hardware, for instance my DAQ module is able to perform switching action through it Front Panel controls. However I am having difficulty send it Request via Test Stand to Trigger the same action.
3.Yes my Test Stand Adpater is set to LAbview Runtime.
4. My GUI and DQMH module are running the same Labview Application Instance. However I have used Labview Test Stand API which Load a Sequence file in which Action steps are loaded with my Request VIs.
5. I am not familiar with PPL but will check the article you have shared.
Thank you.
Regards,
Linus Koli
08-27-2021 05:17 AM
Your problem is as follows:
Solutions:
I recommend starting with PPL first.
Claude
08-27-2021 07:36 AM - edited 08-27-2021 07:36 AM
Hi Claude,
My post is purely driven by curiosity, as I've not tested such architecture myself.
Building the TS GUI with the 'source' module and the TS calls from the PPL module, will the requests from the PPL 'find' the module ?
Since the PPL name creates a namespace on top of the containing VIs, I wonder if a request will expect the underlying event to registered by myLVLIBPModule.lvlibp:Main.vi (?). In other words, is it possible that the request stored into the lvlibp won't ever relates to the module used in the exe (since this one is not part of the lvlibp) ?
08-27-2021 07:44 AM
Sounds like the sort of question I asked several months ago when I started out using DQMH modules in TestStand...
As Claude has said, you don't build your DQMH into an exe, try a packed project library (PPL) instead. After you've created your PPL, add it to your TestStand workspace and
- In your TestStand sequence, browse for your DQMH module request VI's in the PPL, where each request VI is a new LabVIEW action
- Create File Globals for whatever data you need to pass between your requests, particularly Module ID
- Assign the Module ID file global to the Module ID output terminal of the Start Module vi
- Reference this file global as the Module ID input terminal for all other request VIs
The screenshot below shows a basic sequence for calling DQMH requests:
Also, I'd suggest familiarising yourself with Delacor's shipping examples: http://delacor.com/documentation/dqmh-html/ShippingExamplesandIntegrationwi.html
08-27-2021 07:48 AM
Indeed that is the right way to go !
However Linus didn't follow that path and now have to make it work without rebuilding the while application.
Maybe there are ways to help him with that today.
08-27-2021 08:18 AM
Yes absolutely, the request can be executed correctly if the same PPL is used by the EXE and TS. The instance is started in the EXE and can be accessed from TestStand via the PLL.Requests.
Requirements:
=> Identical called DQMH.PPL
=> Identical namespace
=> Identical Application Instance
Not necessarily the best architecture but it works.
08-27-2021 09:37 AM
Friday,
I had the impression that only the PPL vis was called from TS, and exe relying on the lvlib ones.
No conflict to expect when TS will try to load VIs that are already reserved by the EXE (because already running and mounted in memory by the exe)?