1. Project description
The Continuous Measurement and Logging (CML) Delacor Queued Message Handler (DQMH) sample project is a variation of the NI QMH based CML project using DQMH® modules instead of separate Message Handle Loops.
2. Code component descriptions
2.1. DQMH® modules
This section describes DQMH® module responsibilities and relationships.
2.1.1. Preamble
A DQMH module is the main component of an architecture based on DQMH® framework. A DQMH module is used to implement a section of the application that has one responsibility.
DQMH® framework defines two different type of DQMH module.
Singleton:
A Singleton DQMH module can have only one instance running at any given time.
Cloneable:
A Cloneable DQMH module can have one or multiple instances running in parallel.
DQMH® framework defines two different ways to carry data throughout the application and with both other DQMH modules and non-DQMH based code.
Request events:
A request is a code that fires an event requesting the DQMH module to do something. Multiple locations in the code can send events to the DQMH module.
Request events are many-to-one.
Requests are usually named using imperative tense.
Broadcast events:
A broadcast is a code that fires an event broadcasting that the DQMH module did something. Multiple Event Structures can register to handle the Broadcast Events.
Broadcast Events are one-to-many.
Broadcasts are usually named using past tense or passive voice.
Note
|
Refer to the DQMH® framework official documentation to find more details on how the framework works |
The following section gives you details on the project architecture relying on this framework. It gives you an overview of the modules' interaction and detailed information on each module.
Graphs used in this section have the following legend:
Components:
Events:
Start and Stop module callers:
2.1.2. Modules overview
This project contains the following modules.
Singleton | Cloneable |
---|---|
This graph represents the links between all DQMH modules.
2.1.3. CML UI.lvlib
Type: Singleton
Responsibility: This module is the user interface of the Continuous Measurement and Logging application.
Module Start/Stop calls
Function | Callers |
---|---|
CML Main.vi |
|
CML UI.lvlib:Handle Exit.vi |
Module relationship
Request Name | Callers |
---|---|
CML Main.vi |
|
Test CML UI API.vi |
|
CML UI.lvlib:Start Module.vi |
|
Test CML UI API.vi |
Broadcast Name | Listeners |
---|---|
Test CML UI API.vi |
|
Test CML UI API.vi |
|
Test CML UI API.vi |
|
Test CML UI API.vi |
|
Test CML UI API.vi |
Module | Brodcasts |
---|---|
CML UI.lvlib:Get Module Execution Status.vi |
|
Acquisition.lvlib:Stop Acquiring.vi |
|
Logger.lvlib:Initialize File.vi |
|
Settings Editor.lvlib:Show Panel.vi |
Module | Brodcasts |
---|---|
Acquisition Started.vi |
|
Error Reported.vi |
|
Error Reported.vi |
2.1.4. Acquisition.lvlib
Type: Singleton
Responsibility: This module handle the continuous data acquisition.
Module Start/Stop calls
Function | Callers |
---|---|
CML UI.lvlib:Main.vi |
|
CML UI.lvlib:Main.vi |
Module relationship
Request Name | Callers |
---|---|
Test Acquisition API.vi |
|
Test Acquisition API.vi |
|
Acquisition.lvlib:Start Module.vi |
|
Test Acquisition API.vi |
|
CML UI.lvlib:Main.vi |
|
CML UI.lvlib:Main.vi |
|
CML UI.lvlib:Main.vi |
|
Acquisition.lvlib:Main.vi |
|
Acquisition.lvlib:Main.vi |
Broadcast Name | Listeners |
---|---|
CML UI.lvlib:Main.vi |
|
CML UI.lvlib:Main.vi |
|
CML UI.lvlib:Main.vi |
|
Test Acquisition API.vi |
|
CML UI.lvlib:Main.vi |
|
CML UI.lvlib:Main.vi |
|
CML UI.lvlib:Main.vi |
|
CML UI.lvlib:Main.vi |
|
CML UI.lvlib:Main.vi |
Module | Brodcasts |
---|---|
Acquisition.lvlib:Get Module Execution Status.vi |
|
Logger.lvlib:Log Data.vi |
|
Settings Editor.lvlib:Update Application Settings.vi |
Module | Brodcasts |
---|---|
Application Settings Updated.vi |
2.1.5. Logger.lvlib
Type: Singleton
Responsibility: This module handle data logging in file.
Module Start/Stop calls
Function | Callers |
---|---|
CML UI.lvlib:Main.vi |
|
CML UI.lvlib:Main.vi |
Module relationship
Request Name | Callers |
---|---|
Test Logger API.vi |
|
Test Logger API.vi |
|
Logger.lvlib:Start Module.vi |
|
Test Logger API.vi |
|
CML UI.lvlib:Main.vi |
|
Acquisition.lvlib:Main.vi |
|
CML UI.lvlib:Main.vi |
Broadcast Name | Listeners |
---|---|
CML UI.lvlib:Main.vi |
|
CML UI.lvlib:Main.vi |
|
CML UI.lvlib:Main.vi |
|
Test Logger API.vi |
|
CML UI.lvlib:Main.vi |
|
Test Logger API.vi |
|
Test Logger API.vi |
Module | Brodcasts |
---|---|
Logger.lvlib:Get Module Execution Status.vi |
|
Settings Editor.lvlib:Update Application Settings.vi |
Module | Brodcasts |
---|---|
Application Settings Updated.vi |
2.1.6. Settings Editor.lvlib
Type: Singleton
Responsibility: This module is an ui that allow user to change application settings.
Module Start/Stop calls
Function | Callers |
---|---|
CML UI.lvlib:Main.vi |
|
CML UI.lvlib:Main.vi |
Module relationship
Request Name | Callers |
---|---|
CML UI.lvlib:Main.vi |
|
Test Settings Editor API.vi |
|
Settings Editor.lvlib:Start Module.vi |
|
Test Settings Editor API.vi |
|
Acquisition.lvlib:Main.vi |
Broadcast Name | Listeners |
---|---|
CML UI.lvlib:Main.vi |
|
CML UI.lvlib:Main.vi |
|
CML UI.lvlib:Main.vi |
|
Test Settings Editor API.vi |
|
CML UI.lvlib:Main.vi |
|
Acquisition.lvlib:Main.vi |
Module | Brodcasts |
---|---|
Settings Editor.lvlib:Get Module Execution Status.vi |
Module | Brodcasts |
---|---|
— |
— |
2.2. Libraries
This section describes the libraries contained in the project.
2.2.1. CML Shared.lvlib
This library gathers all the resource shared among the different part of the code.
2.2.2. Launcher Support.lvlib
This library gathers functions used to build and laucnh the application.
2.3. Classes
This section describes the classes contained in the project.
3. VI descriptions
3.1. DQMH® modules
This section describes DQMH® modules events.
3.1.1. CML UI.lvlib
CML UI.lvlib:Start Module.vi
Event type: Not a DQMH Event
Description:
CML UI.lvlib:Stop Module.vi
Event type: Not a DQMH Event
Description:
CML UI.lvlib:Show Panel.vi
Event type: Request
Description:
CML UI.lvlib:Hide Panel.vi
Event type: Request
Description:
CML UI.lvlib:Get Module Execution Status.vi
Event type: Request
Description:
CML UI.lvlib:Show Diagram.vi
Event type: Request
Description:
CML UI.lvlib:Module Did Init.vi
Event type: Broadcast
Description:
CML UI.lvlib:Status Updated.vi
Event type: Broadcast
Description:
CML UI.lvlib:Error Reported.vi
Event type: Broadcast
Description:
CML UI.lvlib:Module Did Stop.vi
Event type: Broadcast
Description:
CML UI.lvlib:Update Module Execution Status.vi
Event type: Broadcast
Description:
3.1.2. Acquisition.lvlib
Acquisition.lvlib:Start Module.vi
Event type: Not a DQMH Event
Description:
Acquisition.lvlib:Stop Module.vi
Event type: Not a DQMH Event
Description:
Acquisition.lvlib:Show Panel.vi
Event type: Request
Description:
Acquisition.lvlib:Hide Panel.vi
Event type: Request
Description:
Acquisition.lvlib:Get Module Execution Status.vi
Event type: Request
Description:
Acquisition.lvlib:Show Diagram.vi
Event type: Request
Description:
Acquisition.lvlib:Stop Acquiring.vi
Event type: Request
Description:
Acquisition.lvlib:Calibrate DAQ.vi
Event type: Request
Description:
Acquisition.lvlib:Start Acquiring.vi
Event type: Request And Wait For Reply
Description:
Acquisition.lvlib:Module Did Init.vi
Event type: Broadcast
Description:
Acquisition.lvlib:Status Updated.vi
Event type: Broadcast
Description:
Acquisition.lvlib:Error Reported.vi
Event type: Broadcast
Description:
Acquisition.lvlib:Module Did Stop.vi
Event type: Broadcast
Description:
Acquisition.lvlib:Update Module Execution Status.vi
Event type: Broadcast
Description:
Acquisition.lvlib:Acquisition Started.vi
Event type: Broadcast
Description:
Acquisition.lvlib:Acquisition Stopped.vi
Event type: Broadcast
Description:
Acquisition.lvlib:Data Updated.vi
Event type: Broadcast
Description:
Acquisition.lvlib:Device Calibrated.vi
Event type: Broadcast
Description:
Acquisition.lvlib:Wakeup Helper Loop.vi
Event type: Request
Description:
Acquisition.lvlib:Change Settings.vi
Event type: Request
Description:
3.1.3. Logger.lvlib
Logger.lvlib:Start Module.vi
Event type: Not a DQMH Event
Description:
Logger.lvlib:Stop Module.vi
Event type: Not a DQMH Event
Description:
Logger.lvlib:Show Panel.vi
Event type: Request
Description:
Logger.lvlib:Hide Panel.vi
Event type: Request
Description:
Logger.lvlib:Get Module Execution Status.vi
Event type: Request
Description:
Logger.lvlib:Show Diagram.vi
Event type: Request
Description:
Logger.lvlib:Initialize File.vi
Event type: Request And Wait For Reply
Description:
Logger.lvlib:Log Data.vi
Event type: Request
Description:
Logger.lvlib:Stop Logging.vi
Event type: Request
Description:
Logger.lvlib:Module Did Init.vi
Event type: Broadcast
Description:
Logger.lvlib:Status Updated.vi
Event type: Broadcast
Description:
Logger.lvlib:Error Reported.vi
Event type: Broadcast
Description:
Logger.lvlib:Module Did Stop.vi
Event type: Broadcast
Description:
Logger.lvlib:Update Module Execution Status.vi
Event type: Broadcast
Description:
Logger.lvlib:Logging Stopped.vi
Event type: Broadcast
Description:
Logger.lvlib:File Initialized.vi
Event type: Broadcast
Description:
3.1.4. Settings Editor.lvlib
Settings Editor.lvlib:Start Module.vi
Event type: Not a DQMH Event
Description:
Settings Editor.lvlib:Stop Module.vi
Event type: Not a DQMH Event
Description:
Settings Editor.lvlib:Show Panel.vi
Event type: Request
Description:
Settings Editor.lvlib:Hide Panel.vi
Event type: Request
Description:
Settings Editor.lvlib:Get Module Execution Status.vi
Event type: Request
Description:
Settings Editor.lvlib:Show Diagram.vi
Event type: Request
Description:
Settings Editor.lvlib:Update Application Settings.vi
Event type: Request And Wait For Reply
Description:
Settings Editor.lvlib:Module Did Init.vi
Event type: Broadcast
Description:
Settings Editor.lvlib:Status Updated.vi
Event type: Broadcast
Description:
Settings Editor.lvlib:Error Reported.vi
Event type: Broadcast
Description:
Settings Editor.lvlib:Module Did Stop.vi
Event type: Broadcast
Description:
Settings Editor.lvlib:Update Module Execution Status.vi
Event type: Broadcast
Description:
Settings Editor.lvlib:Application Settings Updated.vi
Event type: Broadcast
Description:
3.2. Libraries
This section describes libraries public VIs.
3.2.1. CML Shared.lvlib
3.2.2. Launcher Support.lvlib
Launcher Support.lvlib:Determine if Running in Debug Mode.vi
Description:
Launcher Support.lvlib:Pre-Build Action.vi
Description:
Launcher Support.lvlib:Set VI Properties for Debugging Mode.vi
Description:
3.3. Classes
This section describes classes public VIs.
4. Legal Information
4.1. Document creation
This document has been generated using the following tools.
4.1.1. Antidoc
Project website: Antidoc
Maintainer website: Wovalab
BSD 3-Clause License
Copyright © 2019, Wovalab, All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
-
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
-
Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
-
Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
4.1.2. Asciidoc for LabVIEW™
Project website: Asciidoc toolkit
Maintainer website: Wovalab
BSD 3-Clause License
Copyright © 2019, Wovalab, All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
-
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
-
Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
-
Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
4.1.3. Graph Builder
Project website: Graph Builder
BSD 3-Clause License
Copyright (c) 2020, Cyril GAMBINI All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
-
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
-
Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
-
Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
4.2. Product used in the project
The documented project has been developed with the following products.
4.2.1. DQMH®
Copyright © 2015-2020 by Delacor, LLC. All Rights Reserved.
Find more details on Delacor website