DQMH Consortium Toolkits Discussions

cancel
Showing results for 
Search instead for 
Did you mean: 

A Quick Thanks to the Delacor Team

Solved!
Go to solution

I wanted to thank the Delacor team for such a great tool.

 

I inherited an application where no architecture was used during development. It is a fairly complex and large application, with no documentation. With the application being deployed to our lab recently, an influx of feature requests have made their way to my desk. I took to refactoring the current code and adding documentation where I could in the beginning. But I had no idea how I was going to implement the new features. Because of the many features being performed in the main VI with no independence of tasks, any simple change could cause havoc.

 

I had done some research into DQMH, but did not realize the modules could be implemented into an existing application. Once I realized this was possible, I started with my first module last Friday. I had spent close to 40 hours attempting to implement a control feature into the large application, but had no luck to that point. If a user ran the automatic control of an AO channel, I would lose the AI task or stop AI acquisition.

 

I spent around 14-15 hours designing the DQMH control module, implemented it into the application and have it deployed today with technicians successfully using it today.

 

The current application has data acquisition, logging, and configuration all being performed in the main application. The current application is not modular. The plan moving forward will be to design modules for each of these tasks using DQMH modules. My product owner requested modularity of the application, and I will be able to provide him that modularity because of DQMH. I have also implemented source code control as a single developer which has been a life saver, after watching a video that Fab discussed the importance of it.

 

I also have one question, when I start the module in my main application the tester does not recognize that the module has initialized. I am using the tester as a sniffer when running the main application. I can show panel after I know that the start module request has been performed, but the indicator does not turn green. Any ideas why?

 

Thanks again Delacor!!

Message 1 of 4
(3,573 Views)

Hi Ryan,

 

Thanks for the great feedback and thanks for trusting DQMH with this new challenge. I am glad you were able to see results so quickly. If you don't mind, please share your feedback via the LabVIEW Tools Network. Feel free to just copy and paste what you put here 😉

 

Also, glad to see that my continue nagging... I mean championing source code control is paying up too.

 

Now, regarding your question that I almost missed given how excited I was after reading your feedback 🙂

@ryan_sheppard wrote:

 

I also have one question, when I start the module in my main application the tester does not recognize that the module has initialized. I am using the tester as a sniffer when running the main application. I can show panel after I know that the start module request has been performed, but the indicator does not turn green. Any ideas why?

 


If the Main application runs first and then you run the API Tester, you should see the initialized LED green.

What version of DQMH are you using? Back in 2.1 we did not have a local variable connected to the Obtain Broadcast Events for Registration.vi, now we do:Obtain Broadcast Events for Registration-Local Variable.jpg

If the tester is running before the singleton module starts, then you need to press the Start Module button again. 

 

The "Obtain Broadcast Events for Registration.vi" returns an empty reference if the module is not already running. If you will be using only Singleton modules, you can replace the "Obtain Broadcast Events for Registration.vi" in the tester with the code that starts the module when you press the Start Module button.

We can start a singleton DQMH module in different parts of the code and it will always start the same instance, if the instance is already running, then it is a non-operation and you do get the current Broadcast Events to register.

 

Let me know if this makes or does not make sense. 

 

Thanks,

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?
0 Kudos
Message 2 of 4
(3,536 Views)

Fab,

I will make sure to share my feedback!

 

I am using DQMH 3.1, so I see the local variable connected to the Obtain Broadcast Events.vi. 

 

So if I run my main application it launches the Module Main.vi using the Start Module.vi. I then run my Test Module.vi, and the Module Running? indicator does not display that the Main Module.vi is running. I click the Show Module Panel, and if it was not running the Test Module.vi would send Error 5001: Module Not Running and stop itself, but my front panel of my Main Module.vi does appear so I know that I successfully start my Main Module.vi

.

I also probed at the Obtain Broadcast Events.vi and local variable Module Running? and it does send the True value, but my indicator did not display the value correctly.

 

I also have a question about private events used to communicate data with helper loops, should I ask it here or should I start a new topic?

 

Thank you for your help!

0 Kudos
Message 3 of 4
(3,510 Views)
Solution
Accepted by topic author ryan_sheppard

Hi Ryan,

 

I saw your feedback on the LabVIEW Tools Network, thanks! By the way, if you do like Unit Testing, DQMH 4.0 includes scripting code to create unit tests.

 


@ryan_sheppard@Ryan wrote:

 

 

I also probed at the Obtain Broadcast Events.vi and local variable Module Running? and it does send the True value, but my indicator did not display the value correctly.

This is maybe a race condition that we fixed on DQMH 4.0, we were calling the Initialize defaults and that could clear the Module Did Init.

This was reported by Danny here https://forums.ni.com/t5/Delacor-Toolkits-Discussions/My-first-delivered-DQMH-project/m-p/3736726

This is how we did it in 3.1

Race condition writing Did Init.jpg

This is how we do it on DQMH 4.0

Ensure Did Init gets written after setting values to default.jpg

If you want to download DQMH 4.0, it is in Beta available here http://delacor.com/announcing-dqmh-4-0-beta/

 

wrote:

I also have a question about private events used to communicate data with helper loops, should I ask it here or should I start a new topic?

 


Check this discussion, private events are mentioned here: https://forums.ni.com/t5/Delacor-Toolkits-Discussions/Dqmh-module-registered-to-its-own-broadcasts/t...

 

If that does not answer your question, please start a new topic.

 

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?
0 Kudos
Message 4 of 4
(3,488 Views)