DQMH Consortium Toolkits Feature Requests

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

Hi,

 

This might be a special use case, but maybe there are more applications for a cluster of event registration refnums for helper loops.

 

My use case involves DAQmx or IMAQdx events. These events get registered through a DAQmx or IMAQdx reference, like this:

JoGra_2-1704363872542.png

 

The register for events for the helper loop is happening before the loop and the task is started, which means that registering to the "Done" event of the task doesn't work if done like this:

JoGra_4-1704364222059.png

Because there is no valid task reference yet, so the event registration gives an error.

What works instead is the bundling of the "Module Request Events"-event registration refnum with a static event registration refnum of the task "Done" event. 

JoGra_5-1704364472523.png


Inside the helper loop, at a point where the task has been created, the event registration for "Done" event can be updated.

JoGra_6-1704364631172.png

 

This works very well and simplified my code, which before had another async VI which registered to the daqmx event and sent a broadcast to the helper loop. This is much nicer. 

 

The drawback is that the DQMH event scripting tool does not support the extra namespace ("Module Events") of the clustered event registration refnums. This results in that every time the Module Request Events get updated the assignment of events to in helper loops event handler gets broken and they need to assigned again manually.

JoGra_7-1704365226221.png


This happens when any kind of request is created. If the request is created for the helper loop this error appears:

JoGra_8-1704365328661.png

 

This is how my helper looks like after assigning the events again:
(using just a bundle instead of bundle by name for space reasons)

JoGra_9-1704365643845.png

 

 

Proposal:

 

Addition of check to request (and broadcast) creation, that when a helper loop exists and  the event registration refnum for the request events (and probably also the broadcast events) is bundled in a cluster with some other event registration refnum, the extra namespace (eg "Module Events") gets handled and the events can be created and assigned.

 

 

 

SAndreas

Let developer create own DQMH validation test which allows them to test company specific style and scripting.

 

At that point, it would although be great to store a test configuration. E.g. which tests should be executed and which severity a failing test hast. 

joerg.hampel

This feature request is adding to the already existing "Private Request" and "Helper Loop Creation" requests (or not?):

 

When working with helper loops in cloneable modules, it would be nice to have a way for sending messages from the MHL to the helper loop which doesn't need the module ID, and which doesn't interfere with other clones' helper loop timings. I'd still like this new mechanism to look and feel like the regular events, with all the scripting and other goodness.

 

Maybe instead of calling them private events, a better name would be "local" events (which would, of course, be set to private scope).

ChrisFarmerWIS

Please add a test to the Validate Module tool:

 

Find all while loops in the Main.vi of the specified module(s), and check if the DQMH Error Handler - Helper loop.vi is used to handle errors in each of the while loops, and flag it if not.  Ignore the default EHL and MHL in this check.

ChrisFarmerWIS

By default, in the MHL Error case, the "error out" local variable is written to.  But the error that is written is NOT the error that came into the MHL Error case!

 

Ozfarmboy_0-1649207744606.png

 

I propose the above be changed to this:

 

Ozfarmboy_1-1649207803027.png

By doing this, the actual error that was raised by the module will be copied to "error out"

 

Olivier-JOURDAN

When you update the DQMH version, you can have hundreds of failures to fix in your projects (not because everything is broken but just because, for example, a new feature requires updating a VI).

 

A fixer is available most of the time, and you just have to click the button to make the code change.

 

For me, the UX issue is that after you hit the fix button, you need to select the next failure with your mouse and then click on the fix button. I'm not too fond of this kind of mouse gymnastics.

 

My proposition: If the fix is successful, the next failure could be selected automatically.

 

The fixing process would be significantly improved.

Konan__

Please create an additional toolbar named "Delacor" that has at least 2 buttons: one to create a new module, one to create a new event.

 

It's too tedious to go everytime via menu Tools, Delacor, DQMH, bla bla

 

Clipboard01.jpg

 

In this picture you can see on the right the JKI tester toolbar, and also the NI Unit Test Framework toolbar.

 

thanks

 

 

Desruelle_luc

Greetings from France

be able to upgrade the module type, for example singleton type to cloneable type, would be a great feature.

menu -> DQMH -> Module -> updgrade

A+

Luc

Update module.png

SAndreas

As mentioned in DQMH Forum: VI Reentrance issue VIs which are required to be non-reentrant are not reported from the DQMH validation tool if they were changed (e.g. to shared clone)

 

Some of the important VIs which should be reported:

  • Obtain Broadcast Events.vi
  • Obtain Request Events.vi
  • Clone Registration AE.vi
  • Start Module (is already reported)
  • Basically all used FGV's

Steps to reproduce:

  1. Create Project with a new clonable module
  2. Change all non-reentrant VIs to shared clone
    SAndreas_0-1679303699390.png

     

  3. Run module validation and execute fix
    1. Start Module.vi will be updated and changed
  4. Rerun module validation
    1. No issues reported

1984

Problem: 

Currently the DQMH stock requests / broadcasts (eg: Stop module, Hide panel etc) are mixed with the user created requests / broadcasts so if one likes to check which requests, broadcasts etc are in the module he needs to open different subfolders and visually filter out the stock events. 

 

This is a readability issue which makes it significantly harder to quickly understand (or recall) what events are available for the given module.

 

Possible solution: 

Instead of mixing the stock DQMH events with the non-stock events create a virtual folder above all the virtual folders called "Module Specific" with subfolders like Requests, Broadcasts, Private and Controls and put everything the user create to there by default.

 

Big advantage of this of organizing the files this way would be that one could assume that whatever is module specific can be found in the these dedicated folders instead of spreaded somewhat randomly in the virtual folder structure of the module. I said somewhat randomly because the strucure as is currently is hard to read so developers try to make it more readable, everyone on his own way (eg: creating different folders, prefixing the user created events etc). So besides the increased readability of the module by applying this feature there is a very good chance that modules' structure will become more standardized across developers working at different companies.

 

 

Darren

I would like a right-click plugin where I could right-click a DQMH broadcast subVI and "Find Event Frames". This would search all VIs in my current project for event structures that are registered for the broadcast event fired by the subVI I clicked on, and show me a list of results that I could double-click and be shown the event frames one at a time. Or I guess it could just open all the diagrams for me, since I probably want to walk through all of them anyway.

 

The operation could take a while, but would be worth it. I often find myself wondering where all the places are in my code that are registered for a particular broadcast.

 

(idea originally posted here)

Darren

When I create a new Broadcast, here's what the new frame in the API Tester looks like:

 

1.png

 

I almost always end up adding the following code by hand (usually by copying it from another frame):

 

2.png

 

It seems to me that most of this code could be scripted. Maybe everything except the value of the first format string?

 

(idea originally posted here)

TiTou

TiTou_0-1656071692031.png

JKI State machine has a great tool that comes with it, when you right clic on a BD element of a VI that contains a JKI State Machine, the option menu has the item "JKI State Machine explorer", fantastic tool to facilitate browsing the numerous frames of the case and of the event structure.

TiTou_1-1656071962463.png

 



A similar tool for the DQMH module would be a great help!

Petru_Tarabuta

Currently on the block diagram of VIs that implement Request events, the Bundle By Name node and associated typedef cluster constant are located outside of the case structure, even though their output is used only by the False case of the case structure (and not by the True case). The screenshot below shows the unmodified "Do Somthing.vi" VI.

Petru_Tarabuta_0-1701638967912.png

 

The code would be slightly cleaner if the BBN and typedef constant were moved inside the False case of the event structure. This follows the clean code rule that if an action is relevant only to one case of a case structure, then it should be located inside that case. The code would then look like below.

Petru_Tarabuta_1-1701639034664.png

 

Thanks!

Olivier-JOURDAN

Original idea from Matthias Baudot in https://anchor.fm/wired-in-software/episodes/Episode-6---Matthias-Baudot-from-Studio-Bods-emtpti

 

When you have lots of modules (20+), initializing module selector control tends to take seconds that can be annoying when you need to use the scripting tools.

 

Finding a way to remove this init time would greatly improve the user experience in large application development.

CyGa

I sometimes need to launch and stop a tester programmatically (mainly from TS).

 

I can launch the tester programmatically using VI server, but I need to do this wrapper for each tester.

 

To stop a tester, there is no way to actually do it programmatically.

The only action that stop a tester is manual one (closing the tester's window).

 

I would like a Tester API (basically 2 VIs) created by default in every module that would allow me to launch and stop a tester programmatically.

danny_t

 

I dislike using Clone IDs, Whenever I have used Clones in real life application, I always start by editing the Start Module VI and adding in a Clone name input. As I do this for all my clones the input name tends to be specific like 'Bay Name', or 'PSU Name' but a generic 'Clone Name' would be good.

 

I then pass that Clone Name into my MHL Data cluster in 'Initialize', each clone now knows it own name this allows things like

  • A Request to all Clones to get the instance for a name, so calling code can work in terms of Set Voltage(UUT_PSU), Set Voltage(RIG_PSU) rather than Set Voltage(45568) Set Voltage(40056), making a clone manager more code easier to read. -- I know this could be done in a clone manger with a Map or table, but I like the idea of the Clone know its own name.
  • As the clone knows it own name, because I gave it its name, this means clone instance configuration is easier, I have can have a single configuration ini file with each clone name as separate sections or I can have each clone read from its own ini file simple based on its own name.
  • Modules other than the clone manager can if needed talk to the correct clone using the name they do not need to know about the instance.

Thinking about this it would be, to my mind, a great feature addition to DQMH is by default there was a optional for providing a clone name at startup that was accessible as a Mod Admin property alongside the Module ID.

 

 

Olivier-JOURDAN

When creating new module, I'd like a way to add a text explaining its responsibility. It will reinforce good conception practices and allow Antidoc to retrieve information to generate a valuable documentation.

 

Note: IMO, this content should be added to the module lvlib description.

 

If this field could optionally mandatory to create the module, I would find this great 🙂

ChrisFarmerWIS

The below image comes from the Error Reported broadcast event case in the API Tester (as found in the default Singleton or Cloneable DQMH module templates):

 

Ozfarmboy_1-1627951799202.png

 

This produces strings that look like this:

 

Ozfarmboy_2-1627952460935.png

 

This could be improved by adding the "message" component of the error, by using the Simple Error Handler.vi.  Using the message makes the error report more descriptive, and doesn't rely on the user having to use "Explain Error" to review what the error code's could possibly be related to.

 

Ozfarmboy_0-1627951719991.png

 

This produces strings that look like this:

 

 Ozfarmboy_3-1627952632399.png

 

Observe that the error message is now present in the text.

Thoric

Reviewing somebody's DQMH code I noticed an error generated in the exit case where they had cleanup code (1) was not captured by the Tester. This is purely because the exit case causes the MHL to terminate (2), so the normal error handling strategy (3) doesn't work (enqueuing another job called Error). Can I propose, unless there's a better technique, that adding the "Error Report" broadcast at the end of the Exit case (4) is a simple way to ensure any errors generated here get reported.

 

Add Error Broadcast in MHL Exit CaseAdd Error Broadcast in MHL Exit Case