7.0.0.1280 (Dec 14, 2023)
DQMH 7.0
Included packages:
DQMH 7.0.0.94
DQMH Palette 7.0.0.20
DQMH Examples 7.0.0.53
DQMH Project Template 7.0.0.99
DQMH Event Scripter 7.0.0.134
DQMH Documentation 7.0.0.1
== New Features
- DQMH 7.0 removes support for LabVIEW 2015.
- There is a new _Add Helper Loop to DQMH Module_ scripting utility available in the _Tools > DQMH Consortium > DQMH > Module_ menu. This utility will script a new helper loop at the bottom of the diagram of the module Main VI. For more information, see xref:AddHelperLooptoDQMHModule.adoc[here].
- The _Create New DQMH Event_ utility now allows you to create **Private Request** events, including **Local Instance** events for cloneable modules. For more details about Private Requests and Local Instance Requests, see xref:PublicandPrivateRequests.adoc[here].
- The _Create New DQMH Event_ utility now allows you to specify which event loop in the DQMH Main VI will be registered for a new Request, Request and Wait for Reply, or Round Trip.
- The _Create New DQMH Event_ utility now provides the option to specify a custom timeout value when creating a Request and Wait for Reply or Round Trip event. _(Issue #731)_
- For cloneable modules, when creating a new **Round Trip** event with the _Create New DQMH Event_ utility, the broadcast side of the round trip now includes the Module ID of the cloneable instance that fired the broadcast. _(Issue #739)_
- When a new request event is created with the _Create New DQMH Event_ utility, the Module ID terminal of the request VI will now be wired in the scripted event diagram of the API Tester VI. _(Issue #897)_
- The MHL and EHL of both modules in the DQMH Project Template have been widened by 250 pixels each. This allows for more diagram space for business logic when creating a new module from the project template, or from the 'Singleton' and 'Cloneable' entries in the _Create New DQMH Event_ utility. Note that the width of helper module code created with the new _Add Helper Loop to DQMH Module_ utility will match the width of the MHL.
- The _Validate DQMH Module_ utility includes a new test that detects whether or not the Static VI Reference used in the _Start Module.vi_ matches the connector pane of the _Main.vi_ of the module. If these don't match, _Start Module.vi_ will return a run-time error. _(Issue #762)_
- The _Validate DQMH Module_ utility includes a new test that detects the use of the **Default Values:Reinitialize All To Default** VI Server method on the block diagram of the module Main VI. The use of this method could inadvertently reset the values of controls passed in to the module Main VI via the Start Module VI. _(Issue #838)_
- The _Validate DQMH Module_ utility includes a new test that detects an improper **options** value wired to the Open VI Reference function in the _VI Reference AE_ VI of a cloneable module. Cloneable modules will not function properly unless a value of 0xC0 is wired to the **options** input. _(Issue #837)_
- The _Validate DQMH Module_ utility includes updates to an existing test to improve the detection of VIs in a DQMH module with improper reentrancy settings. _(Issue #836)_
- The _Validate DQMH Module_ utility includes a new test to ensure the _Module Name--constant.vi_ has not been modified in such a way to make it incompatible with the DQMH scripting tools. _(Issue #835)_
- The _Validate DQMH Module_ utility includes a new test to add an *Error Reported* broadcast to the 'Exit' message of the module main VI's MHL to ensure any error that occurs on module exit is sent to listeners before the module shuts down.
- The _Validate DQMH Module_ utility includes a new test to add a *Module ID* parameter to the Reply Payload of a cloneable Request and Wait for Reply event.
- The _Get DQMH Modules in Project.vi_ that is part of the DQMH Scripting API has been deprecated and replaced with _Get DQMH Modules.vi_ which provides more functionality, including an optional parameter to include modules under the **Dependencies** node in the project. _(Issue #808)_
- The _CML Main.vi_ in the DQMH Continuous Measurement and Logging sample project includes buttons to launch the tester VIs of the different DQMH modules that are part of the application. _(Issue #853)_
- The xref:ValidatinganExistingDQMHModule.adoc[Validating an Existing DQMH Module] help document now lists all the validation tests performed by the _Validate DQMH Module_ utility.
- The DQMH Style Guide was added as an option in the DQMH Tools menu. _(Issue #795)_
== Changes
- The _Private_ folder within the library of all DQMH template and example modules has been reorganized for easier project navigation. There are now four subfolders (_Constants_, _Errors_, _Framework Support_, and _Typedefs_) that contain all the framework-level private VIs that come with a DQMH module. You can use this organization for your own private module VIs, or create your own subfolders for business logic private subVIs. The _Validate DQMH Module_ utility includes a new test that will optionally organize the framework-level private VIs in your existing modules to match this new design. _(Issue #736)_
- The **Status Updated** broadcast was removed from the _Stop Module.vi_ to remove ambiguity for callers in regards to when the module actually stops. The DQMH Consortium recommends callers register for the **Module Did Stop** broadcast to determine when a module has actually stopped. This issue is detected and can be fixed with the _Validate DQMH Module_ utility. _(Issue #819)_
- The _Create New DQMH Event_ utility now scripts the MHL diagram of a new Request and Wait for Reply event in such a way to open up more whitespace to accomodate business logic code. _(Issue #809)_
- When creating a new Broadcast event, the _Create New DQMH Event_ utility now lists *Reply Payload* arguments (instead of Request arguments) when selecting the *Existing Request Argument* argument source.
- The labels of standard error input controls on all front panels of DQMH templates and examples have been named "error in" for consistency. This includes the error input labels of newly scripted VIs such as new requests, broadcasts, etc. _(Issue #782)_
- When creating a new module with the _Add New DQMH Module_ utility, the library banner of the selected module template will be used as the initial banner for the new module. As with previous DQMH versions, you can then change the banner if you wish with the **Edit Overlay** button. _(Issue #779)_
- The 'select a module' list ring in all DQMH scripting tools now lists modules alphabetically. _(Issue #858)_
- The tester VIs for all DQMH templates and examples have been updated to no longer stop executing on an error condition. Instead, an error indicator on the front panel displays the most recent error that has been generated by the tester code. The _Validate DQMH Module_ utility can identify existing testers with the old behavior and will optionally update them to the new behavior. _(Issue #767)_
- The Main VIs for all DQMH templates and examples have been updated to include a _Status Updated_ broadcast with a "Panel Hidden" message in the _Panel Close?_ event when "External Launch" is TRUE. The _Validate DQMH Module_ utility can identify existing Main VIs with the old behavior and will optionally update them to the new behavior. _(Issue #738)_
- The Main VIs for all DQMH templates and examples have been updated to move the "error out" local variable in the "Error" frame of the MHL to be wired to the error value that was passed via the Error message. This new behavior more accurately reflects errors that occur during module execution. _(Issue #803)_
- A comment was added to the block diagram of _VI Reference AE.vi_ for cloneable modules explaining the intentional reference leak. _(Issue #863)_
- The _Add New DQMH Module_ utility now allows you to create a new module in a folder that contains a .lvproj file. _(Issue #820)_
- The _Add New DQMH Module_ utility now displays the module type (singleton or cloneable) in parenthesis next to the name of all source templates. _(Issue #880)_
- The "Error" frames of the MHLs in the Main VIs for all template and example modules that ship with DQMH have been updated to contain a "DQMH_Disable_SEH==TRUE" conditional disable structure that wraps the Simple Error Handler VI call. This is to allow the developer to prevent the Simple Error Handler from being loaded when the module is loaded, which is useful for some situations, such as deploying a module to a Real-Time target. _(Issue #844)_
- All DQMH module framework VIs (i.e. VIs and CTLs included in every DQMH module) have been updated to have internal tagging identifying them as framework VIs. This improves the reliability of the DQMH Scripting Tools. There is also a new test in the _Validate DQMH Module_ tool that will detect untagged (or incorrectly tagged) framework VIs and add proper tags to them. _(Issue #902)_
- The _Validate DQMH Module_ utility now pops up a warning dialog if your project contains any DQMH modules with unsaved changes. This makes the _Validate DQMH Module_ utility consistent with other DQMH Scripting Tools. _(Issue #905)_
== Fixes
- When a new module is added to a project with the _Add New DQMH Module_ utility, and the project contains auto-populating folders that match the Module and/or Tester destination folder names specified in the utility, the module and/or tester will be added directly under _My Computer_ in the project to avoid errors, since VIs and libraries cannot be programmatically added to auto-populating folders. _(Issue #785)_
- If you attempt to launch any of the DQMH scripting tools from a .lvlib window (i.e. with no project open), a pop-up dialog appears indicating that the tool must be launched from a project. _(Issue 781)_
- Word wrapping is now enabled on the **Module Description** field of the _Add New DQMH Module_ dialog box. _(Issue #839)_
- The DQMH scripting tools now use a more robust mechanism for identifying framework-level virtual folders under the module library. _(Issue #851)_
- When creating a new Request and Wait for Reply event, the reply payload cluster constant will now be created in a consistent location within the MHL, regardless of the size of the cluster. _(Issue #834)_
- The fixer in the _Validate DQMH Module_ utility for updating the Error Reported event frame in the tester VI was not handling some non-standard code modifications to the event diagram. The fixer is now more robust and can still script the new Error Reported event diagram contents even if there are cluster constants in the frame, and if wiring to the error tunnels has changed. _(issue #873)_
- The fixer in the _Validate DQMH Module_ utility for adding 'Show Module Main VI Diagram on Initialization' functionality no longer returns a 1063 error in some situations. _(Issue #888)_
6.1.0.90 (Mar 22, 2022)
====== DQMH 6.1 ======
* DQMH 6.1.0.90
* DQMH Palette 6.1.0.18
* DQMH Project Template 6.1.0.94
* DQMH Event Scripter 6.1.0.128
* DQMH Thermal Chamber Example 6.1.0.51
Release notes can be found at https://dqmh.org/release-notes
The online version includes links to forum posts and blog posts relevant to the release notes.
For DQMH Help go to Help>>DQMH Consortium>>DQMH Help....
Release notes for DQMH 6.1
This is the first DQMH release that drops support for LabVIEW 2014.
### Major new features
#744 Validate tests for broken VIs. Return a validate failure if the Main VI and/or Tester VI for a module are broken.
#733 More custom fields in Module Template. When creating a DQMH Module Template, the user can now specify default values for Tester virtual folder, Module virtual folder, and relative path location for the new module. Then, whenever that template is used in the New DQMH Module dialog, those fields are pre-populated with the values from the module template and can be changed by the user. The last used virtual folder for tester, virtual folder for module, and relative path on disk for module are stored in the LabVIEW INI file. These will then be used when creating the next module with the Add New Module UI. Additionally, there is now a 'Reset path and folder fields to default' button in the UI so the user can see what the default paths for different module types are if he doesn't want to use his last-used path.
#734 New Scripting API for DQMH. VIs currently implemented are:
- Get all modules in a project
- Get all events in a module library
- Get all callers of a request VI in the project
- Get all VIs registered for a broadcast in the project
#735 Quick Drop plugin for calling DQMH tools. The Ctrl-E quick drop shortcut will now launch all DQMH scripting tools. Read the description of the plugin (Quick Drop > Configure > Ctrl-Key Shortcuts > Launch DQMH Tool) to see the commands for launching each tool.
#732 Ignore individual validation results. The Validation Results UI now allows you to right-click any validation failure and choose to ignore it for future validation runs. There is also a button in the results UI that lets you manage the validation failures for your modules. Note that this information is currently stored in a (human-readable) tag in the module .lvlib XML. The headless validator will fire a Validation Finished event even if the validation didn't start due to an error. Validation tests that can flag individual VIs will check for the Issue Text in the VI description and if so, will not return a failure.
#729 New 'Show Diagram on Init' data member All our shipping modules (Project Template, CML Template, Module Template, and shipping example) have been updated to have a new 'show main VI diagram on init' checkbox on their testers. This parameter is wired to the “Start Module” VI for those modules and implements the new functionality where, on startup, the module main VI diagram is displayed and Retain Wire Values is enabled. A validate+fixer has been added to update old modules to include this new functionality.
#737 New progress VI for headless validation. The 'Obtain Progress Events.vi' will be on the DQMH Scripting palette and will allow the user to monitor the progress of a headless validation via events.
#741 Rename 'Delacor' menu to 'DQMH Consortium'. Rename the Tools > Delacor menu to Tools > DQMH Consortium.
### DQMH Palette
#734 New Scripting API for DQMH. VIs currently implemented are:
- Get all modules in a project
- Get all events in a module library
- Get all callers of a request VI in the project
- Get all VIs registered for a broadcast in the project
#735 Quick Drop plugin for calling DQMH tools. The Ctrl-E quick drop shortcut will now launch all DQMH scripting tools. Read the description of the plugin (Quick Drop > Configure > Ctrl-Key Shortcuts > Launch DQMH Tool) to see the commands for launching each tool.
#729 New 'Show Diagram on Init' data member All our shipping modules (Project Template, CML Template, Module Template, and shipping example) have been updated to have a new 'show main VI diagram on init' checkbox on their testers. This parameter is wired to the “Start Module” VI for those modules and implements the new functionality where, on startup, the module main VI diagram is displayed and Retain Wire Values is enabled. A validate+fixer has been added to update old modules to include this new functionality.
#737 New progress VI for headless validation. The 'Obtain Progress Events.vi' will be on the DQMH Scripting palette and will allow the user to monitor the progress of a headless validation via events.
#756 New Legal and Version Info Constant VIs.
#723 About VI. There is now an 'About DQMH' VI in the DQMH palette. The Project Template, CML Template, Module Template, and Shipping Example have all been updated with a button in various UIs to launch the About box.
### Module Template
#733 More custom fields in Module Template. When creating a DQMH Module Template, the user can now specify default values for Tester virtual folder, Module virtual folder, and relative path location for the new module. Then, whenever that template is used in the New DQMH Module dialog, those fields are pre-populated with the values from the module template and can be changed by the user. The last used virtual folder for tester, virtual folder for module, and relative path on disk for module are stored in the LabVIEW INI file. These will then be used when creating the next module with the Add New Module UI. Additionally, there is now a 'Reset path and folder fields to default' button in the UI so the user can see what the default paths for different module types are if he doesn't want to use his last-used path.
### DQMH Scripter
#747 Don't list modules with RT testers already. When running the Create RT Tester utility, don't list modules in the module list that already have an RT tester.
#728 Module description field. When running the Create New Module utility, there is now an optional description field for specifying a module description (which will populate the Description field of the module library file).
#748 Improve scripting for 'event only' modules. The New Event scripting tool now works properly for scripting the new event in the main VI even if the EHL does not have a Delacor Message Queue tunnel input
#734 New Scripting API for DQMH. VIs currently implemented are:
- Get all modules in a project
- Get all events in a module library
- Get all callers of a request VI in the project
- Get all VIs registered for a broadcast in the project
#722 Don't try to parse PPLs. When parsing the project to find DQMH modules, ignore modules inside PPLs (as they can't be modified or inspected with our scripting tools).
#727 Remove extraneous text from error labels. Renamed the Reply Payload error cluster to just “error” instead of “[request name] error”. Updated the scripting code to create new reply payload error clusters with the simple label “error”.
#746 Improve Error Reported error reporting. Improved the code in the Error Reported broadcast of the tester VIs to return more useful error information. This change was made to the testers in the module template, project template, and CML template. There is also a validate+fixer to fix the issue in the existing code.
#749 New Null Broadcast Events--constant VI. Added the new 'Null Broadcast Events–constant.vi' to all template DQMH modules. Also added a new validate+fixer to add this VI to old modules that don't have it.
#741 Rename 'Delacor' menu to 'DQMH Consortium'. Rename the Tools > Delacor menu to Tools > DQMH Consortium.
### DQMH Validation Tool
#744 Validate tests for broken VIs. Return a validate failure if the Main VI and/or Tester VI for a module are broken.
#745 Wired Start Async Call output. New validate module test that returns a failure if the user has wired the VI Reference output of the Start Asynchronous Call function in the Start Module VI of a cloneable module.
#743 Improve namespace handling in timeout fixer. The fixer that adds the Timeout Error subVI to a Request and Wait for Reply VI now does a better job with only parsing VIs that are directly part of the module namespace (and ignores sublibraries that may have identically-named VIs)
#732 Ignore individual validation results. The Validation Results UI now allows you to right-click any validation failure and choose to ignore it for future validation runs. There is also a button in the results UI that lets you manage the validation failures for your modules. Note that this information is currently stored in a (human-readable) tag in the module .lvlib XML. The headless validator will fire a Validation Finished event even if the validation didn't start due to an error. Validation tests that can flag individual VIs will check for the Issue Text in the VI description and if so, will not return a failure.
#746 Improve Error Reported error reporting. Improved the code in the Error Reported broadcast of the tester VIs to return more useful error information. This change was made to the testers in the module template, project template, and CML template. There is also a validate+fixer to fix the issue in the existing code.
#749 New Null Broadcast Events--constant VI. Added the new 'Null Broadcast Events–constant.vi' to all template DQMH modules. Also added a new validate+fixer to add this VI to old modules that don't have it.
#752 Validate+fixer for Stop Module event ordering. The new fixer will update the Wait on Stop Sync VI to use the new mechanism to register for Module Did Stop before firing the Stop Module event. The fixer also fixes up the two callers of Wait on Stop Sync (Stop Module.vi and Close Module.vi).
#752 Add semaphores to singleton modules. Project Template, CML Template, and Module Template updated to include semaphore synchronization in all their semaphore modules. There is also a validate+fixer to detect this issue in older modules and update them.
#729 New 'Show Diagram on Init' data member All our shipping modules (Project Template, CML Template, Module Template, and shipping example) have been updated to have a new 'show main VI diagram on init' checkbox on their testers. This parameter is wired to the “Start Module” VI for those modules and implements the new functionality where, on startup, the module main VI diagram is displayed and Retain Wire Values is enabled. A validate+fixer has been added to update old modules to include this new functionality.
#737 New progress VI for headless validation. The 'Obtain Progress Events.vi' will be on the DQMH Scripting palette and will allow the user to monitor the progress of a headless validation via events.
### DQMH Thermal Chamber Examples
#752 Add semaphores to singleton modules. Project Template, CML Template, and Module Template updated to include semaphore synchronization in all their semaphore modules. There is also a validate+fixer to detect this issue in older modules and update them.
#729 New 'Show Diagram on Init' data member All our shipping modules (Project Template, CML Template, Module Template, and shipping example) have been updated to have a new 'show main VI diagram on init' checkbox on their testers. This parameter is wired to the “Start Module” VI for those modules and implements the new functionality where, on startup, the module main VI diagram is displayed and Retain Wire Values is enabled. A validate+fixer has been added to update old modules to include this new functionality.
#723 About VI. There is now an 'About DQMH' VI in the DQMH palette. The Project Template, CML Template, Module Template, and Shipping Example have all been updated with a button in various UIs to launch the About box.
### DQMH CML Project Template
#752 Add semaphores to singleton modules. Project Template, CML Template, and Module Template updated to include semaphore synchronization in all their semaphore modules. There is also a validate+fixer to detect this issue in older modules and update them.
#729 New 'Show Diagram on Init' data member All our shipping modules (Project Template, CML Template, Module Template, and shipping example) have been updated to have a new 'show main VI diagram on init' checkbox on their testers. This parameter is wired to the “Start Module” VI for those modules and implements the new functionality where, on startup, the module main VI diagram is displayed and Retain Wire Values is enabled. A validate+fixer has been added to update old modules to include this new functionality.
#723 About VI. There is now an 'About DQMH' VI in the DQMH palette. The Project Template, CML Template, Module Template, and Shipping Example have all been updated with a button in various UIs to launch the About box.
### Help
- Updated link to obtain DQMH Framework Badge
- Replaced all the instructions to go to Tools>Delacor> to Tools>DQMH Consortium>DQMH to use DQMH Toolkit
- Updated video link to Validating an Existing DQMH Module that shows the new features for DQMH 6.1 and how to validate an existing DQMH 6.0 project to match DQMH 6.1
- Updated New Module Dialog Image showing the new fields on DQMH 6.1 release.
- Added Using Quick Drop Section.
- Added “DQMH New… Menu” to the list of Third Party Products
- Updated DQMH in LabVIEW Real-Time section
- Updated URLs from delacor.com to the equivalent content on dqmh.org
- Changed the footer to have clickable text elements instead of showing URLs
- Updated Release Notes URLs in What is New in DQMH? section
- Added link to https://dqmh.org/training from How to Learn DQMH section
- Removed build number from DQMH Versions 4.0 and greater in the Change History section
- Published documentation at https://documentation.dqmh.org
6.0.0.83 (Jun 10, 2021)
DQMH 6.0
DQMH Toolkit 6.0.0.83
DQMH Event Scripter 6.0.0.122
DQMH Palette 6.0.0.14
DQMH Project Template 6.0.0.91
DQMH Shipping Examples 6.0.0.49
Release notes can be found at delacor.com/dqmh-6-0-release-notes/
The online version includes links to forum posts and blog posts relevant to the release notes.
For DQMH Help go to Help>>Delacor>>DQMH Help....
Release notes for DQMH 6.0
This will be the last DQMH release that supports LabVIEW 2014.
### Major new features
1. New error handling approach to store the DQMH Loop-specific error origin as a tag in the error source string.
2. New 'Find Event Frames' right-click plugin (LabVIEW 2015 and later)
3. When the Validate/Fixer cannot upgrade the Start Module.vi automatically, it creates a StartModule2.vi with instructions on how to migrate the code.
### DQMH Palette
1. #DQMH-638 Change new DQMH 6.0 error handling approach to store the DQMH Loop-specific error as a tag in the error source string. This preserves pre-DQMH 6.0 module behavior that expects the data type for an "Error" message to be an error cluster
2. Added DQMH Error Handler - Helper Loop.vi to the palette
### Project Template
1. #DQMH-694 Re-created the Main.vi for the Singleton and Cloneable module templates from scratch, making sure that their pane origin values make sense and are at (0,0)
2. #DQMH-696 Added a call to Update Module Execution Status.vi (with a 'Running?' value of FALSE) to Close Module.vi for our project template, CML project template, and module template. We also added a validate/fixer for the issue
3. #DQMH-697 Updated the scripting for the DQMH unit test teardown VI to use a Merge Errors for the incoming error so the Stop Module VI always executes. We also added a validate/fixer that checks for this issue
4. #DQMH-688 Creating a new module from template now works if the template exists in the project
5. #DQMH-685 Unbundle the reply in the Request and Wait for Reply (except for error). If there is not enough space for terminals, then the VI outputs the reply cluster as before. No validate/fixer tool
6. #DQMH-666 Updated the context help of the Start Module.vi and Synchronize Module Events.vi for both singleton and cloneable to better illustrate their use together
7. #DQMH-693 The Stop Module.vi for the My Cloneable Module.lvlib in our project template now has Fab's fix for Andreas 2.0, where we poll the module state at the end of stopping the module, if we're running as a singleton
8. #DQMH-638 Added support for parsing DQMH tags from the error source string in the 'Error Reported' broadcast VI. Added a validate/fixer tool
9. #DQMH-664 Made the MHL frame names with "---" prefixes have consistent spacing. Also fixed errant window position of 'Do Something Else and Wait for Reply' VI from singleton module
10. #DQMH-677 Updated Stop Module VI for singleton module to always stop the module regardless of incoming error. Updated testers for both singleton and cloneable to not do a Clear Errors when the event loop stops executing
11. #DQMH-686 Changed data type of Module ID input to Wait on Module Sync.vi to be an I32 instead of a U32. Included validate/fix tool
12. #DQMH-708 Don't show panel of singleton if not running. We changed the singleton template in DQMH 6.0 to broadcast an Update Module Execution Status of FALSE before closing. The application main VI in our project template needed to be updated to not try to show the panel of the singleton module if the module execution status is FALSE (since that means the module has stopped)
### DQMH Event Scripter
1. #DQMH-694 Re-created the Main.vi for the Singleton and Cloneable module templates from scratch, making sure that their pane origin values make sense and are at (0,0)
2. #DQMH-696 Added a call to Update Module Execution Status.vi (with a 'Running?' value of FALSE) to Close Module.vi for our project template, CML project template, and module template. Also added a validate+fixer for the issue
3. #DQMH-697 Updated the scripting for the DQMH unit test teardown VI to use a Merge Errors for the incoming error so the Stop Module VI always executes. We also added a validate+fixer that checks for this issue
4. #DQMH-684 This is the version of the 'Find Event Frames' right-click plugin that was signed off by the DQMH Trusted Advisors. Note that this only works on LabVIEW 2015
5. #DQMH-688 Creating a new module from template now works if the template exists in the project
6. #DQMH-685 Unbundle the reply in the Request and Wait for Reply (except for error). If there is not enough space for terminals, then the VI outputs the reply cluster as before. No validate/fixer tool
7. #DQMH-680 Prior to DQMH 5.0 we could create new DQMH Events for a DQMH module that did not have a MHL. This feature broke in DQMH 5.0. DQMH 6.0 allows the creation of DQMH events for custom DQMH templates that don't have a Message Handling Loop
8. #DQMH-683 Fixed error 1357 when creating an event if there is an unsaved VI in the project. When attempting to create a new event if there are unsaved files, there is a dialog explaining that the DQMH cannot script new Events until all unsaved VIs in the module have been saved to disk
9. #DQMHWL-46 Script the "Status" string update code in the API Tester for new broadcast events
10. #DQMH-676 If there is no module selected in the Create New Event dialog, the OK button is disabled
11. #DQMH-674 Updated the link for the Help button in the Create DQMH Module Template dialog box to point to the 'AddingaNewDQMHModulefromaCustomT' help topic
12. #DQMH-704 Improved the Rename DQMH Module performance and added a progress bar
13. #DQMH-710 Added code as workaround to address a scripting LabVIEW bug that results in error 1397 (NI is tracking this bug as 1281963)
### DQMH Validation Tool
1. #DQMH-696 Added a call to Update Module Execution Status.vi (with a 'Running?' value of FALSE) to Close Module.vi for our project template, CML project template, and module template. We also added a validate+fixer for the issue
2. #DQMH-697 Updated the scripting for the DQMH unit test teardown VI to use a Merge Errors for the incoming error so the Stop Module VI always executes. We also added a validate/fixer that checks for this issue
3. #DQMH-692 Added a validate test that finds bundles in Event Structures with unbundled inputs. This is useful when we add manually new event arguments and we forget to wire them. This is an example of a validate test that would be very useful in a Continuous Integration environment
4. #DQMH-681 Obsolete MHL Frames validator test was incorrectly flagging frames that contained the offending frame names ("Show Panel", "Hide Panel", "Show Diagram"). We improved the logic to do a exact match on the obsolete frame name instead of a partial match
5. #DQMH-691 Added a new validate test for Broadcast Event Cluster Naming. This test checks that the broadcast cluster outputs from key VIs in a module have a label that matches the format " Broadcast Events". Key VIs are: Obtain Broadcast Events.vi, Obtain Broadcast Events for Registration.vi, Start Module.vi, Init Module.vi, and Obtain Request Events.vi. There are scripting tools that rely on these indicators having the correct name
6. #DQMH-695 When the validate/fixer cannot upgrade the Start Module.vi automatically, it creates a StartModule2.vi with instructions on how to migrate the code
7. #DQMH-693 There is now a validate/fixer to fix the Andreas 2.0 issue in the Stop Module.vi of a cloneable module for the issue of starting/stopping a cloneable running as singleton in rapid succession
8. #DQMH-638 Added a new validate/fixer for modifying Error Reported.vi to the new DQMH 6.0 approach of parsing for DQMH tags. The fixer will also remove the Module Name constant VI that was added to the 'Error' frame of the MHL in the Main VI in DQMH 5.0
9. #DQMH-686 Added a validate/fixer to change the Module ID input of Wait on Module Sync.vi to an I32
10. #DQMH-677 Added a new validate/fixer to fix Stop Module.vi error propagation so the VI executes even on incoming error. The fixer also tells the developer which VIs in the current project call Stop Module.vi, in case they want to see if they need/want to modify code to account for this change
18. #DQMH-703 There is now a validate/fixer that will create all necessary core files in the DQMH module if any of them are missing. This mainly helps when running our validator on very old modules (like DQMH 2.0-era) that may be missing core files that were added in a post-2.0 DQMH release
### DQMH Thermal Chamber Examples
1. Ran validation tools to ensure DMQH Modules in the examples match DQMH 6.0
2. #DQMH-664 Made the MHL frame names with "---" prefixes have consistent spacing
3. #DQMH-686 Change data type of Module ID input to Wait on Module Sync.vi to be an I32 instead of a U32
4. #DQMH-696 Updated all the modules in the shipping example to call Update Module Execution Status.vi inside Close Module.vi
5. #DQMH-693 Updated the Stop Module.vi in the cloneable DUT module with the Andreas 2.0 fix (and updated context help)
6. #DQMH-638 Updated the 'Error Reported' broadcast VIs in the shipping example to use the new DQMH 6.0 approach for parsing DQMH tags out of the incoming error source string. Removed the Module Name--constant.vi from the 'Error' frame of the Main VI MHL case structure
7. #DQMH-713 Updated changed VI steps in sequence files
### DQMH CML Project Template
1. Ran validation tools to ensure DMQH Modules in this project match DQMH 6.0
2. #DQMH-598 Removed the unused queue wire in the helper loop of the Acquisition Main VI. Also replaced the error handler VI in the helper loop with the new DQMH 6.0 Helper Loop Error Handler VI
3. #DQMH-644 Added 'logging' state to Logger module to be able to no-op in the following situations:
a. Start logging if logging is already started
b. Stop logging if logging is already stopped
c. Log to file if logging has not started
4. #DQMH-667 Updated the filter for the CML DQMH project template to be 'Sample Projects:Desktop' instead of just 'Sample Projects'. I also updated the QMH template filter to include 'Templates:Desktop' so it will also appear in the Templates filter (it was previously not appearing)
###Help
1. Updated video link to Validating an Existing DQMH Module that shows the new features for DQMH 6.0 and how to validate an existing DQMH 5.0 project to match DQMH 6.0
2. Renamed the section What is New on DQMH to What is New in DQMH
Updated Introduction with the new DQMH logo and added extra information on the transfer from Delacor to the DQMH Consortium
3. Added section on Find Broadcast Event Frames
4. Added section on new error handling VIs called Additional Error Information
5. Changed references to “National Instruments” to NI
6. Updated contact email
7. Renamed and updated the What is New in DQMH with all the new features for DQMH 6.0
8. Added a new section for Feature Requests
5.0.0.72 (Apr 17, 2020)
DQMH 5.0 RELEASE
Release notes can be found at delacor.com/dqmh-5-0-release-notes/
The online version includes links to forum posts and blog posts relevant to the release notes.
For DQMH Help go to Help>>Delacor>>DQMH Help....
Release notes for DQMH 5.0
### Major new features
1. Singleton and Cloneable Module templates updated to use Start Async Call instead of Run VI method for launching Main VI
2. Added support for scripting an RT tester for Singleton modules (DQMH 4.2 only supported LabVIEW Real Time for Cloneable modules)
3. DQMH Validate Tool improvements
1. Prompt the user to run the validate module tool after upgrading DQMH via VIPM
2. Added the ability to validate all modules in the project. We also added a VI (Validate DQMH Module (Headless).vi) that you can pass in a project path and it will programmatically validate all modules in the project and return a result. This VI could be used as part of a CI/CD process to validate DQMH modules
3. Added a button to the Validation Results UI that allows you to analyze another module after you are done viewing the results for the current module. We also added a button to the ‘all tests passed’ dialog to allow you to validate another module as well
4. Improved API Tester developer experience: The API Tester does not stop the module on exit if it was already running when the API Tester started running. This is useful when using the API Tester as a sniffer
5. Request and Wait for Reply now return an error if the reply times-out
6. If your custom DQMH template requires a different enqueue (for example for a DQMH Queue child or if the DQMH libraries were built into a PPL), we added the ability to specify a custom enqueue message VI to be scripted into the MHL when creating request events Singleton and Cloneable Module templates updated to use Start Async Call instead of Run VI method for launching Main VI
### DQMH Palette
1. #DQMH-646 Updated cloneable module admin class to have a new ‘Close Master Reference’ parameter
### Project Template
1. #DQMH-599 Singleton and Cloneable Module templates updated to use Start Async Call instead of Run VI method for launching Main VI
2. #DQMH-613 Add support for scripting an RT tester for singleton modules
3. #DQMH-646 Added a VI Reference Management lvlib. Updated Init Module.vi to have an optional input to set the Close Master Reference value. This VI includes a long comment explaining the parameter. Updated Close Module.vi to use the new ‘Close Master Reference’ parameter in determining whether to leak the reference
4. #DQMH-650 Updated cloneable module with the Semaphore Solution for ensuring the Start and Stop operations on a cloneable module are atomic
5. #DQMH-589 Added request and wait for reply timeout –error constant VI. Updated all request and wait for reply VIs to return the error on timeout
6. #DQMH-642 New notifier approach for shutting down the event references in Close Module.vi after the last instance stops
7. #DQMH-585 Wrap ‘Stop Module.vi’ call at the end of the API testers in a case structure so it won’t be called if the module was already running when the tester started
8. #DQMH-585 Added an ‘Already running?’ output to the Obtain Broadcast Events for Registration.vi in the cloneable module template
9. #DQMH-597 made changes to Wait on Stop Sync.vi for cloneable modules to make sure the Stop Module.vi does indeed wait for the cloneable module to stop regardless if the caller is waiting for all the modules to stop or just this instance
10. #DQMH-638 Have the module name be sent via the “additional information” parameter when broadcasting Error Reported
11. #DQMH-600 Add ‘Release Queue’ VI call in top-level Error case of module Main VIs
12. #DQMH-651 deleted the unnecessary comment from the Request and Wait for Reply notifier template that gets scripted in the MHL for a reply message, as it is no longer relevant now that we have the ‘wait for reply’ parameter
### DQMH Scripter
1. #DQMH-589 Updated New Event scripting to support creating a new Request and Wait for Reply with the timeout error in it
2. #DQMH-596 Updated the Request and Wait for Event ‘Fire Event’ template VI to have the ‘Release Notifier’ function wired through the error chain to (1)avoid the off chance of a user turning on automatic error handling on the VI and (2) include an error from the Release Notifier function in the error chain
3. #DQMH-608 Updated DQMH Rename Module utility to also rename the RT Tester if it exists
4. #DQMH-548 Added the ability to specify a custom enqueue message VI to be scripted into the MHL when creating request events
5. #DQMH-603 Updated Add New Module tool to store the last selected module in the LabVIEW INI file and use that selection the next time the tool launches. If the stored module name isn’t found, default back to ‘Singleton’
6. #DQMH-645 Made new event VIs always be created as reentrant clones, regardless of whether the module is singleton or cloneable
7. #DQMH-655 Call Arrange VI Window code (for panel and diagram) on newly scripted event VIs
8. #DQMH-611 Updated scripting code that creates the tester button to set the proper justification on the label text of the created button’s terminal, to support users who have their control terminal labels configured to be on the side of the terminal instead of on the top
9. #DQMH-607 Updated new event scripting code to account for other event references (and clusters of references) wired to the Register for Events node in the DQMH Main VI that may be wired ahead of the module’s own request events cluster
10. #DQMH-588 Made sure VIs created by the DQMH scripting tools are always set to have automatic error handling disabled
11. #DQMH-602 Fixed string matching on Event Structure frame names to properly handle module names that may contain special characters that Match Regular Expression interprets differently. The new matching is just exact string matches
### DQMH Validation Tool
1. #DQMH-605 Added the ability to validate all modules in the project. We also added a VI (Validate DQMH Module (Headless).vi) that you can pass in a project path and it will programmatically validate all modules in the project and return a result. This VI could be used as part of a CI/CD process to validate DQMH modules
2. #DQMH-604 Added a button to the Validation Results UI that allows you to analyze another module after you are done viewing the results for the current module. We also added a button to the ‘all tests passed’ dialog to allow you to validate another module as well
3. #DQMH-615 If there is no menu launch project when you launch the Validate DQMH Module tool, we’ll prompt the user to browse to a project and use the one they browsed to
4. #DQMH-654 Always make sure the results list box in the Validation Results UI is scrolled to the top when first shown
New Validate/Fix DQMH Module Tools for:
5. #DQMH-616 Start Module.vi using Run VI method
6. #DQMH-646 New Close Master Reference functionality. Added new error code for trying to run cloneable as singleton when the master reference hasn’t been closed. Updated validate and fixer for Async Call By Ref to update Start Module.vi to generate the new error code
7. #DQMH-589 Identifying/updating Request and Wait for Reply VIs that don’t return an error on timeout
8. #DQMH-642 New notifier approach for shutting down the event references in Close Module.vi after the last instance stops
9. #DQMH-585 Adding a case structure around Stop Module.vi call in the singleton tester
10. #DQMH-597 Updating Wait on Stop Sync.vi to use the improved approach with the event structure
11. #DQMH-638 Wiring up Module Name–constant.vi to the ‘Additional Information’ input of the Error Reported.vi in the “Error” message of the MHL
12. #DQMH-600 Adding Release Queue VI in Error case issue
13. #DQMH-588 Detecting VIs with auto error handling enabled, and disable that setting for those VIs
### DQMH Thermal Chamber Examples
1. Ran validation tools to ensure DMQH Modules in the examples match DQMH 5.0
2. #DQMH-597 Updated Wait on Stop Sync.vi in the cloneable module of the shipping examples to use the improved approach that makes it only wait until the current instance stops
3. #DQMH-547 Updated X-axis label in main tester VI chart from ‘Time’ to ‘Received Broadcast Count’ to more accurately reflect the chart contents
### DQMH CML Project Template
1. Ran validation tools to ensure DMQH Modules in this project match DQMH 5.0
2. #DQMH-590 Rearranged files for DQMH Project Template and CML Project Template so that CML Project Template has its own top-level folder. The Create Project dialog (and, it’s Recent Items’ functionality in the GSW) assumes that multiple project templates do not reside under a single top-level folder
### Help
1. Updated video link to Validating an Existing DQMH Module that shows the new features for DQMH 5.0 and how to validate an existing DQMH 4.2 project to match DQMH 5.0
2. Added section on What is New on DQMH
3. Added section on How to Learn DQMH
4. Clarified that the Application is implemented using a State Machine in the Getting Started section
5. Added DQMH as an alternative to XControls in the Use Cases section
6. Added clarification at the beginning of the Nomenclature section that it is a list of links to other sections in the document
7. Updated figures and description for DQMH Cloneable modules in the DQMH Singleton Module vs Cloneable Overview section in this document. Specifically added in blue the new sections of the Cloneable module and an explanation of what they are there for
8. Added note with some improvements developers can make to projects created from the CML DQMH Sample Project
9. Added to DQMH in LabVIEW Real Time that starting with DQMH 5.0 we do support both DQMH Singleton and Cloneable modules in Real Time
10. Added reference to How to Learn DQMH in the Related Information section
11. Changed this Change History section to start with the latest version at the top of this section
12. Added section for Third Party Products
4.2.1.46 (Apr 09, 2019)
For DQMH Help go to Help>>Delacor>>DQMH Help....
Release notes for DQMH 4.2.1:
1. Make My Cloneable Module.lvlib:Start Module.vi be non-reentrant.
2. Add a comment to the diagram of Start Module.vi explaining why it needs to be non-reentrant.
3. Add a validate+fixer to make the Start Module.vi in a cloneable module be non-reentrant.
4. Update the validate+fixer for marking request VIs reentrant to ignore the Start Module VI.
5. Make the Start Module.vi for the cloneable module in the DQMH shipping example be non-reentrant.
4.2.0.45 (Feb 21, 2019)
Release notes can be vound at delacor.com/dqmh-4-2-release-notes/
The online version includes links to forum posts and blog posts relevant to the release notes.
For DQMH Help go to Help>>Delacor>>DQMH Help....
Release notes for DQMH 4.2
Top three new features:
1. DQMH Broadcast Events have a glyph on their icon
2. New DQMH Tools menu to create DQMH Module Templates
3. When creating a Request and Wait for Reply, there is an additional Arguments window for the reply arguments
Other
1. Updated documentation with new DQMH 4.2 features and updated some of the embedded videos. See the Change history section of the documentation for more details.
2. Moved the DQMH Project Template example to the Examples folder
DQMH Event Scripter 4.2.0.87
DQMH 4.2 New Features
1. New Tools>Delacor>DQMH>Module menu option to Create a DQMH Module Template
2. Added checkbox to Event creation wizard to automatically create a button on the API Tester
3. When creating a Request event or a Request and Wait for Reply event, there is an additional Reply Payload Arguments window
4. New Broadcast VIs now display an event glyph on the lower right corner of their icon
Validation Tools
1. Added a test and fixer for updating Broadcast VI icons to have the event glyph
2. Added new validate test and fixer for tagging Broadcast and Request VIs that are not tagged
3. Added extra suggestion to the validate module message for Request and Wait without the optional wait parameter.
Project Template 4.2.0.63
Upgraded DQMH modules to match DQMH 4.2:
1. Added event icon overlay to all broadcast VIs in DQMH project templates
2. Tag a request VI in the CML project template that wasn't properly tagged
Minor:
3. Fixed a couple of misspellings ("rendez vous" and "clonable") in our Project Template code.
4. Made sure the build spec version information for all the project templates start at version 1.0.0.1 and are set to auto increment
Shipping examples
Upgraded DQMH modules to match DQMH 4.2:
1. Added event icon overlay to all broadcast VIs in DQMH example
2. Tag all request and broadcast VIs in shipping example
DQMH Palette
1. Updated Enqueue Message VI to be marked as inline
4.1.0.42 (Oct 31, 2018)
Release notes can be found at http://delacor.com/dqmh-4-1-release-notes/
The online version includes links to forum posts and blog posts relevant to the release notes.
For DQMH Help go to Help>>Delacor>>DQMH Help…
Release notes for DQMH 4.1 patch via DQMH 4.1.0.42
* Fixed bug that caused the “Convert DQMH Event” menu option to not work when called via Zuehlke Project explorer for DQMH.
* Expedited DQMH Module renaming by removing the code to save dependencies, as a module rename should not have any effect on the module's Dependencies.
4.1.0.41 (Oct 17, 2018)
These release notes can be found at http://delacor.com/dqmh-4-1-release-notes/
The online version includes links to forum posts and blog posts relevant to the release notes.
For DQMH Help go to Help>>Delacor>>DQMH Help…
Major new features
1. Added new tool to convert “Request” Events to “Request and Wait for Reply” Events.
2. Added DQMH CML Sample Project (DQMH version of the NI QMH Continuous Measurement and Logging sample project).
3. All DQMH core VIs are now reentrant to improve the performance of DQMH applications.
4. NI has assigned error codes 403680 – 403719 to DQMH.
5. New “Round Trip” event behavior that incorporates Request and Wait for Reply + a Broadcast with the reply payload.
DQMH Palette
1. All DQMH core VIs are now reentrant to improve the performance of DQMH applications.
Project Template
1. DQMH core VIs are now reentrant to improve the performance of DQMH applications.
2. Updated DQMH Project Template to include DQMH 4.1 changes.
3. Updated DQMH Project Template to have Do Something events use the same constructs as scripted events, to promote consistency in our code. This change included updating “Do Something and Wait for Reply” to have the optional “wait for reply” input.
4. Changes to “Remove Do Something” scripting code to account for the new Do Something approach in the project template.
5. Made VIs in the cloneable library to be reentrant, except for:
* Destroy Sync Refnums.vi
* Get Sync Refnums.vi
6. Updated documentation pages to include new Help topics.
7. Added New DQMH CML Sample Project Template.
DQMH Scripter
1. New “Round Trip” event behavior that incorporates Request and Wait for Reply + a Broadcast with the reply payload.
2. New “Convert DQMH Event” tool to convert a “Request” to a “Request and Wait for Reply”.
3. More intuitive organization of Tools>Delacor>DQMH menu.
4. Miscellaneous bug fixes and usability improvements.
5. Allowed for a non-empty destination folder for the new module, as long as it doesn’t contain any non-LabVIEW files. This is to support the case where the folder may already have some (non-LabVIEW) SCC files before the module is saved into it.
6. Fixed bug where the Validate Results UI close window did not work as expected.
7. Changed the new event VI scripting tools to ensure the controls on the panel of the event VIs are exactly the same as they were defined in the arguments window. This means captions, ranges and other control properties are part of the input on the event VI. This means that no controls in the Arguments Window can have duplicate labels and no controls in the Arguments Window can use the following labels: Module ID, error in (no error), error out, timed out?
New Validate/Fix DQMH Module Tools for:
1. Improving reentrancy settings for existing DQMH modules.
2. Replacing old DQMH Module error codes in the 500x range with new DQMH Module errors. NI has assigned error codes 403680 – 403719 to DQMH.
3. Validating if Request and Wait for Reply events have the new “wait” input parameter.
4. Updated “Find Tester” test to check if a found tester is also present in the project. If not, returns a failure.
DQMH Thermal Chamber Examples
1. Updated DQMH shipping examples to DQMH 4.1 design.
2. TestStand: Fixed bug where sequence files would fail due to a change in output name for Find TestReport Directory.vi.
3. Recreated the Request and Wait for Status.vi and Update Chamber Status.vi into Request Chamber Status.vi which is part of a round trip that is linked to Chamber Status Updated.vi. Updated the code to broadcast the reply when the request is called as a request and wait for a reply. This follows DQMH best practices. If several modules are registered to listen to broadcasts and only one module sends a request and wait for a reply, the others will know the reply via the broadcast. This is particularly useful when calling DQMH API in TestStand and using the DQMH API as a sniffer.
4. Recreated old round trip events to no longer be linked. Instead, the request and broadcast have their own argument. This affected Update Set Point.vi, Set Point Updated.vi, Update Ramp Rate.vi, Ramp Rate Updated.vi, Update Heater State.vi, Heater State Updated.vi, Update DUT Status.vi, and DUT Status Updated.vi.
5. Created a Launch Module from TestStand.vi that calls Start Module and Synchronize Module Events with a clear comment that TestStand does not register for the broadcast events. Having this Launch Module from TestStand.vi means that every time the developer creates a new DQMH event, they don’t have to go relink the Start Module.vi because the Broadcast cluster changed and thus the Start Module.vi connector pane changed.
Help
1. Updated Change History section in help documentation.
2. Added a new section for the new DQMH CML Sample Project to the Shipping Examples and Integration with TestStand section.
3. Added a new section for the new feature Converting an Existing DQMH Event.
4. Updated Round Trip behavior description in the Creating a New DQMH Event section.
5. Added a new section for Integrating DQMH Unit Tests with InstaCoverage.
6. Replaced the XML contents of the Metadata in the Adding a New DQMH Module from a Custom Template with an image of the code and indications of where to find the example file to copy its contents from there. Some developers reported that copying the code directly from this document would result in errors.
7. Updated new menu organization going from having all the tools within the Delacor>>DQMH>> menu to having four menus: Delacor>>DQMH>>Event, Delacor>>DQMH>>Module, Delacor>>DQMH>>Real-Time Tools, and Delacor>>DQMH>>Testing Tools
8. Updated menu images with new menu organization at Modifying this Template, DQMH in LabVIEW Real Time, DQMH API Tester for RT.
4.0.0.30 (Jun 22, 2018)
#DQMH-502 Update 'Check if OK to Proceed.vi' to allow for a non-empty
destination folder for the new module, as long as it doesn't contain any non-
LabVIEW files. This is to support the case where the folder may already have
some (non-LabVIEW) SCC files before the module is saved into it.
4.0.0.28 (Apr 19, 2018)
These release notes can be found at http://delacor.com/dqmh-4-0-release-notes/
The online version includes links to forum posts and blog posts relevant to the release notes.
For DQMH Help go to Help>>Delacor>>DQMH Help…
Major new features:
1. Added tool to create a DQMH API Tester for Cloneable DQMH Modules running on a LabVIEW RT Target.
2. Added tool to create a New Unit Test for existing events
3. Added #DQMH_HowTo bookmarks to Main VIs, API Testers and shipping examples with How-To information, including how the different events were created, and links to youtube videos
4. New Validate DQMH Tools to upgrade existing DQMH modules to DQMH 4.0
Project Template
1. Modified the template VIs to not have the Update Display status and instead call the Status updated broadcast.
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.
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 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.
7. Removed Confirm Quit message
8. Updated both testers to use the 'init' parameter of the Module Did Init broadcast to add either a 'succeeded' or 'failed' message to the status display
DQMH Scripter
1. Added scripting support for RT API Tester for cloneable modules
2. New DQMH Real-Time Tools>>Creat 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 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.
14. 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.
15. Fixed a "bug" with scripting where a VI was being erroneously identified as the tester VI for a module.
16. Added pre-flight check for New Event scripting to pop up a dialog if the Arguments Window has a control named 'Module ID' in it, since the DQMH scripting tools use that as a reserved control name for scripting operations.
17. Updated 'Remove Event' code to look for the removed event's MHL frame name in quotes when looking for the frame to drop the code review todo comment inside.
18. Resized the result string indicator in the Validate Module results UI so it doesn't overlap the Fix Issue button.
19. Added code to Rename Module scripting that updates VI descriptions to only update the following situations: 1. [Module Name] at the beginning of the description 2. [Module Name] in between space characters 3. [Module Name].lvlib
20. Updated 'module did init' event frame in API testers to use the 'init' event parameter to change the status message display based on its value: TRUE: append ' initialization succeeded.' to the info parameter; FALSE: append ' initialization failed.' to the info parameter.
21. Fixed New Event scripting to be able to handle the situation where the user has a child class of the DQMH Queue in his Main VI so that event structure scripting works correctly
22. 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. This also required changes to the scripting code to account for the fact that the event structure will sometimes have a queue class wire going through the frame, and sometimes it won't.
23. Updated popup dialog message when specifying an event name that conflicts with an existing VI in the library to make it more clear that there is a more general filename conflict, as opposed to an event name conflict.
24. Changed recursive file list to top-level folder list when checking to see if a proposed event name is valid. This way if there is a lower level folder for a class, it can have VIs with the same name as the Request or Broadcast VIs
25. Made Remove Event, Rename Event, and Rename Module dialogs modal.
26. Improved performance of New Module and Rename Event tools.
27. Added the ability for the Create New DQMH Module tool to reference template modules by absolute path.
28. Whenever the user enters a string for the event name or the broadcast name in a round trip, trim whitespace at the time the value is committed
29. Fixed module list ring in all DQMH scripting tools to not list duplicate module entries when the same module appears under multiple targets in the project
30. Creating a Request and Wait for Reply event places the event parameter control terminals on the top-level diagram in the fire event VI
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 tester and fixer for improving error handling in Handle Exit.vi
5. Added Validate test for message strings being wired in to DQMH Enqueue Message that do not have corresponding frames in the MHL case structure. When reporting, enclose result strings in quotes so bad message strings with preceding or trailing whitespace can be more easily identified. Added a new validate tester for finding string constants in the DQMH Main VI containing invalid message names (such as empty string).
6. Fixed bug in 'Sending Nonexistent Messages' Validate Module tester that was getting in an infinite loop when the DQMH Enqueue Message (poly).vi was inside a structure and its 'message' input was being sourced by a structure tunnel. (Please Note that the DQMH Enqueue Message (poly).vi does have an array messages implementation).
7. Added a new validate tester for finding Register for Events node with unwired error output in DQMH Main VI
8. Added a validate module tester to detect Reply Payload typedefs that do not contain error clusters
9. Updated progress dialog of Validate Module tool to display the name of the current test being run, not only to help users see progress, but also help Delacor know whenever the Validation tool hangs, which test was running when it hung.
10. Added a new validate tester and fixer for handling multiple VIs in a module tagged as a testers, RT testers, or main VIs
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. TestStand: Edited each sequence file to have a specific sequence model. None for the Thermal Chamber sequence, since it does not have a unit under test. Sequence Model for the sequence with a single unit under test. Batch model for the sequence with multiple units under test. This approach respects the current station options configurations and does not change them. Updated the welcome dialog and notes in the sequence files to reflect these changes.
9. TestStand: Deleted steps that were marked as skip, they were no longer used.
10. TestStand: Fixed spelling error on subsequence name.
11. TestStand: Configure the number of sockets to 2 for the Batch sequence instead of using what is currently on the station.
12. TestStand: Strengthened the logic when searching for the Delacor examples path to ensure it only searches for configured paths and not a TestStand autogenerated paths.
13. LabVIEW: Added Check Execution Status Case to the MHL. Added case Stop DQMH Modules.
14. LabVIEW: Updated the exit case to include the Close Termination Monitor.vi
15. LabVIEW: Thermal Chamber Controller DQMH Status Updated.vi did not share the same Library header on its icon as ll the rest of the VIs in this library
Help
1. Updated Change History section in help documentation
2. Added section to the documentation that talks about creation of DQMH API Tester for LabVIEW Real Time
3. Added section for DQMH for RT
4. Added section for creating DQMH Unit Tests
5. Added information on how to use absolute paths instead of relative paths when Adding a New DQMH Module from a Custom Template
6. Added embedded videos with real life examples of applications implemented using DQMH in the Use Cases section
7. Updated TestStand examples video in section TestStand Examples
8. Added new examples video in section LabVIEW Examples
9. Moved DQMH Help button over one pixel to make it flush with right border
3.1.0.18 (Jan 24, 2017)
http://delacor.com/dqmh-3-1-release-notes/
Project Template
1. Added an Open.FP call in the Initialize Panel state to show the panel of the main application VI, along with a comment explaining that this is necessary in case external code is launching this VI programmatically. This would happen, for example, when launching the top level application from a splash screen.
DQMH Scripter
1. Fixed bug in scripting code that was incorrectly parsing project items and identifying a VI (added by the developer) with a file name that started with "Broadcasts" as the "Broadcasts" folder in the project.
DQMH Thermal Chamber Examples
1. Previous versions of the examples were inserting the Delacor examples directory at the bottom of the Search Directories every time the sequence was loaded. This version removes any Delacor Examples duplicate directories (even if they are from a different LabVIEW version) and ensures the Delacor Examples directory is only inserted once at the end of the Search Directories in TestStand.
2. All DQMH modules in example project pass the Delacor DQMH Validate test.
3. Added Test TestStand Manager DQMH API.vi to project with an explanation of why this tester is not needed.
4. DQMH Toolkit package forces mass compile on DQMH examples, too (Previously, it was only doing it for Project Template and Scripting VIs).
Other
1. Included a DQMH Template Example with instructions to add this to the Module Type options for the Tools>Delacor>Add New DQMH Module... menu option.
2. Updated Documentation.
3.1.0.15 (Jan 23, 2017)
http://delacor.com/dqmh-3-1-release-notes/
Project Template
1. Added an Open.FP call in the Initialize Panel state to show the panel of the main application VI, along with a comment explaining that this is necessary in case external code is launching this VI programmatically. This would happen, for example, when launching the top level application from a splash screen.
DQMH Scripter
1. Fixed bug in scripting code that was incorrectly parsing project items and identifying a VI (added by the developer) with a file name that started with "Broadcasts" as the "Broadcasts" folder in the project.
DQMH Thermal Chamber Examples
1. Previous versions of the examples were inserting the Delacor examples directory at the bottom of the Search Directories every time the sequence was loaded. This version removes any Delacor Examples duplicate directories (even if they are from a different LabVIEW version) and ensures the Delacor Examples directory is only inserted once at the end of the Search Directories in TestStand.
2. All DQMH modules in example project pass the Delacor DQMH Validate test.
3. Added Test TestStand Manager DQMH API.vi to project with an explanation of why this tester is not needed.
4. DQMH Toolkit package forces mass compile on DQMH examples, too (Previously, it was only doing it for Project Template and Scripting VIs).
3.1.0.12 (Jan 20, 2017)
http://delacor.com/dqmh-3-1-release-notes/
Project Template
1. Added an Open.FP call in the Initialize Panel state to show the panel of the main application VI, along with a comment explaining that this is necessary in case external code is launching this VI programmatically. This would happen, for example, when launching the top level application from a splash screen.
DQMH Scripter
1. Fixed bug in scripting code that was incorrectly parsing project items and identifying a VI (added by the developer) with a file name that started with "Broadcasts" as the "Broadcasts" folder in the project.
DQMH Thermal Chamber Examples
1. Previous versions of the examples were inserting the Delacor examples directory at the bottom of the Search Directories every time the sequence was loaded. This version removes any Delacor Examples duplicate directories (even if they are from a different LabVIEW version) and ensures the Delacor Examples directory is only inserted once at the end of the Search Directories in TestStand.
2. All DQMH modules in example project pass the Delacor DQMH Validate test.
3. Added Test TestStand Manager DQMH API.vi to project with an explanation of why this tester is not needed.
4. DQMH Toolkit package forces mass compile on DQMH examples, too (Previously, it was only doing it for Project Template and Scripting VIs).
3.0.0.11 (Dec 05, 2016)
http://delacor.com/dqmh-3-0-release-notes/
Major:
Project Template:
1. Added 'error' cluster to reply payload in 'Do Something Else and Wait for Reply' request in both modules in project template.
2. Updated Do Something and Wait for Reply message to return an error as part of the reply argument if the 'Value' is negative. This demonstrates the use of the 'error' value in the reply argument.
3. Added the ability for a cloneable module to run as a singleton.
* This required to update the DQMH Palette to update the context help for “Module ID” properties of the Cloneable Admin class to mention the special meaning of a Clone I of “0”when a cloneable module is running as a singleton.
DQMH Scripter:
1. Added support for creating new DQMH modules from templates other than the basic singleton and cloneable templates. Developers can provide their own DQMH templates to their [LabVIEW Data] folder. This will cause the "Add New DQMH Module" utility to show their templates.
2. Added support in scripting code to create new Request and Wait for Reply messages with the 'error' parameter in addition to the 'Boolean (replace me)' default parameter. We found that we needed this the majority of the time and it is better to automate its creation than expect developers to implement it based on DQMH best practices. This change also includes the scripting of a Merge Errors to help users remember to include any errors generated by their own code in the MHL error stream.
3. Added a ‘Rename DQMH Event’ utility for renaming existing DQMH events.
4. Automatically configure event structures in the Main VI and tester VI to handle newly scripted events (LabVIEW 2016 and later). The subdiagram labels of new request EHL and MHL frames are also populated with descriptive text.
5. Added Help buttons to all the dialogs launched from the Tools > Delacor > DQMH menu.
New Features from Delacor Toolkits group at ni.com:
DQMH Scripter:
1. "Create New DQMH Event" utility now shows a dialog when the developer tries to create a new event but the arguments window is empty. Ask if they want to proceed with an unused Boolean as the only argument in the cluster. Also provides a 'do not show this again' checkbox in the dialog.
2. If any DQMH scripting tool is launched from the menu of a VI, that VI's project will be considered the active project for the scripting tool. The previous behavior was that the last active project (i.e. the last project window that was clicked on) would be considered the active project for the scripting tool, regardless of which VI's menu bar the scripting tool was launched from.
3. A ‘to do’ comment is added to the MHL case corresponding to a removed DQMH event, suggesting that this diagram could potentially be removed if it is no longer used.
Minor New Features:
Updated documentation to include new features. Changed documentation format and included embedded videos.
Project Template:
1. Changed the error handling in both testers to always run the Stop Module.vi after the event loop, even if an error occurs.
2. Added argument clusters to Show Panel and Hide Panel requests to make them consistent with the rest of the event arguments.
3. Added code to 'Show Diagram' messages in singleton and cloneable modules to not show the diagram if the main VI is password-protected and the password is not in the cache.
4. Clear errors before ‘Unset Busy.vi’ calls in the Application Main VI.
5. Add local variables to Singleton Tester VI and Application Main VI to update ‘module running’ LED for singleton module with the output of the Obtain Broadcast Events for Registration VI. Added similar local variables for the new ‘module already running’ output of the Start Module VI.
6. Added ‘Subscribe to DQMH Newsletter’ menu option under Help > Delacor.
7. Added ‘Module Was Already Running?’ output from singleton’s Start Module VI.
8. Changed help format to use chm file when offline and html version of chm when internet access is detected.
9. Added help buttons to all productivity tools wizards.
10. Reply received LED in both testers was returning true when there was an error.
11. Set the front panel to go to origin when the DQMH module initializes.
12. Fixed a bug that was no longer detecting that an lvlib was a DQMH module. Added to the Validate DQMH Module documentation section a description of what makes the scripting tools recognize an lvlib as a DQMH module.
DQMH Palette:
1. Updated the DQMH Palette to update the context help for “Module ID” properties of the Cloneable Admin class to mention the special meaning of a Clone I of “0”when a cloneable module is running as a singleton.
Issues addressed:
Added force mass compile after installation when using VIPM 2016 (this was already present for VIPM 2014).
DQMH Scripter:
1. Added a Validate Module test and fixer for the 'Show Diagram' code that checks the password status of the main VI before showing its diagram.
2. Added a Validate Module test and fixer for improving the error handling in the tester VI to prevent an error condition from leaving the module main VI running in a “zombie” state.
3. Validate DQMH Module tool now pops up a dialog asking you to select a DQMH library from the active project (using the same mechanism used by the Create New Event dialog). It then uses the library reference in the proper application instances of the project to do the validating and the fixing. This should solve the issues we had related to the library being validated in the wrong app instance.
4. "Create New DQMH Event" utility now pops up a dialog if developer tries to specify the same name for the request and the broadcast for a Round Trip event. There is also additional validation code to make sure the specified event name (for all 4 event types) isn't the same as an event that already exists in the project.
5. The Validate Module 'fixer' for upgrading to DQMH 2.1 will now create the Get Module Main VI Information VI with the user's Tools > Options settings respected, like icon terminals, source only, auto error handling, etc.
DQMH Thermal Chamber Examples
Updated examples to DQMH 3.0:
1. Added arguments to Show Panel / Hide Panel requests.
2. Added “run as a singleton” functionality to cloneable DUT module, and used this functionality in the single DUT example.
3. Improved error handling in tester VIs when the main loop completes.
4. Updated “Show Diagram” message code.
5. Updated Stop Module code in TestStand Manager module.
2.1.0.4 (May 19, 2016)
http://delacor.com/dqmh-2-1-release-notes/
Major
Project Template
1. For singleton modules, when setting 'wait for module to stop' to TRUE on Stop Module.vi, wait until the execution status of the module main VI is 'idle' before returning. There is an optional 'timeout' input to Stop Module.vi to specify how long the user wants to wait.
DQMH Event Scripter
2. Added a Validate Module test to check for the obsolete 'Stop Module' approach that uses a rendezvous instead of checking the singleton module main VI execution state.
3. Fixed bug when removing "Do Something" events when creating DQMH modules in non-English versions of LabVIEW.
Shipping Examples
4. Updated Thermal Chamber Controller DQMH Module to 2.1
5. Added a wait to the loops in the three Temperature Chamber examples so the event queues are not flooded with status requests. This was an issue if the shipping examples were executed first and then the API tester was used as a sniffer.
6. Updated calls to Stop Module.vi to include the new timeout optional input.
Minor
Project Template
1. Added 'error out' local variable in "Error" message to update error indicator on panel when an Error message fires, to aid in debugging.
2. Added a 'code recommended' bookmark in the Start Module.vi to aid users in adding parameters to be passed into the Module's main VI when the module starts.
3. Moved the Singleton controls to the left of Application.lvlib:Main.vi and the Cloneable controls to the right.
DQMH Palette
5. Made the message typedef and the queue accessor VIs protected instead of private to provide more functionality to classes that override Message Queue.lvclass.
Documentation updates:
6. Changed version to 2.1.0.2
7. Published documentation at: delacor.com/dqmh-documentation. Updated images to reflect DQMH 2.1 version.
8. Added description of what "DQMH Module Main" refers to in the Nomenclature section.
9. Clarified the titles for the shipping examples and provided a link to skip TestStand sections if not using it.
10. Added links at the end of each section to go back to the Table of Contents.
2.0.0.5 (May 19, 2016)
Major:
Added "Rename DQMH Module" utility to Tools>>Delacor>>DQMH
Added ability for custom names for singleton and cloneable modules when creating a new DQMH project from the Create Project dialog.
Addressed possible race condition during Main.vi initialization. The module was not ready to receive requests until the Initialize Data and Initialize
Panel had been enqueued and the Queue was ready to receive other requests. Internally, we would encourage developers to not send any requests until the "Module Did init" broadcast would had been received. However once others started using the template, we saw that this was not enforceable and a race condition could happen if the developers sent a request before the module was ready. Also NI QMH Project Template did combine the three initialize messages into one to address a possible race condition there as well in LabVIEW 2015. The fix to DQMH modules consisted in:
1) Moved the Synchronize Caller Events.vi out of the Init.vi and into the Initialize case in the MHL (and into the Error outer case in Main.vi) for both Singleton and Cloneable modules.
2) Combined Initialize, Initialize Data and Initialize Panel into a single Initialize case.
3) Added support code to implement wait for module to stop functionality in Stop Module.vi. This required the creation of Handle Exit.vi that is called in the Exit case in the MHL. Moved Did Stop.vi into Close.vi to be called after the module had stopped. For the cloneable module, moved all the code that keeps the first clone alive to be done inside the Close.vi.
Minor:
Added code that disables the rename and 'do something' options in the 2nd page of the DQMH project template dialog if the required Event Scripter package is not installed.
Fixed tabbing behavior in 2nd page of DQMH project template dialog.
Added "Module Name" to the Error Reported Argument--cluster.ctl for both Singleton and Cloneable modules.
Fixed Broadcast Events--cluster.ctl that had the Error Reported event referencing a non type def argument.
Removed Library property call from Application Name--constant.vi (this property is not available in exe).
Added changing the Window Title for the Application Main to use the Application Name--constant.vi to be consistent with the DQMH modules.
Updated the documentation for the Module Name--constant and the Application Name--constant VIs to not include that the VIs return the library name.
Put the show block diagram property inside a conditional diagram disable to indicate that only works in development mode.
Changed the order of the merge error input terminals in all Request/Broadcast Events VI wrappers that could lead to missing the original error.
Made Application.lvlib:Main.vi public.
Renamed Application.lvlib support virtual folder to Private and made it private.
Disabled automatic error handling from Show Diagram.
Cleaned up diagrams, few cosmetic changes to block diagrams.
Updated shipping examples to use new version.
Documentation updates:
Changed version to 2.0.0.0
Added version history to the top of the documentation describing changes.
Added link from change history to the new section.
Added documentation information regarding new tool to rename existing DQMH Modules. Added item to Table of Contents as well.
Replaced the video link in the documentation with http://bit.ly/DelacorQMH to point to the YouTube playlist.
Corrected typos (we had several Singeltons instead of Singletons).
Made sure new images were listed as part of the project documentation.
1.0.0.2 (May 19, 2016)
Creating top level Delacor QMH that has all the other Delacor QMH packages as dependencies.
Adding post-install VI to mass compile Delacor files in LabVIEW 2015 and later.