From 04:00 PM CDT – 08:00 PM CDT (09:00 PM UTC – 01:00 AM UTC) Tuesday, April 16, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

DQMH Consortium Toolkits Discussions

cancel
Showing results for 
Search instead for 
Did you mean: 

What made DQMH click for you?

Hello, LabVIEW developers who use DQMH (need to come with a term... DQMHers?),

 

Last month I taught at the NI office in the UK. One of the attendees, Douglas, has been looking into DQMH for a while. He told me that what finally made it click was this presentation http://bit.ly/fabniweek2015_2 and its related videos. What he said was "What made it click. Was when you had more than one module running in the app. You explained how to do it in the application.

All the previous videos you'd explain other aspects of how to do this and that. But never building an app with more than one module."

 

By the way, another good video of someone building an application with more than one module would be Darren's presentation at NI week last year where he built a full application from 0 to executable in less than an hour... live! http://bit.ly/rapidDQMH

 

Others have told me that they have a hard time figuring out where to start or get misled by opening the project template, going to the Main Application, seeing a state machine and assuming that DQMH is just another State Machine. By the way, the purpose of the Main application of that project is to show that the calling code does not have to be a DQMH module.

 

This led me to this post. I would like to learn from you about what made DQMH click for you? Was there a specific presentation, video, part of the documentation, just jumping and doing a project, a blog post, a post in this forum,...

 

I hope you share with us what did the trick. This way, when others stumble into this post, they might have an easier time figuring out where to start. We could also include the top "DQMH Starting Points" as a blog post or in the DQMH documentation.

 

Thanks in advance and happy wiring,

Fab

 

For an opportunity to learn from experienced developers / entrepeneurs (Steve, Joerg, and Brian amongst them):
Check out DSH Pragmatic Software Development Workshop!

DQMH Lead Architect * DQMH Trusted Advisor * Certified LabVIEW Architect * Certified LabVIEW Embedded Developer * Certified Professional Instructor * LabVIEW Champion * Code Janitor

Have you been nice to future you?
Message 1 of 20
(11,962 Views)

When did DQMH ‘Click’ for me?

 

Honestly, not sure there was just one click. I will start with a bit of background.

 

I learned about and started to use Actor framework around 2011/2012 for a project at a company I was working for at the time. It was a new approach at the time and it seemed to work well for my needs, however for a beginning developer it was bit too complex. In this instance that was ok because it was just me.

 

I changed to a new company in 2013, here I had to program to the customers comprehension, it was while I was working for this new job that Fab told me about DQMH, try it she said, give me your feedback. Unfortunately I was working with a customer that had something in place and was targeting a different approach. One of my coworkers at the company I was employed at had also created a framework. We had talked about it a few times and it was his go to, as it should be since he created it.

 

In 2017, I started at a new company, one of my tasks was to find a useful architecture for all levels. I remembered my conversation with Fab and DQMH. I watched a couple videos she had done. I installed the DQMH Package and I started to check it out. I did what everyone does, start with the template. I messed around with that a bit, saw the state machine in the example and realized that was one example of how you could create a main.vi for it

 

My first module was a spin on a datalogger class I had created, by using a DQMH Clone, I could do more with my already useful class. My second module was based off of a simple DAQmx Module I had created, now this is where I found more flexibility, I made a DQMH Clone to handle my DAQmx Tasks, I had a design that used XML for the information to configure a DAQ task and utilized that, Great now I have cloned tasks, I added a Module I call my DAQ Processor, I send any DAQ Writes or reads to the Processor, it determines which task it is and executes the function. (That’s 3 clicks)

 

Wow, this is powerful, yet I can have some beginners look and understand the architecture, they don’t even need to see my code, they can grab the module and put it anywhere.  (Click #4)

 

I am always a proponent of code reuse and while I have always wanted to build my own architecture, I have found that DQMH works for my needs and currently I have no reason to reinvent the wheel.

 

So I had several clicks, some came after using it and I still find other ways and more efficient ways to use the first 2 clone modules I have created. I presented to our local user group last year on DQMH, then did a short presentation on an idea recently, it was a different spin on a multi UI design uses DQMH, but that is still in the works

Jeff D.

Certified Architect LabVIEW Champion DQMH Framework

Message 2 of 20
(11,905 Views)

I was hoping we would get more answers to this question. I wanted to get ideas on how to better structure the DQMH Documentation. 

 

I added the videos Douglas suggested to the documentation and we added a couple of new videos. More details on the DQMH 4.0 Documentation Change History

 

If you come across other videos, posts, presentations, etc that help you, please add them to this discussion so others can benefit too.

 

Happy wiring,

Fab

For an opportunity to learn from experienced developers / entrepeneurs (Steve, Joerg, and Brian amongst them):
Check out DSH Pragmatic Software Development Workshop!

DQMH Lead Architect * DQMH Trusted Advisor * Certified LabVIEW Architect * Certified LabVIEW Embedded Developer * Certified Professional Instructor * LabVIEW Champion * Code Janitor

Have you been nice to future you?
Message 3 of 20
(11,613 Views)

Just saw the new documentation.. I like it.

 

My take is that DQMH makes you go out from the traditional state machine thinking into a modular base REST api style that lets you breakout the code more easily.

 

For documentation, I would like to see more examples on how to approach and structure my application to use it with DQMH. Like for example If i am going to use like 3 insturments. do i make a module for each instrument or do i make a module for the 3 instruments?

 

looks like in the last post  you did that hehe https://delacor.com/tips-and-tricks-for-a-successful-dqmh-based-project/

 

 

 

 

 

 

 

CLAD, CTD
Message 4 of 20
(11,485 Views)

@buton wrote:

Like for example If i am going to use like 3 instruments. do i make a module for each instrument or do i make a module for the 3 instruments?


I have done this. For me, I created a DQMH Module for the Instrument type. then in the DQMH Module, I would have a Class for the instrument base then a child class for each instrument base on the function. So far this has worked well, However, I am now working on other systems where I have 2 or 3 of the same equipment in one system so I will more then likely do the same but the DQMH will be a Cloneable. (which I probably should have done for all of them, but I will forge forward with what I have done already and might change them in the future. 

 

I have found that from the stand point of code reuse smaller dedicated modules work for me

 

 

Jeff D.

Certified Architect LabVIEW Champion DQMH Framework

Message 5 of 20
(11,433 Views)

I was clicked:

Chris's walkingwires post HAL in your (D)QMH

I expanded it to 4 PSs (3 the same BK9115), 2 Loads, 2 DAQmx, 2 Telnet.

3 cloneable (PS and Load share the same class) modules.

The problem was, I do not know how to feed in TestStand different VISA resources to PS childs.

So, I created one child for every Instrument with defaulted right VISA resource in child class typedef.

Only DQMH allowed me to successfully finish test.

Thanks Delacor,

Sergiy

 

Message 6 of 20
(11,426 Views)

That HAL post is at our Delacor blog:

 

https://delacor.com/hal-in-your-dqmh-2/

For an opportunity to learn from experienced developers / entrepeneurs (Steve, Joerg, and Brian amongst them):
Check out DSH Pragmatic Software Development Workshop!

DQMH Lead Architect * DQMH Trusted Advisor * Certified LabVIEW Architect * Certified LabVIEW Embedded Developer * Certified Professional Instructor * LabVIEW Champion * Code Janitor

Have you been nice to future you?
Message 7 of 20
(11,423 Views)
For me, DQMH "clicked" the moment I read about it on the LabVIEW Tools Network. 
 
In 2016, we were just coming off our largest project to date here at Wired-in.  I had created an architecture for this application that was ok, but became difficult when we needed to expand functionality. Things like:
  • The customer requested things that meant we needed better synchronization between concurrent modules
  • We needed to upgrade our system to test up to 4 units in parallel
  • We had created our own module to manage a cDAQ unit that was uniquely designed for the project, but the block diagram was huge, and difficult to read/maintain
 
When we had an opportunity to do a new and similar project, we realized that we needed to improve our framework.  We did our research, and settled on DQMH.
 
Reading the DQMH write-up on the Tools Network seemed to answer the very issues I listed above. And this was the moment that DQMH "clicked" for me. It sounded too good to be true (but thankfully proven to be true!).
 
One of my concerns with many tools available on the Tools Network, is that a lot of the tools can be lacking a fair bit in documentation and/or support.  After watching several Youtube videos, reading a blog article or two, and noticing how active Delacor were in supporting their product, we moved ahead with confidence.  And now having met Fabiola personally, we know that she is fully committed to the DQMH product. Some recent DQMH features have come as a result of our unique requirements, so this was a second "click" moment for me. This gives us a lot of assurance that we can rely on it for years to come.
Christopher Farmer

Certified LabVIEW Architect and LabVIEW Champion
DQMH Trusted Advisor
https://wiredinsoftware.com.au

Message 8 of 20
(10,931 Views)

It clicked when I started working on a project that was based on the NI QMH, the code was clean and working well, it had 7 "modules" and the my first task was to add a new module.

I had already used the NI QMH as a starting point for a demo and I knew the limits in terms of scalability when adding new modules.

Using DQMH to build my new module felt like the best option, I considered AF (I took NI AOD course a year ago) but really what triggered my choice was the amount of scripting tools that come with DQMH and the outstanding documentation.

 

Also, when I was working at Qualimatest, there was an internal module based framework that had some similarities with DQMH, in particular the API Tester, and when you are used to have an API Tester for your modules you don't want to lose that!


We have two ears and one mouth so that we can listen twice as much as we speak.

Epictetus

Antoine Chalons

Message 9 of 20
(10,027 Views)

Hey Fab,

 

For me it was a specific project that just happened to fit the DQMH "idea" exactly.

 

I needed to have 2 configuration windows that each created an ini file linked to a specific test, these needed to be able to be used at all times, for configuring the next test.

 

Also I needed to be able to have several tests running (or queued) at the same time, each test was almost identical except for the settings of the hardware and what results were captured (specified in the configuration windows). Tests needed to be able to be added and removed/edited while another test was running, when one test finished the next one should automatically start. 

 

This scenario fitted with the Singleton and Cloneable modules exactly, as it was an "out of the box" solution for the communication and  stuff, while also being completely flexible enough to do what I needed it to do.

 

It took me a while to get my head around the messaging concept, but once it clicked it became very easy to get things done. I also worked/spoke with Joerg quite a lot so he gave me some good pointers and explained some stuff.

 

Not sure you can use any of that for anything useful, but that's how I went to the dark side first started using DQMH.

 

Cheers,

Darren.

Message 10 of 20
(9,999 Views)