<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Flex Blocks Archives | DMC, Inc.</title>
	<atom:link href="https://static.dmcinfo.com/blog/tag/flex-blocks/feed/index.xml" rel="self" type="application/rss+xml" />
	<link></link>
	<description></description>
	<lastBuildDate>Mon, 15 Jun 2026 17:42:29 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.2</generator>

<image>
	<url>https://static.dmcinfo.com/wp-content/uploads/2025/04/site-icon-150x150.png</url>
	<title>Flex Blocks Archives | DMC, Inc.</title>
	<link></link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>DMC Flex Framework: A Flexible LabVIEW Toolset</title>
		<link>https://static.dmcinfo.com/blog/21055/dmc-flex-framework-a-flexible-labview-toolset/</link>
		
		<dc:creator><![CDATA[Jesse Batsche]]></dc:creator>
		<pubDate>Tue, 27 Aug 2019 13:16:56 +0000</pubDate>
				<category><![CDATA[LabVIEW]]></category>
		<category><![CDATA[Test and Measurement Automation]]></category>
		<category><![CDATA[Flex Blocks]]></category>
		<category><![CDATA[Flex Coordinators]]></category>
		<category><![CDATA[NI]]></category>
		<guid isPermaLink="false">https://static.dmcinfo.com/blog/21055/dmc-flex-framework-a-flexible-labview-toolset/</guid>

					<description><![CDATA[<p>DMC Test and Measurement’s Flex Framework is a toolset and design pattern collection based on LabVIEW Object-Oriented&#160;architectures and principles.&#160;The Flex Framework serves as a re-usable code base through which DMC can deliver solutions based on a vetted architecture which has been tested proven on many systems. Table of Contents Customer Benefits Open Solution: DMC can [&#8230;]</p>
<p>The post <a href="https://static.dmcinfo.com/blog/21055/dmc-flex-framework-a-flexible-labview-toolset/">DMC Flex Framework: A Flexible LabVIEW Toolset</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">DMC Test and Measurement’s <a href="https://static.dmcinfo.com/services/test-and-measurement-automation/labview-programming/flex-framework">Flex Framework</a> is a toolset and design pattern collection based on <a href="https://static.dmcinfo.com/services/test-and-measurement-automation/labview-programming">LabVIEW</a> Object-Oriented&nbsp;architectures and principles.&nbsp;The Flex Framework serves as a re-usable code base through which DMC can deliver solutions based on a vetted architecture which has been tested proven on many systems.</p>



<figure class="wp-block-image"><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/flex-big-1.png" alt="flex framework"/></figure>


<hr />


<h2 class="wp-block-heading" id="h-table-of-contents">Table of Contents</h2>



<ul class="wp-block-list">
<li><a href="#h-customer-benefits">Customer Benefits</a></li>



<li><a href="#h-flex-blocks-and-flex-coordinators">Flex Blocks and Flex Coordinators</a></li>



<li><a href="#h-ethos-behind-the-flex-framework">Ethos Behind the Flex Framework</a></li>



<li><a href="#h-standout-flex-blocks-and-code-features">Standout Flex Blocks and Code Features</a></li>



<li><a href="#h-dmc-module">DMC Module</a></li>



<li><a href="#h-dmc-device">DMC Device</a></li>



<li><a href="#h-typical-application-module-device-lifecycle">Typical Application Module/Device Lifecycle</a></li>
</ul>


<hr />


<h2 class="wp-block-heading" id="h-customer-benefits"><a id="Customer Benefits" name="Customer Benefits"></a>Customer Benefits</h2>



<p class="wp-block-paragraph"><strong>Open Solution</strong>: DMC can provide clients with license-free source code, allowing clients to extend or explore the code.</p>



<p class="wp-block-paragraph"><strong>Extensible</strong>: DMC’s Flex Framework is based on a proven, scalable, LabVIEW Object-Oriented architecture.&nbsp; This allows for DMC engineers or clients to add pieces/functionality to an application while keeping the overarching application architecture managed and maintained, enabling faster development.</p>



<p class="wp-block-paragraph"><b>Re-Usable CodeBase</b>: Solutions start from a vetted architecture and drivers proven out over multiple projects, instead of re-creating integration logic.&nbsp; Projects also get the benefit of improved supportability as&nbsp;DMC continues to advance and improve the Framework, which can benefit any project that uses the architecture.&nbsp;</p>



<p class="wp-block-paragraph"><strong>Modular Design:&nbsp;</strong>The Flex Framework consists of a collection of stand-alone software packages, which have the potential to be utilized outside of the Flex Framework or extended within the Framework.&nbsp;</p>



<figure class="wp-block-image"><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/pyramid_1.png" alt=""/></figure>


<hr />


<h2 class="wp-block-heading" id="h-flex-blocks-and-flex-coordinators"><a id="Flex Blocks and Flex Coordinators" name="Flex Blocks and Flex Coordinators"></a>Flex Blocks and Flex Coordinators</h2>



<p class="wp-block-paragraph">DMC’s Flex Framework consists of two key elements:</p>



<ul class="wp-block-list">
<li>Flex Blocks
<ul class="wp-block-list">
<li>Component pieces that perform an action in an application. Some examples are:
<ul class="wp-block-list">
<li>Digital Multimeters</li>



<li>Power Supplies</li>



<li>Graphing Displays</li>



<li>DAQmx cards</li>



<li>XNET/CAN cards</li>



<li>HMIs</li>
</ul>
</li>
</ul>
</li>



<li>Flex Coordinators
<ul class="wp-block-list">
<li>Constructs which integrate, manage, and build the Flex Blocks into a focused solution</li>
</ul>
</li>
</ul>



<figure class="wp-block-image"><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Coordinators-and-Blocks.png" alt=""/></figure>



<p class="wp-block-paragraph">Flex Coordinators, such as the Test Stand class, pull from the library of Flex Blocks to create a tailored solution for each client.&nbsp; Flex Coordinators are the ‘brains’ behind the application and serve as the string that ties the Flex Blocks into a functioning software package.</p>



<p class="wp-block-paragraph">Flex Blocks modularize one task, device, or feature set, and are designed to be agnostic of other Flex Blocks wherever possible.</p>


<hr />


<h2 class="wp-block-heading" id="h-ethos-behind-the-flex-framework"><a id="Ethos Behind the Flex Framework" name="Ethos Behind the Flex Framework"></a>Ethos Behind the Flex Framework</h2>



<p class="wp-block-paragraph">The Flex Framework provides a tested and proven starting point for projects&nbsp;eliminating the development time it would take to build up these capabilities from scratch. Furthermore, it establishes a modular design pattern which enables developers to adapt and expand the Flex Framework to client requirements.</p>



<p class="wp-block-paragraph"><strong>Common Code</strong></p>



<p class="wp-block-paragraph">Common code, such as device drivers, do not need to be re-written for each new solution or project.&nbsp;Instead, DMC has developed this code once to be shared and improved in a single location so many of our clients and projects can benefit from future changes or feature additions.</p>



<p class="wp-block-paragraph"><strong>Hardware Abstraction Layer</strong></p>



<p class="wp-block-paragraph">It’s common to have many different brands and types of COTS devices in a test system, but many of them do nearly the same thing.&nbsp;For this reason, interaction with individual devices (i.e. Digital Multimeters (DMMs), Power Supplies (PS))&nbsp;has been abstracted in more general classes.&nbsp;Children of these LabVIEW abstract classes implement specific methods to add device-specific functionality and meaning to the parent’s method.&nbsp;For example, an abstract parent “_Power Supply” class provides a common interface for all Power Supplies, but the children of this class (Agilent HVPS, Lambda ZUP power supply, RMX power supply, etc.) implement the hardware-specific drivers and communication protocols through which the interface acts.</p>



<p class="wp-block-paragraph"><strong>Multi-project interface coherence</strong></p>



<p class="wp-block-paragraph">Each test system may have unique characteristics, but it’s usually desirable to retain commonality in the underlying code modules, LabVIEW user interfaces/user experience (LabVIEW UI/UX), and system design.&nbsp;This enables users to have a consistent experience when moving from one test station to another (i.e. EOL Test Station, R&amp;D Test Station).&nbsp;There are also programming benefits since ramp-up on a new project that leverages the Flex Framework is quicker and lowers overall development cost.</p>



<p class="wp-block-paragraph"><strong>Code Modularity</strong></p>



<p class="wp-block-paragraph">The Flex Framework has code modules that are as independent as possible, allowing them to be re-used without dragging unwanted dependencies into a project.&nbsp;DMC Flex Blocks are agnostics of the existence of other Flex Blocks.&nbsp;Only the Flex Coordinator knows about each Flex Block included in the application.&nbsp;This software encapsulation and modularity keeps code more maintainable over time, which provides greater value to end-users of the Flex Framework.</p>


<hr />


<h2 class="wp-block-heading" id="h-standout-flex-blocks-and-code-features"><a id="Standout Flex Blocks and Code Features" name="Standout Flex Blocks and Code Features"></a>Standout Flex Blocks and Code Features</h2>



<p class="wp-block-paragraph">DMC’s Flex Framework has many Flex Blocks and features which we have explained in separate case studies:</p>



<ul class="wp-block-list">
<li><a href="https://static.dmcinfo.com/our-work/custom-alarm-handling-toolkit-for-labview/">Alarm Handling</a>
<ul class="wp-block-list">
<li>Provides traceability for system faults and notifications</li>



<li>Allow for system recovery from faults or errors</li>



<li>Standalone toolkit</li>
</ul>
</li>



<li><a href="https://static.dmcinfo.com/our-work/adding-user-authentication-to-your-labview-project/">User Access Levels</a>
<ul class="wp-block-list">
<li>Easy to integrate toolset which keeps track of user permission levels</li>



<li>Simple to extend and tailor to customer&#8217;s user role definitions</li>
</ul>
</li>



<li><a href="https://static.dmcinfo.com/our-work/flexible-logging-with-the-labview-results-manager/">Data Logging/Reporting Capabilities</a>
<ul class="wp-block-list">
<li>Flexible logging utility</li>



<li>Live feedback of user-configured, graded, testing parameters in LabVIEW</li>



<li>Standalone toolkit</li>
</ul>
</li>



<li><a href="https://static.dmcinfo.com/our-work/labview-ui-customization-with-grid-viewer/">DMC Grid Viewer</a>
<ul class="wp-block-list">
<li>Dynamic test interface configuration</li>



<li>Subpanels any LabVIEW VI and allows for drag-and-drop interface configuration</li>



<li>Standalone toolkit</li>
</ul>
</li>



<li><a href="https://static.dmcinfo.com/our-work/customizable-ui-in-dmcs-flex-framework/">Tailored User Workflows</a>
<ul class="wp-block-list">
<li>Application-specific interfaces and implementations to tailor the Flex Framework to exact customer needs</li>
</ul>
</li>



<li><a href="https://static.dmcinfo.com/our-work/automatic-and-manual-automation-modes-in-dmcs-flex-framework/">Manual/Automatic Control Modes</a>
<ul class="wp-block-list">
<li>LabVIEW Testing automation abstractions</li>



<li>Automated running of pre-configured testing routines</li>



<li>Manual testing support, for in-depth engineering diagnostics</li>
</ul>
</li>



<li><a href="https://static.dmcinfo.com/our-work/efficient-configuration-management-with-flex-framework/">Configuration Management with Workspaces and DUT construct</a>
<ul class="wp-block-list">
<li>Configuration Management</li>



<li>Single click switching of Device Under Test (DUT)-specific configurations</li>
</ul>
</li>



<li><a href="https://static.dmcinfo.com/our-work/flexible-automated-test-system-with-dmcquencer/">Test Execution with the DMCquencer</a>
<ul class="wp-block-list">
<li>LabVIEW Test Execution Engine</li>



<li>Test automation</li>
</ul>
</li>



<li><a href="https://static.dmcinfo.com/services/test-and-measurement-automation/labview-programming/llama-an-extensible-logging-framework-for-labview/">Built-In Diagnostics</a>
<ul class="wp-block-list">
<li>I/O Checkout Routines</li>



<li>System self-diagnostic check</li>



<li>Diagnostic Logging</li>
</ul>
</li>



<li><a href="https://static.dmcinfo.com/our-work/streamline-hardware-configuration-with-the-hardware-abstraction-layer/">Hardware Abstraction Layer</a>
<ul class="wp-block-list">
<li>Test stand hardware hot-swap support</li>



<li>LabVIEW design pattern</li>
</ul>
</li>
</ul>


<hr />


<h2 class="wp-block-heading" id="h-dmc-module"><a id="DMC Module" name="DMC Module"></a>DMC Module</h2>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="70" height="68" src="https://static.dmcinfo.com/wp-content/uploads/2019/08/Module-1.png" alt="module 1" class="wp-image-36467" style="width:133px;height:auto"/></figure>



<p class="wp-block-paragraph">DMC Flex Framework’s LabVIEW Object-Oriented architecture is based on a lightweight class named the DMC Module.&nbsp; Most of the classes in the Flex Blocks group are grandchildren of the DMC Module class.&nbsp; Modules are independent pieces of code responsible for a particular function.</p>



<p class="wp-block-paragraph">DMC Modules introduce the concept of a ‘Module Command.’&nbsp; These commands are used to capture a&nbsp;given Module’s API usage, keep track of the data modified by those API calls, and provide a level of traceability to an application.</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="65" height="69" src="https://static.dmcinfo.com/wp-content/uploads/2019/08/Module-2.png" alt="Module 2" class="wp-image-36468" style="width:118px;height:auto"/></figure>



<p class="wp-block-paragraph">Additionally, the Module class allows for the definition of daemons and/or interfaces which the Module may use to meter out tasks, maintain heartbeat communication with a device, or provide a user interface for an operator.</p>



<p class="wp-block-paragraph">DMC Modules are typically software constructs which don’t have physical manifestations (i.e. database loggers, file writers, and data processing tools)</p>



<figure class="wp-block-image"><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Module-Palette_1.png" alt="module palette"/></figure>


<hr />


<h2 class="wp-block-heading" id="h-dmc-device"><a id="DMC Device" name="DMC Device"></a>DMC Device</h2>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="68" height="64" src="https://static.dmcinfo.com/wp-content/uploads/2019/08/Module-3.png" alt="module 3" class="wp-image-36470" style="width:118px;height:auto"/></figure>



<p class="wp-block-paragraph">The DMC Device class inherits from the DMC Module class and is its most commonly used child.&nbsp; DMC Devices add one additional piece of functionality: variable publishers. &nbsp;Most classes in the Flex Blocks group are children of the DMC Device class.&nbsp; Like Modules, Devices are meant to be independent pieces of code (i.e. they do not interact with or know about the existence of other DMC Devices).</p>



<p class="wp-block-paragraph">Variable publishers are used in the Device Command architecture (which draws from the DMC Module Command architecture).&nbsp; If a device API is called with the Device Command constructs, then the class is able to post ‘modified’ variables to a registered variable publisher.</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="69" height="68" src="https://static.dmcinfo.com/wp-content/uploads/2019/08/Module-4.png" alt="module 4" class="wp-image-36471" style="width:117px;height:auto"/></figure>



<p class="wp-block-paragraph">Keeping track of modified variables allows for a single place in an application to monitor variables (an example of this could be a Current Value Table).&nbsp; DMC uses this collection of device variable values to monitor the health of a test system, abort automated testing if a variable violates a safe operating range, and centralize reporting of system variables through the application’s lifecycle.</p>



<p class="wp-block-paragraph">DMC Devices are usually classes which interact with physical hardware (i.e. digital multimeters, power supplies, relay modules, DAQmx hardware).&nbsp;</p>



<figure class="wp-block-image"><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Device-Palette_1.png" alt="device palette"/></figure>


<hr />


<h2 class="wp-block-heading" id="h-typical-application-module-device-lifecycle"><a id="Typical Application Module/Device Lifecycle" name="Typical Application Module/Device Lifecycle"></a>Typical Application Module/Device Lifecycle</h2>



<p class="wp-block-paragraph">Many of the projects which utilize the DMC Flex Framework follow a common pattern:</p>



<ol class="wp-block-list">
<li>Application is launched</li>



<li>User configures settings</li>



<li>The user chooses to run an automatic test or manually interact with the system (Manual Mode or Automatic Mode)</li>



<li>The testing Mode (Manual or Automatic) is active until the test finishes or the user clicks &#8216;Abort&#8217;</li>



<li>The system goes to an idle state</li>



<li>Repeat Steps 2-5 as needed</li>



<li>Application is closed</li>
</ol>



<p class="wp-block-paragraph">To accommodate this application lifecycle, a corresponding Module/Device lifecycle is managed by the Flex Coordinators by breaking the Modules/Devices into two groups:</p>



<ul class="wp-block-list">
<li>Eternal Modules/Devices
<ul class="wp-block-list">
<li>Active through the entire application lifecycle</li>



<li>Examples include interlock monitoring devices, database connection modules, etc.</li>
</ul>
</li>



<li>Session Modules/Devices
<ul class="wp-block-list">
<li>Active during the testing mode only. Constructed/initialized when the test begins and terminated/disposed of when the test mode completes</li>



<li>These are typically constructed on application start and parameters pulled from a System Parameters file, but then are disposed of and re-constructed when a test begins
<ul class="wp-block-list">
<li>This is done to capture any settings (and subsequent System Parameter file) modifications prior to starting a test </li>
</ul>
</li>
</ul>
</li>
</ul>



<p class="wp-block-paragraph">An example lifecycle of both Eternal and Session Modules/Devices are shown below.</p>



<figure class="wp-block-image"><img decoding="async" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Lifecycle.png" alt=""/></figure>


<hr />


<h2 class="wp-block-heading" id="h-national-instruments-labview-experience">National Instruments / LabVIEW Experience</h2>



<p class="wp-block-paragraph">DMC has been a&nbsp;<a href="https://static.dmcinfo.com/about/partners/ni-alliance-partner">National Instruments (NI) Alliance</a>&nbsp;member for over 10 years with one of the largest teams of&nbsp;<a href="https://static.dmcinfo.com/services/test-and-measurement-automation/labview-programming">Certified LabVIEW</a>&nbsp;developers in the country, including several National Instruments’ Certified LabVIEW Architects (highest level of certification available), and multiple NI Certified LabVIEW Developers.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="900" height="400" src="https://static.dmcinfo.com/wp-content/uploads/2019/08/image.png" alt="" class="wp-image-33023" srcset="https://static.dmcinfo.com/wp-content/uploads/2019/08/image.png 900w, https://static.dmcinfo.com/wp-content/uploads/2019/08/image-300x133.png 300w, https://static.dmcinfo.com/wp-content/uploads/2019/08/image-768x341.png 768w" sizes="(max-width: 900px) 100vw, 900px" /></figure>



<p class="wp-block-paragraph">DMC is proud to be recognized as a National Instruments Alliance Partner.&nbsp;<a href="https://static.dmcinfo.com/about/partners/ni-alliance-partner">Learn more about DMC&#8217;s National Instruments partnership</a>&nbsp;and <a href="https://static.dmcinfo.com/contact">contact us today</a> to find the&nbsp;Flex Framework solution that&#8217;s right for you.</p>
<p>The post <a href="https://static.dmcinfo.com/blog/21055/dmc-flex-framework-a-flexible-labview-toolset/">DMC Flex Framework: A Flexible LabVIEW Toolset</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
