DQMH Consortium Toolkits Feature Requests

Community Browser
Labels
cancel
Showing results for 
Search instead for 
Did you mean: 
Overview
Get support when using Delacor toolkits.
Post an idea
Ben_Manthey

1: Rename Helper Loop, You can rename Modules and Events, it would be nice to be able to rename helper loops.

 

2: There's an event under the Application Event Source called 'Application Instance Close?' that fires when the OS is shutting down or rebooting. I think this should be added to new Modules automatically to allow an orderly shutdown during unattended reboots such as when updates run.

mbaudot

When creating a new Event, DQMH allows us to populate the Event’s Documentation field. This documentation is then inserted into the VI documentation for that Event.

It would be very useful if the same documentation were also copied into the Control Description for the corresponding button in the API Tester.

This would allow developers to build an API Tester, provide it to a customer for quick testing, and have the tester already include helpful user-facing documentation through LabVIEW context help.

Petru_Tarabuta

This suggestion is inspired by the following recent post in the LabVIEW Idea Exchange: Remove description of Error In and Error Out terminals 

 

It would be useful if the description of all error in/out terminals in all DQMH VIs was cleared (set to empty string). This would save 638 characters (0.62 KB) of disk space for each DQMH VI that uses error in/out terminals. It may help reduce EXE sizes, and may help speed up project load times and EXE build times, even if just by a fraction.

 

Many thanks,
Petru

FlatCat

Reposting this from the general DQMH forums:

 

Today I ran into my first instance of what is likely a common problem where my helper loop swamped the MHL with more requests than the MHL could handle (because of a hardware timeout problem). Since this was my first foray into Helper Loops, it took me a bit to track the problem down, using cumbersome history probes on DQMH Enqueue Message and DQMH Dequeue Message. 

 

What would have helped a lot would be an additional output terminal on DQMH Dequeue Messages that told how many items were still in the queue (using Get Queue Status). A person could ignore this terminal, probe it, or put in some code to check it and generate an error if too many messages built up. If I understand correctly, all that would be needed is a Get Queue Status in DQMH Dequeue Message wired to any of the free terminals. Making this change would not enable any forbidden manipulation of the queue itself; it would simply provide a sometimes-critical piece of information about the health of the module.

Some previous discussions of similar requests are here and here

MichaelAivaliotis

I've been using cloneable modules on a regular basis. Wiring consecutive request VI calls become tedious with regards to the module ID. Having that as a pass-through makes so much more sense. This is kind of like a reference to the cloneable module if you think about it. So that wire should be treated as such on the connector pane.

 

Screenshot 2026-03-02 155845.png

AlexElb

2026-03-27_10-54.png

I propose helper loops (HL) to register only for explicitly used events instead all cases.

 

Arguments:

  • Improves readability: It becomes immediately clear which events the HL reacts to.
  • Reduces cognitive load: No need to navigate through case structures to understand behavior.
  • Enhances maintainability: Adding/removing events is more transparent and less error-prone.

This would align well with our preference for simple, explicit, and robust designs.

 

Currently, this is not possible, as it would break existing scripting functionality, when creating a new request, which should be handled by the HL.

 

 

2026-03-27_11-03.png

By the way:Great that we have seen the scripting of the helper loop already being improved regarding...

joerg.hampel

When using the API Tester to, well, test my module, and an error occurs, I always would like to be able to clear the error indicator before moving on - just to make my life easier by being able to see clearly when new, further errors occur. 

 

Like this:

 

Screenshot 2025-10-21 at 19.43.38.png

 

Is there anything at all speaking against adding this nifty little feature? 

joerg.hampel

DQMH does store some settings in the LabVIEW.ini file. For example, "The last used virtual folder for tester, virtual folder for module, and relative path on disk for module" (see WhatisNewInDQMH.html). 

 

I would like a Settings dialog that exposes all available settings and configurations so I

 

a) can learn about what's configurable
b) can switch settings easily and quickly

 

We could implement a "Tools -> DQMH -> Settings..." menu or add to the LabVIEW Options dialog.

Darren

Over the years I find myself adding the following two requests to my modules more and more frequently:

 

Darren_1-1751574905387.png

The MHL code for these requests is very simple, and it doesn't get in the way for modules that don't interact with subpanels. I think these requests should be added to the standard singleton and cloneable templates.

 

I am familiar with the "create your own module template" argument against ideas like this. I've made those same arguments before. And I've implemented my own module templates with these requests before. But present-day, I equate the utility of these subpanel functions with the utility of existing core requests like 'Show Panel', 'Hide Panel', and 'Show Diagram'.

In addition to adding these requests to the core templates, we should also add a subpanel to the API Testers to (1) be able to test these requests (obviously), and (2) demonstrate the ease with which a DQMH module can be integrated into an existing subpanel-based UI.

avogadro5

This typedef should be public:

avogadro5_0-1768933786458.png

Here's a thread where a DQMH user is confused by a strange code break when they use subVIs to deal with launching modules. Here's another.

 

This datatype necessarily occurs in wires on the block diagram when registering for broadcasts therefore it is not "really" private, and scoping it private prevents us from using subVIs to register for events. Since subVIs are the main way we segregate code and prevent block diagrams from growing without limit, it should be possible to register for events in a subVI.

AlexElb

We all love that DQMH has that nice small icon of an antenna which allows identification of broadcasts easily.

 

AlexElb_2-1747732930634.png

 

 

Why not have something similar for requests to indicate, that this VI sends a message to the module and asks it to do something? :thinking_face:

 

  • :envelope_with_arrow:
  • :right_arrow:
  • :page_facing_up:
  • :left_speech_bubble:
  • :direct_hit:

 

 

 

AlexElb_3-1747732972767.png

AlexElb_4-1747733080417.png

 

Maybe place it to the left and use a complete different colour.

 

MichaelAivaliotis

This request is focused on simplifying the block diagram, one node at a time. it seems that when receiving a request and reply, you always need to pass the current module ID back. This seems to be a very common use-case. So common that perhaps there should be a convenient Module ID indicator on the Addressed to This Module VI? The purpose of this would be to reduce the clutter and allow more space for module functionality vs framework code.

 

Screenshot 2026-03-03 165118.png

Darren

Many DQMH developers (including myself!) encounter the stumbling block of firing requests before a module is "ready". We assume that the following code is sufficient for starting and synchronizing a module:

justwork.png

The 'Synchronize Module Events' VI ensures that request event references are valid, but it doesn't do anything about ensuring that the module is actually ready. One very common scenario is a module Main VI that includes code in the 'Initialize' frame of the MHL that fires private events to initialize Helper Loops. If the VI that called Start Module isn't waiting on the Module Did Init broadcast, then it could immediately fire a request after calling Synchronize Module Events, and if a helper loop is registered for that event, then helper loop could run the event frame for that fired event before the MHL has had a chance to fire the private event to initialize the helper loop. There are many other possible pitfalls, but this is one of the more common ones I've seen.

 

To solve this issue, I think DQMH should ship with a Public API VI that is a wrapper for Start Module + Synchronize Module Events, but includes the extra step of waiting for 'Module Did Init'. The module author needs to ensure that the Module Did Init broadcast is called after all necessary initialization code... if they do so, then it is "safe" to begin calling events externally.

Here's my proposed interface for the Start Module and Wait for Initialization VI:

contexthelp.png

 

And my proposed implementation:

 

justwork2.png

 

If this VI shipped with the DQMH singleton and cloneable module templates, it would help us avoid module synchronization + initialization issues like what I describe above.

Olivier-JOURDAN

It would be interesting to have the option to export the validation results from the UI with as much information as possible.

Adding the option to the CLI tool would also be interesting to create reports.

 

Format could be a CSV file (or HTML or PDF using the Asciidoctor toolkit :winking_face: ).

bhpowell

When renaming an event, the dialog allows you to edit the description. But it doesn't allow you to add a carriage return/newline, so you're limited in the kinds of edits you can make.

 

I'd like to see the ability to enter CR/LFs.

bhpowell

Feature request: The Add New Event dialog should always check the "add a button in the tester" Boolean by default.

Currently, it remembers whether you had it checked last time.

 

Reason #1: I think not adding a button is an exception, not the rule. Even though I didn't need a button last time doesn't mean that it's a pattern for how I work.

 

Reason #2: If you don't check it, the tester has empty events that are kind of useless until you add a button or reassign them to a different event. So you aren't saving the user any effort by not adding the button. My thinking is that it's the same amount of work to remove a button you don't want as it is to fix a broken event case.

Photon_Dan

This is a blatant copy of an idea from 2021, but it came up in a recent customer meeting.

 

While I agree that modifying event arguments is possible to do manually, can we take another look at automating that?

 

Right now if an argument is added to / removed from the typedef, it requires the developer to manually perform a series of (scriptable) actions:

 

  1. Open the public event VI
  2. Create a new control or indicator OR remove existing
  3. Expand the bundle/unbundle, and wire it in OR collapse the bundle/unbundle to get rid of the deleted argument(s)
  4. Wire the new item to the conpane and set it to Required (in the case of a control)
  5. Update the EHL case to make sure the cluster is properly bundled (can be checked by the validator)
  6. Take care of updating the Tester

 

So here we have a multi-step process where things could be easily forgotten. Order of operations matters. The steps are well defined. The activity is dull. It feels like a good candidate for automation.

Darren

The 'External Launch' module data for a DQMH module indicates whether or not the Main VI was started externally (True) or launched as a top-level VI (False). For the top-level VI case, the last thing that runs in your DQMH Module Main VI is the following:

Darren_0-1762450138400.png


I propose that we change the code to this:

Darren_1-1762450200016.png


When running a Main VI as a top-level EXE, it should have standard shutdown behavior.

MichaelAivaliotis

I like the new additions to DQMH 7.1 including the Private Wait for Reply events. It's a shame however, that the feature was not fully fleshed out. It would be convenient to have the ability to convert Private Requests to Private Request and Wait for Reply.

joerg.hampel

When the DQMH Consortium introduced the support for private requests with DQMH 7.0, a conscious decision was made not to support synchronous requests with reply, to avoid dead-lock scenarios.

 

With the way we at HSE start additional DQMH modules from any given DQMH module (by sending a request from the MHL to the EHL to start and register for modules, then reply back to the calling MHL case, so the whole process becomes synchronous), it would be super helpful if we could script those private "start submodule" requests the exact same way as all other private requests.

 

TL;DR: Add support for private Request and Wait for Reply.

 

Edit: After internal discussion, let me add that I know how to make a regular request a private one by setting the access scope. I don’t want to do that - I want the private Request with Reply to be the same as all other private events, and not a modified public request.

 

Edit2: If you scroll down, you'll see that Manu added a vital piece of information. We usually communicate with one of the EHLs/Helper Loops, not the MHL. So scripting should not create another case in the MHL but keep the reply in the targeted EHL/Helper Loop.