Update January 31, 2018: New DQMH 4.0 Beta 6 available for download. The Release notes below have been updated.  We just need to update the documentation before releasing via the LabVIEW Tools Network.

We have been busy implementing several of the requests you have sent to us either by direct contact or via the DQMH forum at NI. We also continue to eat our own dog food as we use DQMH in our own internal projects. We have been using DQMH 4.0 internally for a while and even shared the Beta version with some of you already. The feedback from our Beta testers has made DQMH 4.0 even better and ensures that we continue to honor the quest for the best Developer Experience (DX). Keep the feedback coming, and you can always add your DQMH feature request via the DQMH feature requests document on the DQMH forum.

Why have we have not published it via the LabVIEW Tools Network yet? There are two things we are still working on:

  1. Updating the documentation to match all the new features.
  2. Completely revamping the shipping examples to match DQMH 4.0. –> [Update January 31, 2018] The new Beta release has the latest version of the shipping examples that match DQMH 4.0. We also cleaned up and updated the TestStand examples. See the release notes at the bottom of this post for more details.

As soon as we are done with those two items, we will make DQMH 4.0 public via the LabVIEW Tools Network.

Below is a preview of the Release Notes, if you see something you like, please feel free to download DQMH 4.0 and give it a try. (You will need to register in order to access the download below)

Download “DQMH-4.0-Beta-7.vipc” DQMH-4.0-Beta-7.vipc – Downloaded 15 times – 17 MB

While you wait for the download and installation to finish, you can watch this video that explains how to validate and automatically fix your DQMH modules made with DQMH 3.0 or earlier.

And here is a preview of the DQMH tools for LabVIEW RT.

DQMH 4.0 Beta Release Notes

This is a DQMH Beta release, the release notes and documentation are not live yet, they will eventually be at: http://delacor.com/dqmh-4-0-release-notes/

DQMH Help is not live yet. To get to the DQMH 4.0 documentation, turn off your network connection and then go to Help>>Delacor>>DQMH Help… or open help directly via <LabVIEW>\help\Delacor\_Delacor QMH\DQMHDocumentation.chm

Major new features

  1. Added tool to create a DQMH API Tester for Cloneable DQMH Modules running on a LabVIEW RT Target –>  Based on requests like this one here.
  2. Updated New Module tool to allow for absolute paths in the metadata XML for a DQMH module template. If the <AbsolutePaths>TRUE</AbsolutePaths> tag is present, then the LocationPath entry will be ignored, and the code assumes the paths for the library and the tester tags are absolute. –> as requested here
  3. Added tool to create a DQMH API Tester for Cloneable DQMH Modules running on a LabVIEW RT Target.
  4. Added tool to create New Unit Tests for existing events

Project Template

  1. Modified the template VIs to not have the Update Display status and instead call the Status updated broadcast. –> This is to follow one of our own Best Practices of calling atomic operations directly instead of enqueuing several operations because we cannot guarantee that nothing else is enqueued in between.
  2. Removed the Show Panel, Hide Panel, and Show Diagram messages from the MHL. Added two new subVIs, Open VI Panel.vi and Hide VI Panel.vi. They are private to the module. And the Show/Hide Panel events call those subVIs (and also broadcast messages about the panel being shown/hidden. And Moved the Show Diagram code from the MHL into the Show Diagram event case. With this approach, we solve the issue of the MHL being locked out from show/hide panel, and we provide utility subVIs for showing/hiding the panel that any other message can call to make its operation atomic. –> Following our own Best Practices of calling atomic operations.
  3. Added handling of error output from Register For Events function in Main VI of all three libraries in DQMH project template.
  4. Updated Close Module.vi in both libraries to fire the Module Did Stop broadcast even if there is an incoming error.
  5. Updated singleton and cloneable Main VIs in the project template to pass the queue class wire around the event structure in the EHL instead of passing it through.
  6. Updated code in Panel Close event to call the new Hide VI Panel VI and no longer call the Confirm Quit message. Removed Confirm Quit message from MHL.
  7. Updated Handle Exit VI to call the new Hide VI Panel VI, and to not wire the error terminals of the VI.
  8. Updated Singleton tester to remove race condition of front panel being reinitialized and the Module Running local variable being updated. Also updated Cloneable tester to use the same arrangement for consistency. –> Based on feedback given here

DQMH Scripter

Specific for LabVIEW RT Support:

  1. Added scripting support for RT API Tester for cloneable modules
  2. New DQMH Real-Time Tools>>Create RT Tester makes a copy of existing tester with -RT.vi file name suffix and tags the copy with an RT tester-specific tag.
  3. Scripting code puts RT copy next to existing tester in the project. If not found, puts it next to module library.
  4. DQMH API Tester for RT removes post-loop code that stops the module. Updates free label to mention use case for leaving RT tester dormant.
  5. DQMH API Tester for RT removes Or for the error cluster, and adds an error out local variable.
  6. Value Change events are not supported in RT, nor Panel Close? events. These events are not present in DQMH API Tester for RT.
  7. DQMH API Tester for RT has logic in Timeout event with default buttons (Start, Stop, Refresh, Exit), polls for buttons and has a case structure with a frame for each one of all the existing public requests in the cloneable module.
  8. Scripting code adds a CodeNeeded bookmark in each case frame so the user can wire in whatever inputs he needs to the public request in order to properly test it.
  9. The tool scripts latching button on the panel for each public request VI.
  10. The tool skips scripting for  “Hide Panel”, “Show Panel”, and “Show Diagram” since they don’t have a meaning in an RT Tester.
  11. Added ability to have new events create appropriate code in both the traditional DQMH API Tester and the DQMH API Tester for RT.
  12. Changed Arguments Window to be a VI created in the temp folder that is deleted after event scripting is done. This allows us to discard any errant saved changes to the Arguments Window made during its use.
  13. There are now validate/fix tools for a module folder with multiple VIs tagged as Main, Tester, or RT Tester.

Other DQMH Scripter updates:

  1. Fixed scripting bug (error 1314) that was trying to update labels of constants inside typedefs when creating a module from the template.
  2. Changed scripting for Request and Wait for Reply events to place control terminals for the event parameters outside the case structure instead of inside of it.
  3. Updated New Module tool to allow for absolute paths in the metadata XML for a DQMH module template. If the <AbsolutePaths>TRUE</AbsolutePaths> tag is present, then the LocationPath entry will be ignored, and the code assumes the paths for the library and the tester tags are absolute. –> as requested here
  4. Improved Rename Event scripting to only do a save on the VIs in the project that are callers of the renamed event. This greatly improves performance.
  5. Changed New Module scripting to only do a Save All on the new module library instead of on the entire project in order to save time.
  6. Added support for scripting a new module into an auto-populating folder in the project. –> as reported here
  7. Clarify error message when trying to create an event with the same name as a VI on disk to specifically mention files instead of library members.
  8. Removed duplicate entries in Modules list ring (in all scripting tool UIs) if the same module (by disk path) appears under multiple targets. –> as reported here
  9. Fixed bug where DQMH scripting was attempting to set the subdiagram label of any subdiagram in any generated code where the label hasn’t ever been shown.
  10. Fixed a “bug” with scripting where a VI was being erroneously identified as the tester VI for a module.

New Validate/Fix DQMH Module Tools for:

  1. Finding obsolete Show Panel, Hide Panel, and Show Diagram message frames.
  2. Finding and fixing untagged Request and Wait for Reply VIs (needed for Delacor VI Analyzer custom tests).
  3. Detecting and fixing the old error handling in Close Module.vi.
  4. Added a new validate/fix tool for the Handle Exit case that inserts a clear Errors on the output of the FP.Open method, since this can error out when called in a Real Time system.
  5. Added Validate Module test to detect an unwired error output on the Register for Events node in the module Main VI.
  6. Added Validate test for message strings being wired into DQMH Enqueue Message that do not have corresponding frames in the MHL case structure.

DQMH Thermal Chamber Examples

  1. Validated for DQMH 4.0 and updated to match DQMH 4.0.
  2. TestStand: Renamed Local variables Temperature_Set_Point and Temperature_Set_Points to be Current_Temperature_SetPoint and Temperature_SetPoint_List. Both are more descriptive and less likely to cause confusion while editing sequence steps.
  3. TestStand: Replaced the Do-While with For-Each Loop since the code is looping through arrays of values that are not dynamic during looping.
  4. TestStand: Removed Locals.TempAsString variable, it had no purpose as a variable that is not satisfied just by the numeric value that we already had, moving the conversion to where it is needed.
  5. TestStand: Disabled Result Recording at the sequence level and Force enabled the required steps in sequence. The previous approach of disabling every step result except one led to a very cluttered sequence view.
  6. TestStand: Edited sequence file properties to select the required Model file instead of modifying the TestStand station options programmatically. This respects the TestStand station options the people trying out our DQMH examples have. Updated the welcome message.
  7. Set TestStand reports to be HTML instead of XML. Introduced the ReportOptions Sequence File Callback to pass the Report Format, Directory Type, and Directory Path. Changed the Find TestReport Directory.vi to create the DQMHTS Reports folder if it is not present.
  8. LabVIEW: Added Check Execution Status Case to the MHL. Added case Stop DQMH Modules.
  9. LabVIEW: Updated the exit case to include the Close Termination Monitor.vi
  10. TestStand: Edited each sequence file to have a specific sequence model. No model selected for the Thermal Chamber sequence since it does not have a unit under test. Selected the “Sequence Model” for the sequence example that has a single unit under test. Selected the “Batch model” for the sequence example with multiple units under test. This approach respects the current station options configuration and does not change them. Updated the welcome dialog and notes in the sequence files to reflect these changes.
  11. TestStand: Deleted steps that were marked as skip. They were no longer used.
  12. TestStand: Fixed spelling error on subsequence name.
  13. TestStand: Configured the number of sockets to 2 for the Batch sequence instead of using what is currently on the station.


  1. Added section to the documentation that talks about the creation of DQMH API Tester for LabVIEW Real Time.
  2. Moved DQMH Help button over one pixel to make it flush with right border.


Happy wiring,


(You will need to register in order to access the download below)

Download “DQMH-4.0-Beta-7.vipc” DQMH-4.0-Beta-7.vipc – Downloaded 15 times – 17 MB