<?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>AI Archives | DMC, Inc.</title>
	<atom:link href="https://static.dmcinfo.com/blog/tag/ai/feed/index.xml" rel="self" type="application/rss+xml" />
	<link></link>
	<description></description>
	<lastBuildDate>Fri, 04 Sep 2026 20:10:22 +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>AI Archives | DMC, Inc.</title>
	<link></link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>3 Ways AI Improves Real-Time Vision Inspection with Python</title>
		<link>https://static.dmcinfo.com/blog/46368/ai-real-time-vision-inspection-python-optimization/</link>
		
		<dc:creator><![CDATA[Fadil Eledath]]></dc:creator>
		<pubDate>Thu, 02 Jul 2026 11:00:00 +0000</pubDate>
				<category><![CDATA[Test and Measurement Automation]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Vision Inspection]]></category>
		<guid isPermaLink="false">https://static.dmcinfo.com/?p=46368</guid>

					<description><![CDATA[<p>Real-time vision inspection has an unforgiving constraint: every product on the conveyor has to be analyzed before the next set of frames arrives. A pipeline that&#8217;s accurate but too slow is just as unusable as one that&#8217;s fast but wrong. Getting both requires deliberate optimization, which has historically been difficult, but using AI and Python [&#8230;]</p>
<p>The post <a href="https://static.dmcinfo.com/blog/46368/ai-real-time-vision-inspection-python-optimization/">3 Ways AI Improves Real-Time Vision Inspection with Python</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Real-time vision inspection has an unforgiving constraint: every product on the conveyor has to be analyzed before the next set of frames arrives. A pipeline that&#8217;s accurate but too slow is just as unusable as one that&#8217;s fast but wrong. Getting both requires deliberate optimization, which has historically been difficult, but using AI and Python together can make it much easier.</p>



<p class="wp-block-paragraph">Here are three practical ways DMC has used AI and Python to optimize a real-time inspection system and deliver real results to our clients.</p>



<h2 id="h-1-profile-your-pipeline-to-find-the-bottlenecks" class="wp-block-heading">1. Profile Your Pipeline to Find the Bottlenecks</h2>



<p class="wp-block-paragraph">As you move from implementation to production, the slower parts of your code can become painful while remaining hidden. In fact, slow lines of code can show up in surprising places and, depending on how your pipeline is structured, have an outsized effect on your speed. The solution is to bring a magnifying glass to your code by profiling it.</p>



<figure class="wp-block-image alignleft size-full is-resized has-custom-border" style="margin-bottom:var(--wp--preset--spacing--50)"><img fetchpriority="high" decoding="async" width="458" height="250" src="https://static.dmcinfo.com/wp-content/uploads/2026/06/optimizing-python-vision-inspection-system-1.png" alt="Generated image of a conveyor belt with a robotic sensor and an HMI screen showing defects on a tortilla on the conveyor belt." class="wp-image-46382" style="border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;width:500px" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/06/optimizing-python-vision-inspection-system-1.png 458w, https://static.dmcinfo.com/wp-content/uploads/2026/06/optimizing-python-vision-inspection-system-1-300x164.png 300w" sizes="(max-width: 458px) 100vw, 458px" /></figure>



<p class="wp-block-paragraph">I’ve been a heavy user of Jupyter notebooks inside VS Code, which allows me to use the AI coding agent of my choice to easily set up and run experiments against my inspection pipeline to understand how it runs in practice against specific examples and, more relevantly, how long each section of the pipeline takes to run.</p>



<p class="wp-block-paragraph">For example, one recent system DMC worked on involved belt masking. A client needed to inspect yellow tortillas moving down a blue conveyor belt, so we had to isolate each tortilla on each frame, separating it from the background for later steps in our analysis. The naive-but-useful approach we started with computed a full-resolution color distance, each pixel relative to the average color of the belt. This gave us a reference for what a functionally correct approach looks like, but profiling the code in conversation with AI showed us that it took up the majority of its time analyzing each frame.</p>



<h2 id="h-2-redesign-expensive-metrics-to-be-computationally-cheaper" class="wp-block-heading">2. Redesign Expensive Metrics to be Computationally Cheaper</h2>



<p class="wp-block-paragraph">Once you know which stage is slow, the next lever is the algorithms inside it. Many vision metrics have a naive implementation that&#8217;s accurate but expensive, and a smarter implementation that&#8217;s nearly as accurate and far faster.</p>



<figure class="wp-block-image alignright size-full is-resized has-custom-border" style="margin-bottom:var(--wp--preset--spacing--60)"><img decoding="async" width="458" height="250" src="https://static.dmcinfo.com/wp-content/uploads/2026/06/optimizing-python-vision-inspection-system-2.png" alt="Generated image of a blue conveyor belt with with tortillas." class="wp-image-46384" style="border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;aspect-ratio:1.8320261063720158;width:500px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/06/optimizing-python-vision-inspection-system-2.png 458w, https://static.dmcinfo.com/wp-content/uploads/2026/06/optimizing-python-vision-inspection-system-2-300x164.png 300w" sizes="(max-width: 458px) 100vw, 458px" /></figure>



<p class="wp-block-paragraph">After profiling the inspection system, we looked for ways to optimize it. A faster approach involved shrinking the frame by 50% on each side to reduce the number of computations by 75%. Comparing against the full-frame approach, we saw minimal reduction in accuracy. Additionally, by computing distances, we were performing a square root operation before comparing the distance to a threshold parameter; we could ditch that operation by squaring the threshold parameter and then comparing the squared distance, which sped up the process even further with no reduction in accuracy.</p>



<p class="wp-block-paragraph">Eventually, we switched from checking RGB color distance to an axis-aligned range, which had similar accuracy while drastically reducing the computational load per frame. AI was vital here for quickly brainstorming and drafting these alternative formulations so we could compare their performance and accuracy.</p>



<h2 id="h-3-use-synthetic-data-to-stress-test-thresholds-and-edge-cases" class="wp-block-heading">3. Use Synthetic Data to Stress-Test Thresholds and Edge Cases</h2>



<p class="wp-block-paragraph">Optimization isn&#8217;t only about speed; it&#8217;s also about ensuring the system remains correct under pressure and across the full range of inputs. It&#8217;s hard to verify with only a handful of real images, which is often the case at the pre-deployment stage of a project.</p>



<figure class="wp-block-image alignleft size-full is-resized has-custom-border" style="margin-bottom:var(--wp--preset--spacing--50)"><img decoding="async" width="608" height="250" src="https://static.dmcinfo.com/wp-content/uploads/2026/06/optimizing-python-vision-inspection-system-3.png" alt="" class="wp-image-46385" style="border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;width:500px" srcset="https://static.dmcinfo.com/wp-content/uploads/2026/06/optimizing-python-vision-inspection-system-3.png 608w, https://static.dmcinfo.com/wp-content/uploads/2026/06/optimizing-python-vision-inspection-system-3-300x123.png 300w" sizes="(max-width: 608px) 100vw, 608px" /></figure>



<p class="wp-block-paragraph">Synthetic data can fill this gap. By generating test subjects across the entire pass/fail spectrum, including rare failure modes, you can stress-test thresholds and confirm the optimized pipeline still behaves correctly on edge cases.</p>



<p class="wp-block-paragraph">In our example of the tortilla inspection project, we used a Python script to programmatically generate AI images of tortillas with different levels and types of defects by varying the prompts. For example, each tortilla prompt was given a probability of having a prompt addition specifying a torn edge or a burn mark. After generating 100 tortillas, we used another script to create simulated footage of these tortillas moving down a looping belt texture, with added random noise and motion blur, which we then used to verify our pipeline&#8217;s capabilities before we had any real footage to work with. These efforts allowed us to deploy our code into production quickly for our client.</p>



<h2 id="h-conclusion" class="wp-block-heading">Conclusion</h2>



<p class="wp-block-paragraph">These threThese three practices work together to create a more efficient and reliable system:</p>



<ul class="wp-block-list">
<li><strong>Profiling</strong> identifies where to focus your optimization efforts.</li>



<li><strong>Metric redesign</strong> speeds up slow stages exposed by your profiling.</li>



<li><strong>Synthetic data</strong> ensures your system remains accurate across edge cases.</li>
</ul>



<p class="wp-block-paragraph">Each of these stages has always been essential to vision inspection, but AI and modern coding tools have made them faster and easier to implement. Additionally, unlike certain uses of AI that have greater exposure to risk, like code implementation, using AI here is less likely to cause major faults in your system. That said, AI should be an accelerator, not a replacement for engineering judgment. It is essential to verify that AI-generated code is correct and aligned with system requirements.</p>



<p class="wp-block-paragraph">Ultimately, the impact of these practices is clear. By combining these approaches, you can confidently improve the speed and reliability of your real-time vision inspection pipeline.</p>



<div class="wp-block-group alignwide has-custom-light-blue-background-color has-background is-layout-flow wp-container-core-group-is-layout-dbd34961 wp-block-group-is-layout-flow" style="border-radius:20px;margin-top:var(--wp--preset--spacing--50);margin-bottom:var(--wp--preset--spacing--50);padding-top:var(--wp--preset--spacing--50);padding-right:0;padding-bottom:var(--wp--preset--spacing--50);padding-left:0">
<div class="wp-block-columns alignwide are-vertically-aligned-center is-layout-flex wp-container-core-columns-is-layout-43efaee5 wp-block-columns-is-layout-flex" style="padding-right:var(--wp--preset--spacing--60);padding-left:var(--wp--preset--spacing--60)">
<div class="wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:85%">
<h3 class="wp-block-heading has-text-align-left" id="h-have-an-upcoming-project-dmc-can-help-you-take-the-next-step">Kicking off a Vision Inspection project? DMC can help you take the next step!</h3>



<p class="has-text-align-left wp-block-paragraph" id="h-need-help-turning-ideas-into-outcomes-automation-project-to-the-next-level-contact-us-today-to-learn-more-about-our-solutions-and-how-we-can-help-you-achieve-your-goals">Contact DMC&#8217;s <a href="https://static.dmcinfo.com/services/test-and-measurement-automation/">Test &amp; Measurement</a> team today to learn more about our experience in <a href="https://static.dmcinfo.com/services/manufacturing-automation-and-intelligence/vision-inspection/" id="494">vision inspection systems</a> and how we can help you achieve your goals.</p>
</div>



<div class="wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:15%">
<div class="wp-block-buttons is-horizontal is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-2236275c wp-block-buttons-is-layout-flex">
<div class="wp-block-button is-style-fill"><a class="wp-block-button__link has-base-contrast-color has-text-color has-link-color wp-element-button" href="https://static.dmcinfo.com/contact/">Contact Us</a></div>
</div>
</div>
</div>
</div>
<p>The post <a href="https://static.dmcinfo.com/blog/46368/ai-real-time-vision-inspection-python-optimization/">3 Ways AI Improves Real-Time Vision Inspection with Python</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Azure AI: Computer Vision Solutions</title>
		<link>https://static.dmcinfo.com/blog/36209/azure-ai-computer-vision-solutions/</link>
		
		<dc:creator><![CDATA[Riley Spering]]></dc:creator>
		<pubDate>Tue, 22 Jul 2025 20:20:01 +0000</pubDate>
				<category><![CDATA[Application Development]]></category>
		<category><![CDATA[Azure]]></category>
		<category><![CDATA[AI]]></category>
		<guid isPermaLink="false">https://static.dmcinfo.com/?p=36209</guid>

					<description><![CDATA[<p>Computer vision refers to artificial intelligence systems that can perceive the world visually. These systems can be applied to camera input, images, or video. There are several problems that can be solved with the help of Azure’s AI Vision Service. With both facial recognition and optical character recognition the possibilities are endless!&#160; At DMC, we [&#8230;]</p>
<p>The post <a href="https://static.dmcinfo.com/blog/36209/azure-ai-computer-vision-solutions/">Azure AI: Computer Vision Solutions</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Computer vision refers to artificial intelligence systems that can perceive the world visually. These systems can be applied to camera input, images, or video. There are several problems that can be solved with the help of Azure’s AI Vision Service. With both facial recognition and optical character recognition the possibilities are endless!&nbsp;</p>



<p class="wp-block-paragraph">At DMC, we pride ourselves on our technical skillset. AI solutions are just a part of our <a href="https://static.dmcinfo.com/services/application-development">application development services</a>. From IoT solutions to custom software from scratch, we are ready to tackle any project that comes our way. In this post, we will introduce the fundamentals of Azure AI Vision, facial recognition, and optical character recognition. We will also talk about what an AI Vision solution might look like from DMC.&nbsp;</p>



<figure class="wp-block-image size-full"><img decoding="async" width="488" height="291" src="https://static.dmcinfo.com/wp-content/uploads/2025/07/azure-ai-vision-diagram.png" alt="Azure AI Vision Diagram" class="wp-image-39172" srcset="https://static.dmcinfo.com/wp-content/uploads/2025/07/azure-ai-vision-diagram.png 488w, https://static.dmcinfo.com/wp-content/uploads/2025/07/azure-ai-vision-diagram-300x179.png 300w" sizes="(max-width: 488px) 100vw, 488px" /></figure>



<h2 id="h-what-is-azure-ai-vision-nbsp" class="wp-block-heading">What is Azure AI Vision?&nbsp;</h2>



<p class="wp-block-paragraph">Creating solutions that can “see” the world and interpret it is a core area of artificial intelligence. Computers don’t exactly have eyes, but they are capable of processing info from videos, images, or live camera feeds.&nbsp;</p>



<p class="wp-block-paragraph">The architecture for computer vision models is complex and requires <strong>significant </strong>amounts of training and resources to perform at a high level, i.e. identify objects correctly with confidence. With Azure AI Vision, we can create complex models much quicker and easier than producing one from scratch. While these existing models can be functional out of the box, we can build on top of them to create <strong>custom models</strong> that fit your exact needs!&nbsp;</p>



<p class="wp-block-paragraph">Using these models can be done with ease by provisioning an Azure AI Vision resource in an Azure Subscription, which allows us to use the Azure Portal to easily manage and modify your AI solution.&nbsp;</p>



<h2 id="h-what-can-azure-ai-vision-do-nbsp" class="wp-block-heading">What Can Azure AI Vision Do?&nbsp;</h2>



<p class="wp-block-paragraph">Azure AI Vision offers several image analysis capabilities which include:&nbsp;</p>



<ul class="wp-block-list">
<li>Extracting text from images using Optical Character Recognition (OCR)&nbsp;</li>



<li>Generating captions and descriptions of images&nbsp;</li>



<li>Common object detection&nbsp;</li>



<li>Tagging visual features&nbsp;</li>



<li>Detecting and recognizing faces&nbsp;</li>
</ul>



<p class="wp-block-paragraph">Let’s dive deeper into these capabilities, starting with the ones that fall under facial recognition.&nbsp;</p>



<figure class="wp-block-image size-full"><img decoding="async" width="494" height="456" src="https://static.dmcinfo.com/wp-content/uploads/2025/07/Azure-AI-facial-recognition-diagram.png" alt="Azure AI facial recognition diagram" class="wp-image-39173" srcset="https://static.dmcinfo.com/wp-content/uploads/2025/07/Azure-AI-facial-recognition-diagram.png 494w, https://static.dmcinfo.com/wp-content/uploads/2025/07/Azure-AI-facial-recognition-diagram-300x277.png 300w" sizes="(max-width: 494px) 100vw, 494px" /></figure>



<h2 id="h-facial-recognition-nbsp" class="wp-block-heading">Facial Recognition&nbsp;</h2>



<p class="wp-block-paragraph">Facial recognition is one of the most powerful capabilities of Azure AI Vision, enabling systems to detect, analyze, and identify human faces in images or video feeds. This technology has a wide range of applications, from enhancing security systems to personalizing user experiences. Azure AI Vision provides robust facial recognition tools that are both accurate and easy to integrate into custom solutions.&nbsp;</p>



<h3 id="h-how-facial-recognition-works-nbsp" class="wp-block-heading">How Facial Recognition Works&nbsp;</h3>



<p class="wp-block-paragraph">Azure’s facial recognition capabilities rely on sophisticated machine learning models that analyze facial features in images or video frames. These models detect faces by identifying key landmarks, such as the eyes, nose, and mouth, and then generate a unique facial signature based on these features. The process involves several key steps that ascend in complexity:&nbsp;</p>



<ul class="wp-block-list">
<li><strong>Face Detection</strong>: Identifies the presence of faces in an image or video and determines their locations within the input</li>



<li><strong>Facial Attribute Analysis</strong>: Extracts attributes like age, gender, facial hair, or even emotional expressions (e.g., happy, sad, neutral)</li>



<li><strong>Face Identification</strong>: Matches detected faces against a database of known faces to identify individuals to a known group</li>



<li><strong>Face Verification</strong>: Confirms whether two faces belong to the same person by comparing their facial signatures</li>
</ul>



<p class="wp-block-paragraph">Azure AI Vision’s facial recognition APIs make it simple to integrate these capabilities into applications. The service also supports real-time analysis, making it ideal for applications like live surveillance or interactive kiosks.&nbsp;</p>



<h3 id="h-use-cases-for-facial-recognition" class="wp-block-heading">Use Cases for Facial Recognition</h3>



<p class="wp-block-paragraph">Facial recognition opens a variety of possibilities for businesses and organizations. Some potential use cases include:&nbsp;</p>



<ul class="wp-block-list">
<li><strong>Security and Access Control</strong>: Implementing facial recognition for secure building access or device unlocking, replacing traditional keycards or passwords</li>



<li><strong>Retail and Marketing</strong>: Analyzing customer demographics and emotions in stores to tailor marketing campaigns or improve customer experience</li>



<li><strong>Event Management</strong>: Streamlining check-in processes at events by identifying attendees through facial recognition</li>
</ul>



<p class="wp-block-paragraph">At DMC, we are confident in our ability to leverage Azure’s facial recognition capabilities to build tailored solutions for clients across industries. Whether it’s enhancing security protocols or creating personalized customer interactions, our team is equipped to fine-tune these models to meet specific requirements while ensuring high accuracy and reliability.&nbsp;</p>



<figure class="wp-block-image size-full"><img decoding="async" width="497" height="193" src="https://static.dmcinfo.com/wp-content/uploads/2025/07/Azure-OCR-diagram.png" alt="Azure OCR diagram" class="wp-image-39174" srcset="https://static.dmcinfo.com/wp-content/uploads/2025/07/Azure-OCR-diagram.png 497w, https://static.dmcinfo.com/wp-content/uploads/2025/07/Azure-OCR-diagram-300x116.png 300w" sizes="(max-width: 497px) 100vw, 497px" /></figure>



<h2 id="h-optical-character-recognition-ocr-nbsp" class="wp-block-heading">Optical Character Recognition (OCR)&nbsp;</h2>



<p class="wp-block-paragraph">Optical Character Recognition (OCR) is another cornerstone of Azure AI Vision, enabling systems to extract text from images, scanned documents, or video feeds. This capability is designed for digitizing physical documents, automating data entry, and making content searchable. Azure’s OCR technology is highly accurate and supports a wide range of languages and formats, making it a versatile tool for our clients.&nbsp;</p>



<h3 id="h-how-ocr-works-nbsp" class="wp-block-heading">How OCR Works&nbsp;</h3>



<p class="wp-block-paragraph">Azure’s OCR functionality, powered by the Read API, processes images or PDFs and converts text within them into machine-readable data. The process involves:&nbsp;</p>



<ul class="wp-block-list">
<li><strong>Text Detection</strong>: Identifying regions in an image that contain text, regardless of orientation or font style</li>



<li><strong>Text Recognition</strong>: Converting detected text into digital characters, preserving formatting where possible</li>



<li><strong>Language Support</strong>: Recognizing text in multiple languages, including handwritten and printed text</li>



<li><strong>Layout Analysis</strong>: Understanding the structure of the document, such as paragraphs, tables, or lists, to maintain context&nbsp;</li>
</ul>



<p class="wp-block-paragraph">The Read API is designed to handle complex scenarios, such as noisy images, low-resolution scans, or text in mixed languages. Developers can easily integrate OCR into applications by calling the API and receiving structured JSON output containing the extracted text and its coordinates.&nbsp;</p>



<h3 id="h-advanced-ocr-features-nbsp" class="wp-block-heading">Advanced OCR Features&nbsp;</h3>



<p class="wp-block-paragraph">Azure AI Vision’s OCR goes beyond basic text extraction. Some advanced features include:&nbsp;</p>



<ul class="wp-block-list">
<li><strong>Handwritten Text Recognition</strong>: Extracting text from handwritten notes or forms, which is particularly useful for industries like healthcare or education</li>



<li><strong>Form Recognition</strong>: Automatically extracting key-value pairs from structured documents like invoices, receipts, or IDs&nbsp;</li>



<li><strong>Multi-Page Document Processing</strong>: Handling large documents, such as contracts or reports, with consistent accuracy across pages</li>



<li><strong>Real-Time OCR</strong>: Processing live camera feeds to extract text instantly, ideal for applications like license plate recognition</li>
</ul>



<h3 id="h-use-cases-for-ocr-nbsp" class="wp-block-heading">Use Cases for OCR&nbsp;</h3>



<p class="wp-block-paragraph">OCR is a game-changer for organizations looking to streamline operations and reduce manual work. Some practical applications include:&nbsp;</p>



<ul class="wp-block-list">
<li><strong>Document Digitization</strong>: Converting paper-based records, such as medical charts or legal contracts, into searchable digital formats</li>



<li><strong>Automated Data Entry</strong>: Extracting information from invoices, receipts, or forms to populate databases without human intervention</li>



<li><strong>Accessibility</strong>: Enabling text-to-speech systems to read printed text aloud for visually impaired users</li>



<li><strong>Logistics and Transportation</strong>: Reading shipping labels or license plates in real time to improve supply chain efficiency</li>
</ul>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="990" height="502" src="https://static.dmcinfo.com/wp-content/uploads/2025/07/azure-computer-vision.png" alt="azure computer vision" class="wp-image-39177" style="width:544px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2025/07/azure-computer-vision.png 990w, https://static.dmcinfo.com/wp-content/uploads/2025/07/azure-computer-vision-300x152.png 300w, https://static.dmcinfo.com/wp-content/uploads/2025/07/azure-computer-vision-768x389.png 768w" sizes="(max-width: 990px) 100vw, 990px" /></figure>



<h2 id="h-real-world-solution-enhancing-security-with-azure-ai-vision" class="wp-block-heading">Real-World Solution: Enhancing Security with Azure AI Vision</h2>



<p class="wp-block-paragraph">To illustrate the power of Azure AI Vision, let’s explore a high-level example of how DMC could leverage this technology to solve a security problem for a client.&nbsp;</p>



<h3 id="h-the-challenge" class="wp-block-heading">The Challenge</h3>



<p class="wp-block-paragraph">A large corporate campus with multiple buildings wants to enhance its security measures and streamline access control. The client faces two key issues:&nbsp;</p>



<ol class="wp-block-list">
<li><strong>Unauthorized Access</strong>: The current keycard-based system is vulnerable to lost or stolen cards, allowing potential unauthorized entry to sensitive areas.&nbsp;</li>



<li><strong>Incident Reporting</strong>: Manual logging of security incidents, such as identifying individuals in surveillance footage, is time-consuming and prone to errors.&nbsp;</li>
</ol>



<h3 id="h-the-solution" class="wp-block-heading">The Solution</h3>



<p class="wp-block-paragraph">DMC proposes a comprehensive Azure AI Vision solution that combines facial recognition, OCR, and object detection to address these security challenges. The solution includes:&nbsp;</p>



<p class="wp-block-paragraph"><strong>Secure Access Control</strong>: Using Azure’s Face API, the system verifies employee identities at entry points by matching their faces against a secure database of authorized personnel. The system operates in real time, granting or denying access within seconds.&nbsp;</p>



<p class="wp-block-paragraph"><strong>Automated Incident Logging</strong>: Azure’s OCR capabilities are integrated into a security management platform that processes surveillance footage and incident reports. The system extracts text from identification documents or name badges captured in footage, cross-referencing with employee records to log incidents accurately. Object detection identifies potential security threats, such as unrecognized items in restricted areas.&nbsp;</p>



<p class="wp-block-paragraph"><strong>Security Analytics Dashboard</strong>: A centralized dashboard provides real-time insights into access logs and incident reports, powered by Azure’s facial recognition and OCR data. Security teams can monitor entry patterns, flag suspicious activities, and generate reports for compliance audits.&nbsp;</p>



<h3 id="h-implementation" class="wp-block-heading">Implementation</h3>



<p class="wp-block-paragraph">To build this solution, DMC provisions an Azure AI Vision resource within the client’s Azure Subscription. The development process includes:&nbsp;</p>



<ul class="wp-block-list">
<li><strong>Custom Model Training</strong>: Fine-tuning Azure’s facial recognition models with a dataset of employee images (with consent) to ensure high accuracy in identification under various lighting and angle conditions</li>



<li><strong>OCR Integration</strong>: Configuring the Read API to extract text from identification documents, badges, or signage in surveillance footage, supporting multiple formats and orientations</li>



<li><strong>Object Detection</strong>: Training a custom object detection model to recognize specific items (e.g., bags, devices) that may pose security risks</li>



<li><strong>Security Platform Development</strong>: Building a web or desktop platform that integrates the Face API, Read API, and object detection models, with a user-friendly interface for security personnel</li>



<li><strong>Security and Compliance</strong>: Implementing end-to-end encryption for all data, including facial signatures and extracted text, and ensuring compliance with privacy regulations according to state and federal guidelines. Human-in-the-loop oversight is incorporated, allowing security staff to review and intervene in real-time decisions.</li>
</ul>



<h3 id="h-benefits-nbsp" class="wp-block-heading">Benefits&nbsp;</h3>



<p class="wp-block-paragraph">The solution delivers measurable results for the corporate client:&nbsp;</p>



<ul class="wp-block-list">
<li><strong>Enhanced Security</strong>: Facial recognition ensures only authorized personnel access restricted areas, minimizing risks from lost or stolen keycards.&nbsp;</li>



<li><strong>Operational Efficiency</strong>: Automated incident logging reduces manual work and improves the accuracy of security reports.&nbsp;</li>



<li><strong>Proactive Monitoring</strong>: Real-time analytics enable security teams to detect and respond to potential threats quickly.&nbsp;</li>



<li><strong>Scalability</strong>: The Azure-based solution can be expanded to additional campus locations or integrated with other security systems.&nbsp;</li>
</ul>



<h2 id="h-ethical-considerations-nbsp" class="wp-block-heading">Ethical Considerations&nbsp;</h2>



<p class="wp-block-paragraph">While facial recognition and image analysis is a powerful tool, it’s important to address ethical considerations. Privacy, consent, and data security are critical when deploying these solutions. Azure AI Vision adheres to strict compliance standards, and at DMC, we prioritize responsible AI practices, ensuring that facial recognition systems are implemented transparently and with user consent. As a registered partner with Microsoft, we are committed to responsible AI practices in deploying both facial recognition and OCR solutions in accordance with their general guidelines.&nbsp;&nbsp;</p>



<p class="wp-block-paragraph">We ensure responsible use and integration of visual AI solutions by:&nbsp;</p>



<ul class="wp-block-list">
<li>Thoroughly assessing Azure AI Vision’s capabilities to ensure they align with client needs, while performing sufficient testing to understand its capabilities and limitations</li>



<li>Respecting individuals’ privacy by collecting data only with explicit consent and using it solely for authorized purposes</li>



<li>Incorporating human-in-the-loop oversight to enable real-time intervention, maintaining human decision-making to prevent harm</li>



<li>Prioritizing security through robust controls to protect data integrity and prevent unauthorized access</li>
</ul>



<p class="wp-block-paragraph">More information on <a href="https://learn.microsoft.com/en-us/azure/foundry/responsible-ai/computer-vision/image-analysis-guidance-for-integration" type="link" id="https://learn.microsoft.com/en-us/azure/foundry/responsible-ai/computer-vision/image-analysis-guidance-for-integration" target="_blank" rel="noreferrer noopener">Microsoft’s guidelines on responsible used of AI Image Analysis</a> can be found in their documentation provided.&nbsp;</p>



<h2 id="h-why-dmc" class="wp-block-heading">Why DMC?</h2>



<p class="wp-block-paragraph">At DMC, we combine technical expertise with a deep understanding of our clients’ business needs. Our experience with Azure AI Vision allows us to deliver tailored solutions that drive real value. Whether it’s enhancing customer experiences, automating processes, or unlocking new insights, we’re ready to help our clients succeed.&nbsp;</p>



<h2 id="h-let-s-recap" class="wp-block-heading">Let’s Recap</h2>



<p class="wp-block-paragraph">Azure AI Vision is a transformative technology that empowers businesses to “see” and understand the world in new ways. With capabilities like facial recognition and OCR, it opens endless possibilities for innovation. At DMC, we’re passionate about harnessing these tools to solve complex challenges and deliver measurable results. From automation to agriculture, our team is equipped to build custom AI solutions across industries that meet your unique needs. </p>



<div class="wp-block-group alignwide has-custom-light-blue-background-color has-background is-layout-flow wp-container-core-group-is-layout-dbd34961 wp-block-group-is-layout-flow" style="border-radius:20px;margin-top:var(--wp--preset--spacing--50);margin-bottom:var(--wp--preset--spacing--50);padding-top:var(--wp--preset--spacing--50);padding-right:0;padding-bottom:var(--wp--preset--spacing--50);padding-left:0">
<div class="wp-block-columns alignwide are-vertically-aligned-center is-layout-flex wp-container-core-columns-is-layout-43efaee5 wp-block-columns-is-layout-flex" style="padding-right:var(--wp--preset--spacing--60);padding-left:var(--wp--preset--spacing--60)">
<div class="wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:85%">
<h3 class="wp-block-heading has-text-align-left" id="h-have-an-upcoming-project-dmc-can-help-you-take-the-next-step">Unlock the Power of Azure AI Vision and Transform Your Data.</h3>



<p class="has-text-align-left wp-block-paragraph" id="h-need-help-turning-ideas-into-outcomes-automation-project-to-the-next-level-contact-us-today-to-learn-more-about-our-solutions-and-how-we-can-help-you-achieve-your-goals">DMC&#8217;s <a href="https://static.dmcinfo.com/services/application-development/" data-type="page" data-id="434">Application Development</a> experts can leverage Azure AI Vision, computer vision, and general <a href="https://static.dmcinfo.com/services/manufacturing-automation-and-intelligence/ai-and-data-analytics/" data-type="page" data-id="698">AI capabilities</a> to automate processes and uncover actionable insights.</p>
</div>



<div class="wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:15%">
<div class="wp-block-buttons is-horizontal is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-2236275c wp-block-buttons-is-layout-flex">
<div class="wp-block-button is-style-fill"><a class="wp-block-button__link has-base-contrast-color has-text-color has-link-color wp-element-button" href="https://static.dmcinfo.com/contact/">Contact Us</a></div>
</div>
</div>
</div>
</div>
<p>The post <a href="https://static.dmcinfo.com/blog/36209/azure-ai-computer-vision-solutions/">Azure AI: Computer Vision Solutions</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Azure AI: Knowledge Mining Solutions</title>
		<link>https://static.dmcinfo.com/blog/36190/azure-ai-knowledge-mining-solutions/</link>
		
		<dc:creator><![CDATA[Riley Spering]]></dc:creator>
		<pubDate>Thu, 03 Jul 2025 08:00:00 +0000</pubDate>
				<category><![CDATA[Application Development]]></category>
		<category><![CDATA[Azure]]></category>
		<category><![CDATA[AI]]></category>
		<guid isPermaLink="false">https://static.dmcinfo.com/?p=36190</guid>

					<description><![CDATA[<p>Knowledge mining is a field of artificial intelligence that pertains to extracting key insights from unorganized data. Like data mining, which finds patterns and correlations, knowledge mining takes things to the next level by also contextualizing knowledge across a wide range of data formats. Azure AI Search allows us to do this on existing knowledge [&#8230;]</p>
<p>The post <a href="https://static.dmcinfo.com/blog/36190/azure-ai-knowledge-mining-solutions/">Azure AI: Knowledge Mining Solutions</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Knowledge mining is a field of artificial intelligence that pertains to extracting key insights from unorganized data. Like data mining, which finds patterns and correlations, knowledge mining takes things to the next level by also contextualizing knowledge across a wide range of data formats. Azure AI Search allows us to do this on existing knowledge bases to help organize and enhance your business.&nbsp;&nbsp;</p>



<p class="wp-block-paragraph">At DMC, we pride ourselves on our vast technology skillset. AI solutions are just a part of our <a href="https://static.dmcinfo.com/services/application-development">application development services</a>. From IoT solutions to custom software from scratch, we are ready to tackle any project that comes our way. In this post, we will introduce the fundamentals of Azure AI Search, AI Enrichment, and Multimodal Search. We will also talk about what an AI Search solution might look like from DMC.&nbsp;</p>



<figure class="wp-block-image size-full"><img decoding="async" width="715" height="512" src="https://static.dmcinfo.com/wp-content/uploads/2025/07/Knowledge-Mining-Microsoft-Azure.png" alt="knowledge mining illustration" class="wp-image-39164" srcset="https://static.dmcinfo.com/wp-content/uploads/2025/07/Knowledge-Mining-Microsoft-Azure.png 715w, https://static.dmcinfo.com/wp-content/uploads/2025/07/Knowledge-Mining-Microsoft-Azure-300x215.png 300w" sizes="(max-width: 715px) 100vw, 715px" /></figure>



<h2 id="h-what-is-azure-ai-search-nbsp" class="wp-block-heading">What is Azure AI Search?&nbsp;</h2>



<p class="wp-block-paragraph">Azure AI Search is a Microsoft-owned and managed, cloud-based service that enables applications to have enterprise-grade information retrieval. The service has the traditional characteristics of a search service, such as indexing, keyword search, and knowledge stores. However, Azure AI search can enhance your search capabilities using AI Enrichment, Multimodal Search, and more! All these features live in the Azure ecosystem, making it easy to scale and apply a secure solution that fits your needs.&nbsp;</p>



<h2 id="h-what-can-azure-ai-search-do-nbsp" class="wp-block-heading">What Can Azure AI Search Do?&nbsp;</h2>



<p class="wp-block-paragraph">Azure AI offers several standard features of a search service, with the addition of AI capabilities. In this article, we will take a deeper look at AI Enrichment and Multimodal Search. Other features exist such as:&nbsp;</p>



<ul class="wp-block-list">
<li>Indexing&nbsp;</li>



<li>Vector and hybrid search&nbsp;</li>



<li>Full-text search&nbsp;</li>



<li>Full Lucene query syntax search&nbsp;</li>



<li>Relevance scoring&nbsp;</li>



<li>Semantic ranking&nbsp;</li>



<li>Knowledge stores&nbsp;</li>
</ul>



<h2 id="h-ai-enrichment" class="wp-block-heading">AI Enrichment</h2>



<p class="wp-block-paragraph">AI Enrichment in the Azure AI Search service takes raw, unstructured data and transforms it into structured, searchable content using other Azure AI Services such as Computer Vision and Language Processing. What this means is that we can take inputs, such as PDFs and text files, and extract meaningful information from them so they can be accurately retrieved in response to a search query.&nbsp;</p>



<h3 id="h-how-ai-enrichment-works" class="wp-block-heading">How AI Enrichment Works</h3>



<figure class="wp-block-image size-full"><img decoding="async" width="625" height="222" src="https://static.dmcinfo.com/wp-content/uploads/2025/07/ai-enrichment-png-webp-628A_226-10-15-2025_12_14_PM-1.png" alt="Diagram of how AI enrichment works" class="wp-image-39167" srcset="https://static.dmcinfo.com/wp-content/uploads/2025/07/ai-enrichment-png-webp-628A_226-10-15-2025_12_14_PM-1.png 625w, https://static.dmcinfo.com/wp-content/uploads/2025/07/ai-enrichment-png-webp-628A_226-10-15-2025_12_14_PM-1-300x107.png 300w" sizes="(max-width: 625px) 100vw, 625px" /></figure>



<p class="wp-block-paragraph">The process for AI Enrichment can be broken down into three phases:&nbsp;</p>



<ol class="wp-block-list">
<li>Date Importing&nbsp;</li>



<li>Enrichment and Indexing&nbsp;</li>



<li>Output Exploration</li>
</ol>



<p class="wp-block-paragraph"><strong>Data Importing </strong>is the step where an indexer connects a data source with unstructured documents and pulls them into the search service.&nbsp;</p>



<p class="wp-block-paragraph"><strong>Enrichment and Indexing </strong>is the largest and most complex step of the process. Enrichment starts with the indexer opening files and extracting key data from them, such as dates, keywords, or any other customizable entities. During this process, an “enriched” version of the document is created. This enriched document can either be temporary or stored for future reuse. The indexer then applies field mappings, which are paths between the source data and search index. We also create a path between the enriched data and search index.&nbsp;</p>



<p class="wp-block-paragraph">In the final step, <strong>Output Exploration</strong>, we start to see the end goal of setting up this service, which is to be able to navigate a previously unsearchable data source. This can appear in the form of a simple search bar or passed onto a chatbot that can dynamically retrieve the enriched data and present it in a user-friendly, conversational format.&nbsp;&nbsp;</p>



<h3 id="h-use-cases-for-ai-enrichment" class="wp-block-heading">Use Cases for AI Enrichment</h3>



<ul class="wp-block-list">
<li><strong>Knowledge Management</strong>: Extract entities and key phrases from internal documents to support advanced search</li>



<li><strong>Customer Support</strong>: Enrich support tickets with metadata to improve query routing</li>



<li><strong>Research Analysis</strong>: Process academic papers or reports to extract insights for searchable archives</li>
</ul>



<h2 id="h-multimodal-search" class="wp-block-heading">Multimodal Search</h2>



<p class="wp-block-paragraph">Multimodal search is the ability to ingest, understand, and retrieve information across multiple content types, including text, images, video, and audio. This enables us to search using more diverse methods such as similarity search and hybrid queries, which we will talk about more in this section.&nbsp;&nbsp;</p>



<h3 id="h-how-multimodal-search-works" class="wp-block-heading">How Multimodal Search Works</h3>



<p class="wp-block-paragraph">Multimodal Search uses AI to vectorize and index non-text content, enabling similarity search and hybrid queries. The process involves the following steps:&nbsp;</p>



<ol class="wp-block-list">
<li>Content Ingestion&nbsp;</li>



<li>Vectorization&nbsp;</li>



<li>Index Storage&nbsp;</li>



<li>Query Processing&nbsp;</li>
</ol>



<p class="wp-block-paragraph"><strong>Content Ingestion </strong>is where we extract data from text, images, PDFs, and more via indexers.&nbsp;&nbsp;</p>



<p class="wp-block-paragraph"><strong>Vectorization </strong>uses AI models to convert unstructured content into vectors. Vectors are used to capture semantic or visual features of data. They are essential in getting accurate return results when querying for non-text elements, such as visual features.&nbsp;</p>



<p class="wp-block-paragraph">The process of storing the vectors and their associated metadata for fast retrieval is the <strong>Index Storage </strong>step.&nbsp;</p>



<p class="wp-block-paragraph">Finally, <strong>Query Processing </strong>is where a user’s search input is matched against relevant vectors so that semantically similar results can be returned.&nbsp;&nbsp;</p>



<p class="wp-block-paragraph">So, what is the end goal of multimodal search? While the overall goal is to expand your organization’s knowledge sharing and storage capabilities, the two primary added features are similarity searches and hybrid queries.</p>



<h4 id="h-similarity-search" class="wp-block-heading">Similarity Search</h4>



<p class="wp-block-paragraph">This technique leverages vector embeddings to find content that is conceptually or visually like a query, rather than relying solely on exact keyword matches. For example, a user uploading an image of a red dress can retrieve similar dresses based on visual features like color and style, even if the textual descriptions differ. Similarity search enables semantic and visual matching across diverse data types.&nbsp;</p>



<h4 id="h-hybrid-queries" class="wp-block-heading">Hybrid Queries</h4>



<p class="wp-block-paragraph">Multimodal Search supports hybrid queries that combine similarity search with traditional keyword search for more comprehensive results. By merging results using <a href="https://learn.microsoft.com/en-us/azure/search/hybrid-search-ranking" target="_blank" rel="noreferrer noopener">Reciprocal Rank Fusion</a>, Azure AI Search ensures that both semantic relevance and exact matches are considered. For instance, a query like “blue sneakers” can retrieve results based on both the text description and vectorized images of sneakers, providing a balanced and highly relevant output.&nbsp;</p>



<p class="wp-block-paragraph">With these two query processing features, an application can answer questions like &#8220;What is the process to approve a purchase order?&#8221; even when the only description of the process lives inside an embedded diagram in a PDF file.&nbsp;</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="804" height="516" src="https://static.dmcinfo.com/wp-content/uploads/2025/07/query-processing.png" alt="diagram of query processing" class="wp-image-36215" style="width:500px;height:auto" srcset="https://static.dmcinfo.com/wp-content/uploads/2025/07/query-processing.png 804w, https://static.dmcinfo.com/wp-content/uploads/2025/07/query-processing-300x193.png 300w, https://static.dmcinfo.com/wp-content/uploads/2025/07/query-processing-768x493.png 768w" sizes="(max-width: 804px) 100vw, 804px" /></figure>



<h3 id="h-use-cases-for-multimodal-search-nbsp" class="wp-block-heading">Use Cases for Multimodal Search&nbsp;</h3>



<ul class="wp-block-list">
<li><strong>Conversational AI</strong>: Enable chatbots to answer queries using text, images, or PDFs from a knowledge base&nbsp;</li>



<li><strong>E-Commerce</strong>: Allow users to upload product images to retrieve descriptions or reviews</li>



<li><strong>Healthcare</strong>: Query medical images and patient records for diagnostics</li>



<li><strong>Media Analysis</strong>: Search video or audio archives alongside text for comprehensive insights</li>
</ul>



<h2 id="h-real-world-solution-enhancing-a-knowledge-base-using-azure-ai-search" class="wp-block-heading">Real-World Solution: Enhancing a Knowledge Base using Azure AI Search</h2>



<p class="wp-block-paragraph">To demonstrate the power of Azure AI Search, let’s explore a high-level example of how DMC could leverage this technology to solve a knowledge organization problem for a client.&nbsp;</p>



<h3 id="h-the-challenge" class="wp-block-heading">The Challenge</h3>



<p class="wp-block-paragraph">A multinational consulting firm needs a search solution to help consultants quickly access industry trends, regulations, and internal best practices. Their knowledge base includes thousands of PDFs, images, and internal reports across multiple languages, but traditional search tools deliver irrelevant results and struggle with non-text data. This leads to countless hours spent manually searching documents, impacting productivity and client response times.&nbsp;</p>



<h3 id="h-the-solution" class="wp-block-heading">The Solution</h3>



<p class="wp-block-paragraph">DMC proposes that the firm implement Azure AI Search with AI Enrichment and Multimodal Search to create an intelligent search platform. By enriching and vectorizing their knowledge base, this enables consultants to retrieve accurate, contextually relevant content using text or image queries, streamlining research and improving client outcomes. This solution would include:&nbsp;</p>



<p class="wp-block-paragraph"><strong>Complete Knowledge Base Ingestion: </strong>Using Azure’s pre-built indexers vectorize and index a pre-existing knowledge base to make it easier to navigate.&nbsp;</p>



<p class="wp-block-paragraph"><strong>Enhanced Data Retrieval: </strong>With AI Enrichment and Multimodal Search, the search service can quickly and accurately retrieve information based off a query.&nbsp;</p>



<h3 id="h-implementation" class="wp-block-heading">Implementation</h3>



<p class="wp-block-paragraph">To build this solution, DMC provisions an Azure AI Search resource within the client’s Azure subscription. The development process includes:&nbsp;</p>



<ul class="wp-block-list">
<li><strong>Data Ingestion</strong>&nbsp;
<ul class="wp-block-list">
<li>Store PDFs, images, and reports in Azure Blob Storage, ingested via Azure AI Search indexers</li>
</ul>
</li>



<li><strong>AI Enrichment Pipeline</strong>&nbsp;
<ul class="wp-block-list">
<li>Apply Optical Character Recognition (OCR) to extract text from scanned PDFs and images (e.g., charts, infographics)&nbsp;</li>



<li>Use entity recognition to tag regulations, companies, and dates in documents</li>



<li>Employee translation skills to index multilingual content for global teams</li>
</ul>
</li>



<li><strong>Multimodal Search Setup</strong>&nbsp;
<ul class="wp-block-list">
<li>Vectorized images and text using Azure OpenAI and Computer Vision models</li>



<li>Configured hybrid search to combine keyword and vector queries for comprehensive retrieval</li>
</ul>
</li>



<li><strong>Deployment</strong>&nbsp;
<ul class="wp-block-list">
<li>Integrate the search solution into the firm’s internal portal using Azure SDKs, supporting text and image-based queries</li>
</ul>
</li>
</ul>



<h3 id="h-benefits" class="wp-block-heading">Benefits</h3>



<ul class="wp-block-list">
<li><strong>Improved Relevance</strong>: Semantic ranking and vector search increases result accuracy</li>



<li><strong>Time Savings</strong>: Reduced research time by accessing insights via intuitive searches&nbsp;</li>



<li><strong>Multimodal Flexibility</strong>: Image-based queries (e.g., uploading a chart) can now retrieve related documents, enhancing usability</li>



<li><strong>Global Accessibility</strong>: Multilingual indexing supports seamless search for international teams</li>



<li><strong>Scalability</strong>: Using Azure as the foundation, the service can scale easily with the firm’s needs and goals</li>
</ul>



<h2 id="h-responsible-ai" class="wp-block-heading">Responsible AI</h2>



<p class="wp-block-paragraph">AI Enrichment and Multimodal Search rely on Azure AI models (e.g., Computer Vision, Language Service, Azure OpenAI) that may process personal or sensitive information.&nbsp;&nbsp;</p>



<p class="wp-block-paragraph">To uphold privacy and fairness, it is essential to consider the following:&nbsp;</p>



<ul class="wp-block-list">
<li>Ensure input data complies with applicable privacy laws and regulations. Avoid processing sensitive personal data without explicit consent or legal basis.&nbsp;</li>



<li>AI models may inadvertently reflect biases in training data, potentially affecting entity recognition or image analysis. Regularly evaluate outputs for fairness and adjust configurations (e.g., custom skills or filters) to minimize biased results.&nbsp;</li>



<li>Clearly communicate to users when AI-generated outputs, such as extracted entities or vectorized content, are used in search results, ensuring they understand the role of AI.&nbsp;</li>
</ul>



<p class="wp-block-paragraph">See the information on Microsoft’s guidelines on <a href="https://learn.microsoft.com/en-us/legal/search/transparency-note?context=%2Fazure%2Fsearch%2Fcontext%2Fcontext&amp;tabs=enrichment" type="link" id="https://learn.microsoft.com/en-us/legal/search/transparency-note?context=%2Fazure%2Fsearch%2Fcontext%2Fcontext&amp;tabs=enrichment" target="_blank" rel="noreferrer noopener">responsible use of AI Search</a>.&nbsp;</p>



<h2 id="h-why-dmc-nbsp" class="wp-block-heading">Why DMC?&nbsp;</h2>



<p class="wp-block-paragraph">At DMC, we blend our years of expertise with the Azure ecosystem with a client-centric approach to deliver transformative cloud-based solutions. Our deep knowledge base enables us to craft tailored platforms that unlock actionable insights and streamline operations. As a <a href="https://static.dmcinfo.com/about/partners/microsoft-solutions-partner/">Microsoft Solutions Partner</a>, we are committed to responsible AI practices. We ensure ethical, secure, and scalable solutions that align with your business goals, empowering you to stay ahead and succeed.&nbsp;</p>



<h2 id="h-let-s-recap" class="wp-block-heading">Let’s Recap</h2>



<p class="wp-block-paragraph">Azure AI Search is a powerful platform for intelligent search that uses AI Enrichment and Multimodal Search. AI Enrichment processes unstructured data into searchable, structured content, enabling applications like knowledge management and multilingual search. Multimodal Search extends this to images and audio, supporting cross-modal retrieval with similarity search and hybrid queries. Responsible AI practices ensure ethical use by addressing privacy, bias, and accuracy concerns. In our real-world example, a consulting firm could leverage these features to build an efficient search solution, boosting productivity and client satisfaction. For organizations seeking to unify diverse data and enhance discovery, Azure AI Search delivers expert results.&nbsp;</p>



<p class="wp-block-paragraph">At DMC, we’re passionate about harnessing these tools to solve complex challenges and deliver measurable results.</p>



<div class="wp-block-group alignwide has-custom-light-blue-background-color has-background is-layout-flow wp-container-core-group-is-layout-dbd34961 wp-block-group-is-layout-flow" style="border-radius:20px;margin-top:var(--wp--preset--spacing--50);margin-bottom:var(--wp--preset--spacing--50);padding-top:var(--wp--preset--spacing--50);padding-right:0;padding-bottom:var(--wp--preset--spacing--50);padding-left:0">
<div class="wp-block-columns alignwide are-vertically-aligned-center is-layout-flex wp-container-core-columns-is-layout-43efaee5 wp-block-columns-is-layout-flex" style="padding-right:var(--wp--preset--spacing--60);padding-left:var(--wp--preset--spacing--60)">
<div class="wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:85%">
<h3 class="wp-block-heading has-text-align-left" id="h-have-an-upcoming-project-dmc-can-help-you-take-the-next-step"><strong>Unlock Answers Faster with AI-Powered Search.</strong></h3>



<p class="has-text-align-left wp-block-paragraph" id="h-need-help-turning-ideas-into-outcomes-automation-project-to-the-next-level-contact-us-today-to-learn-more-about-our-solutions-and-how-we-can-help-you-achieve-your-goals">From document enrichment to multimodal search experiences, DMC&#8217;s <a href="https://static.dmcinfo.com/services/application-development/" data-type="page" data-id="434">Application Development</a> expert creates solutions that improve productivity. Learn more about our <a href="https://static.dmcinfo.com/services/digital-workplace-solutions/microsoft-azure-cloud-solutions-and-services/" data-type="page" data-id="734">Azure</a> capabilities.</p>
</div>



<div class="wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:15%">
<div class="wp-block-buttons is-horizontal is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-2236275c wp-block-buttons-is-layout-flex">
<div class="wp-block-button is-style-fill"><a class="wp-block-button__link has-base-contrast-color has-text-color has-link-color wp-element-button" href="https://static.dmcinfo.com/contact/">Contact Us</a></div>
</div>
</div>
</div>
</div>
<p>The post <a href="https://static.dmcinfo.com/blog/36190/azure-ai-knowledge-mining-solutions/">Azure AI: Knowledge Mining Solutions</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Streamlining Embedded Systems Development with ChatGPT</title>
		<link>https://static.dmcinfo.com/blog/15739/streamlining-embedded-systems-development-with-chatgpt/</link>
		
		<dc:creator><![CDATA[Jake Kelley]]></dc:creator>
		<pubDate>Mon, 20 Jan 2025 17:48:17 +0000</pubDate>
				<category><![CDATA[Embedded Development & Programming]]></category>
		<category><![CDATA[AI]]></category>
		<guid isPermaLink="false">https://static.dmcinfo.com/blog/15739/streamlining-embedded-systems-development-with-chatgpt/</guid>

					<description><![CDATA[<p>As an embedded software engineer and consultant, time is critical in embedded systems engineering. Faster development, debugging and testing lead to greater productivity and cost savings. Over time, I’ve discovered that spending just five minutes with ChatGPT can save me hours. In this blog, I’ll share how I use ChatGPT to streamline my programming workflow [&#8230;]</p>
<p>The post <a href="https://static.dmcinfo.com/blog/15739/streamlining-embedded-systems-development-with-chatgpt/">Streamlining Embedded Systems Development with ChatGPT</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">As an embedded software engineer and consultant, time is critical in embedded systems engineering. Faster development, debugging and testing lead to greater productivity and cost savings. Over time, I’ve discovered that spending just five minutes with ChatGPT can save me hours. In this blog, I’ll share how I use ChatGPT to streamline my programming workflow and how you can too.</p>



<h2 id="h-why-chatgpt-is-a-valuable-tool-for-embedded-systems-engineers" class="wp-block-heading">Why ChatGPT is a Valuable Tool for Embedded Systems Engineers</h2>



<h3 id="h-time-savings-benefits" class="wp-block-heading">Time-Savings Benefits</h3>



<p class="wp-block-paragraph">Embedded systems engineers often find themselves running command-line applications repeatedly, frequently changing parameters or values. ChatGPT can help automate these workflows with Python or other scripting languages. It saves a significant amount of time by quickly generating the code. It’s particularly useful for creating easy-to-use GUIs that both you and your collaborators can interact with seamlessly. This is especially true with IOT applications that are likely to have Wi-Fi or BLE to easily interact with your computer.</p>



<h3 id="h-answer-obscure-questions" class="wp-block-heading">Answer Obscure Questions</h3>



<p class="wp-block-paragraph">In embedded systems, I often encounter obscure questions that a simple Google search may not easily resolve. While the information is likely out there, it can be time-consuming to sift through multiple pages of search results. Instead, I turn to ChatGPT. It often provides a clear and concise answer in seconds to even the most obscure questions about embedded systems libraries, functionalities, or tools.</p>



<h3 id="h-increased-efficiency" class="wp-block-heading">Increased Efficiency</h3>



<p class="wp-block-paragraph">When faced with an algorithm or calculation that would take several minutes to write manually, ChatGPT can help you save time. Describe the function in a sentence or two, and ChatGPT will generate the code including the outputs within the same function.</p>



<h2 id="h-important-considerations-when-using-chatgpt" class="wp-block-heading">Important Considerations When Using ChatGPT</h2>



<p class="wp-block-paragraph">While ChatGPT is a great resource, it’s important to be mindful of a few key points.</p>



<h3 id="h-1-lack-of-awareness-of-your-ongoing-efforts" class="wp-block-heading"><strong>1. Lack of Awareness of Your Ongoing Efforts</strong></h3>



<p class="wp-block-paragraph">ChatGPT doesn’t inherently understand your project’s context unless explicitly told. For example, while working on a Python GUI using ChatGPT for a video frame analyzer, I assumed that holding down the &#8220;next frame&#8221; button would fast-forward through the video.This is something I’m accustomed to in modern interfaces. However, holding down the button simply brought me to the next frame. After I specifically asked for this feature, ChatGPT provided me with updated functional code.</p>



<h3 id="h-2-works-best-as-an-input-to-output-solution" class="wp-block-heading"><strong>2. Works Best as an Input-to-Output Solution</strong></h3>



<p class="wp-block-paragraph">Think of ChatGPT as an elevator— provide a clear, specific request, and it will take you directly to your desired floor. But if you overload it with too many requests at once, you risk stopping at every floor along the way. To get the most efficient results, break your tasks into smaller, manageable chunks, test the output at each step, and refine as needed. This step-by-step approach ensures you reach your goal smoothly and effectively.</p>



<h3 id="h-3-requires-some-technical-knowledge-for-troubleshooting" class="wp-block-heading"><strong>3. Requires Some Technical Knowledge for Troubleshooting</strong></h3>



<p class="wp-block-paragraph">ChatGPT’s solutions are often accurate, but they may need refinement. If you encounter errors, your technical expertise becomes crucial. By providing error messages, clarifying unexpected behavior, or hypothesizing potential causes, you can guide ChatGPT to improve its suggestions effectively.</p>



<h3 id="h-4-falling-into-rabbit-holes" class="wp-block-heading"><strong>4. Falling Into Rabbit Holes</strong></h3>



<p class="wp-block-paragraph">While ChatGPT is a great troubleshooting tool, its suggestions may not always work as expected. You might spend time trying multiple plausible fixes that don’t resolve the issue, leading to frustration. It’s crucial to recognize when this happens, step back, and explore alternative solutions. ChatGPT can generate helpful ideas, but it is fallible and may require you to pivot or revisit the problem from a new angle.</p>



<h3 id="h-5-outdated-solutions" class="wp-block-heading"><strong>5. Outdated Solutions</strong></h3>



<p class="wp-block-paragraph">One important thing to keep in mind when using ChatGPT for embedded systems work is that its knowledge is based on information up until its last update. This means it may sometimes suggest solutions that are outdated or no longer relevant, especially in fields like embedded systems where tools, libraries, and platforms evolve rapidly.</p>



<p class="wp-block-paragraph">For example, when working with newer kernel versions on platforms like Raspberry Pi, I have seen important configuration files relocated, but ChatGPT still suggests solutions based on older configurations. This can lead to frustration if you&#8217;re trying to apply outdated practices to a more recent environment. As a result, it’s essential to stay on top of the latest updates for your development tools and platforms, verifying ChatGPT&#8217;s suggestions against current documentation to avoid wasting time on solutions that no longer apply.</p>



<h3 id="h-6-maintain-confidentiality-with-proprietary-information" class="wp-block-heading"><strong>6. Maintain Confidentiality with Proprietary Information</strong></h3>



<p class="wp-block-paragraph">It’s important to understand that ChatGPT, by default, may use your data to improve its AI model. When working with code or documents under an NDA or requiring confidentiality, take steps to protect sensitive information. Replace identifiable details (e.g., project names, client specifics, or unique identifiers) with placeholders, and frame questions using generalized examples to safeguard proprietary content.</p>



<h2 id="h-practical-uses-how-chatgpt-accelerates-embedded-systems-development" class="wp-block-heading">Practical Uses: How ChatGPT Accelerates Embedded Systems Development</h2>



<p class="wp-block-paragraph">Here are practical examples of how I leverage ChatGPT to enhance my embedded systems projects.</p>



<h3 id="h-1-creating-python-guis-to-save-time" class="wp-block-heading"><strong>1. Creating Python GUIs to Save Time</strong></h3>



<p class="wp-block-paragraph">Working with IoT devices often means dealing with clunky command-line interfaces requiring dozens of parameters or outdated tools that slow down development. These challenges become even more apparent when collaborating with clients or non-technical teams, where usability and clarity are key. A simple, intuitive GUI can make a world of difference.</p>



<p class="wp-block-paragraph"><em>Example:</em></p>



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



<p class="wp-block-paragraph">While implementing MQTT for IoT communication, I needed an easy way to start the broker, send predefined messages, and display incoming responses in real time. Using ChatGPT, I quickly generated a Python-based GUI that achieved these goals. The interface featured buttons to trigger common commands like starting and stopping recording, fields to customize message payloads, and a real-time log for incoming messages.</p>



<p class="wp-block-paragraph">This solution saved significant development time and improved usability for both me and my client. It streamlined testing and debugging by replacing a cumbersome command-line process with a user-friendly, visually intuitive interface. With this approach, I could focus on delivering results while fostering better collaboration.</p>



<h3 id="h-2-automating-tedious-tasks" class="wp-block-heading"><strong>2. Automating Tedious Tasks</strong></h3>



<p class="wp-block-paragraph">On a recent project requiring precise camera synchronization, I needed to fetch and review numerous video files stored on separate embedded Linux devices. Doing this manually via SSH and buggy third-party tools was inefficient.</p>



<p class="wp-block-paragraph"><em>Solution:</em></p>



<blockquote class="is-layout-flow wp-block-quote-is-layout-flow">

<p class="wp-block-paragraph">I used ChatGPT to create a GUI that:</p>




<ul class="wp-block-list">
 

<li>Connected to remote devices via SSH</li>


 

<li>Downloaded the latest video files</li>


 

<li>Displayed all videos synchronously</li>


</ul>


</blockquote>



<p class="wp-block-paragraph">Originally this GUI provided a start and stop button and up to four screens to view the videos. By iteratively refining the GUI with ChatGPT, I also added frame-by-frame navigation for debugging as well as up to eight screens. This greatly improved my workflow and let me iterate on my actual project much faster.</p>



<h3 id="h-3-writing-c-wrappers-for-libraries" class="wp-block-heading"><strong>3. Writing C++ Wrappers for Libraries</strong></h3>



<p class="wp-block-paragraph">One of the biggest challenges in embedded systems is dealing with the highly diverse firmware ecosystems, such as FreeRTOS, Mbed, Zephyr, and others. Each platform has its own strengths and weaknesses, and you may find yourself working in a FreeRTOS environment but wishing you had access to some of Mbed’s powerful networking stack. While the underlying architectures differ, both FreeRTOS and Mbed are well-documented, which makes it easier to bridge the gap with a wrapper.</p>



<p class="wp-block-paragraph"><em>Example:</em></p>



<p class="wp-block-paragraph">I needed Mbed’s threading, mutex, and semaphore features in a FreeRTOS project. I used ChatGPT to generate a wrapper class that allowed me to use Mbed-like functionality within FreeRTOS. With just a simple request, I received a base implementation for the Mbed Thread class, Mutex, and Semaphore, all translated into FreeRTOS-compatible code. While some underlying issues may arise during implementation, this wrapper provided a solid foundation to build on and integrate Mbed-specific features into my FreeRTOS-based device.</p>



<p class="wp-block-paragraph"><em>My prompt:</em></p>



<p class="wp-block-paragraph">&#8220;Write me a wrapper class that uses FreeRTOS but gives me class’s that perfectly mimics Mbed’s threading functions&#8221;</p>



<p class="wp-block-paragraph"><em>ChatGPT’s response:</em></p>



<div class="wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:calc(3 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:flex;align-items:center;padding:16px 0 0 16px;width:100%;text-align:left;background-color:#1e1e1e"><span style="background:#c7c7c7;padding:0.3rem 0.5rem 0.2rem;border-radius:1rem;font-size:0.8em;line-height:1;height:1.25rem;text-align:center;display:inline-flex;align-items:center;justify-content:center;color:#1e1e1e">C</span></span><span role="button" tabindex="0" style="color:#D4D4D4;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>#include "FreeRTOS.h"
#include "task.h"
#include "semphr.h"
 
class Thread {
public:
    // Constructor: Takes a function pointer and optional argument
    Thread(void (*taskFunction)(void*), void* argument = nullptr, const char* name = "Thread", 
           uint16_t stackSize = configMINIMAL_STACK_SIZE, UBaseType_t priority = tskIDLE_PRIORITY)
    {
        xTaskCreate(taskFunction, name, stackSize, argument, priority, &amp;taskHandle);
    }
 
    // Destructor: Deletes the FreeRTOS task
    ~Thread() {
        if (taskHandle != nullptr) {
            vTaskDelete(taskHandle);
        }
    }
 
    // Start the thread (already started in constructor)
    void start() {
        // FreeRTOS tasks start immediately upon creation, so this is typically a no-op
    }
 
    // Join function (Waits for the thread to terminate)
    void join() {
        while (eTaskGetState(taskHandle) != eDeleted) {
            vTaskDelay(1);
        }
    }
 
    // Detach function (make the thread independent)
    void detach() {
        taskHandle = nullptr;
    }
 
    // Static function to yield execution to another thread
    static void yield() {
        taskYIELD();
    }
 
    // Static function to get the thread's id
    static TaskHandle_t get_id() {
        return xTaskGetCurrentTaskHandle();
    }
 
private:
    TaskHandle_t taskHandle;
};
 
// Mbed-style Mutex wrapper using FreeRTOS
class Mutex {
public:
    Mutex() {
        mutexHandle = xSemaphoreCreateMutex();
    }
 
    ~Mutex() {
        vSemaphoreDelete(mutexHandle);
    }
 
    void lock() {
        xSemaphoreTake(mutexHandle, portMAX_DELAY);
    }
 
    void unlock() {
        xSemaphoreGive(mutexHandle);
    }
 
    bool trylock(uint32_t timeout_ms) {
        return xSemaphoreTake(mutexHandle, pdMS_TO_TICKS(timeout_ms)) == pdTRUE;
    }
 
private:
    SemaphoreHandle_t mutexHandle;
};
 
// Mbed-style Semaphore wrapper using FreeRTOS
class Semaphore {
public:
    Semaphore(int max_count, int initial_count) {
        semaphoreHandle = xSemaphoreCreateCounting(max_count, initial_count);
    }
 
    ~Semaphore() {
        vSemaphoreDelete(semaphoreHandle);
    }
 
    void acquire() {
        xSemaphoreTake(semaphoreHandle, portMAX_DELAY);
    }
 
    void release() {
        xSemaphoreGive(semaphoreHandle);
    }
 
    bool try_acquire(uint32_t timeout_ms) {
        return xSemaphoreTake(semaphoreHandle, pdMS_TO_TICKS(timeout_ms)) == pdTRUE;
    }
 
private:
    SemaphoreHandle_t semaphoreHandle;
};</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki dark-plus" style="background-color: #1E1E1E" tabindex="0"><code><span class="line"><span style="color: #C586C0">#include</span><span style="color: #569CD6"> </span><span style="color: #CE9178">&quot;FreeRTOS.h&quot;</span></span>
<span class="line"><span style="color: #C586C0">#include</span><span style="color: #569CD6"> </span><span style="color: #CE9178">&quot;task.h&quot;</span></span>
<span class="line"><span style="color: #C586C0">#include</span><span style="color: #569CD6"> </span><span style="color: #CE9178">&quot;semphr.h&quot;</span></span>
<span class="line"><span style="color: #D4D4D4"> </span></span>
<span class="line"><span style="color: #D4D4D4">class Thread {</span></span>
<span class="line"><span style="color: #D4D4D4">public:</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #6A9955">// Constructor: Takes a function pointer and optional argument</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #DCDCAA">Thread</span><span style="color: #D4D4D4">(</span><span style="color: #569CD6">void</span><span style="color: #D4D4D4"> (*taskFunction)(</span><span style="color: #569CD6">void</span><span style="color: #D4D4D4">*), </span><span style="color: #569CD6">void</span><span style="color: #D4D4D4">* argument = nullptr, </span><span style="color: #569CD6">const</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">char</span><span style="color: #D4D4D4">* name = </span><span style="color: #CE9178">&quot;Thread&quot;</span><span style="color: #D4D4D4">, </span></span>
<span class="line"><span style="color: #D4D4D4">           </span><span style="color: #569CD6">uint16_t</span><span style="color: #D4D4D4"> stackSize = configMINIMAL_STACK_SIZE, </span><span style="color: #4EC9B0">UBaseType_t</span><span style="color: #D4D4D4"> priority = tskIDLE_PRIORITY)</span></span>
<span class="line"><span style="color: #D4D4D4">    {</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #DCDCAA">xTaskCreate</span><span style="color: #D4D4D4">(taskFunction, name, stackSize, argument, priority, &amp;taskHandle);</span></span>
<span class="line"><span style="color: #D4D4D4">    }</span></span>
<span class="line"><span style="color: #D4D4D4"> </span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #6A9955">// Destructor: Deletes the FreeRTOS task</span></span>
<span class="line"><span style="color: #D4D4D4">    ~</span><span style="color: #DCDCAA">Thread</span><span style="color: #D4D4D4">() {</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #C586C0">if</span><span style="color: #D4D4D4"> (taskHandle != nullptr) {</span></span>
<span class="line"><span style="color: #D4D4D4">            </span><span style="color: #DCDCAA">vTaskDelete</span><span style="color: #D4D4D4">(taskHandle);</span></span>
<span class="line"><span style="color: #D4D4D4">        }</span></span>
<span class="line"><span style="color: #D4D4D4">    }</span></span>
<span class="line"><span style="color: #D4D4D4"> </span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #6A9955">// Start the thread (already started in constructor)</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #569CD6">void</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">start</span><span style="color: #D4D4D4">() {</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #6A9955">// FreeRTOS tasks start immediately upon creation, so this is typically a no-op</span></span>
<span class="line"><span style="color: #D4D4D4">    }</span></span>
<span class="line"><span style="color: #D4D4D4"> </span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #6A9955">// Join function (Waits for the thread to terminate)</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #569CD6">void</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">join</span><span style="color: #D4D4D4">() {</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #C586C0">while</span><span style="color: #D4D4D4"> (</span><span style="color: #DCDCAA">eTaskGetState</span><span style="color: #D4D4D4">(taskHandle) != eDeleted) {</span></span>
<span class="line"><span style="color: #D4D4D4">            </span><span style="color: #DCDCAA">vTaskDelay</span><span style="color: #D4D4D4">(</span><span style="color: #B5CEA8">1</span><span style="color: #D4D4D4">);</span></span>
<span class="line"><span style="color: #D4D4D4">        }</span></span>
<span class="line"><span style="color: #D4D4D4">    }</span></span>
<span class="line"><span style="color: #D4D4D4"> </span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #6A9955">// Detach function (make the thread independent)</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #569CD6">void</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">detach</span><span style="color: #D4D4D4">() {</span></span>
<span class="line"><span style="color: #D4D4D4">        taskHandle = nullptr;</span></span>
<span class="line"><span style="color: #D4D4D4">    }</span></span>
<span class="line"><span style="color: #D4D4D4"> </span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #6A9955">// Static function to yield execution to another thread</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #569CD6">static</span><span style="color: #D4D4D4"> </span><span style="color: #569CD6">void</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">yield</span><span style="color: #D4D4D4">() {</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #DCDCAA">taskYIELD</span><span style="color: #D4D4D4">();</span></span>
<span class="line"><span style="color: #D4D4D4">    }</span></span>
<span class="line"><span style="color: #D4D4D4"> </span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #6A9955">// Static function to get the thread&apos;s id</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #569CD6">static</span><span style="color: #D4D4D4"> </span><span style="color: #4EC9B0">TaskHandle_t</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">get_id</span><span style="color: #D4D4D4">() {</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #C586C0">return</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">xTaskGetCurrentTaskHandle</span><span style="color: #D4D4D4">();</span></span>
<span class="line"><span style="color: #D4D4D4">    }</span></span>
<span class="line"><span style="color: #D4D4D4"> </span></span>
<span class="line"><span style="color: #D4D4D4">private:</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #4EC9B0">TaskHandle_t</span><span style="color: #D4D4D4"> taskHandle;</span></span>
<span class="line"><span style="color: #D4D4D4">};</span></span>
<span class="line"><span style="color: #D4D4D4"> </span></span>
<span class="line"><span style="color: #6A9955">// Mbed-style Mutex wrapper using FreeRTOS</span></span>
<span class="line"><span style="color: #D4D4D4">class Mutex {</span></span>
<span class="line"><span style="color: #D4D4D4">public:</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #DCDCAA">Mutex</span><span style="color: #D4D4D4">() {</span></span>
<span class="line"><span style="color: #D4D4D4">        mutexHandle = </span><span style="color: #DCDCAA">xSemaphoreCreateMutex</span><span style="color: #D4D4D4">();</span></span>
<span class="line"><span style="color: #D4D4D4">    }</span></span>
<span class="line"><span style="color: #D4D4D4"> </span></span>
<span class="line"><span style="color: #D4D4D4">    ~</span><span style="color: #DCDCAA">Mutex</span><span style="color: #D4D4D4">() {</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #DCDCAA">vSemaphoreDelete</span><span style="color: #D4D4D4">(mutexHandle);</span></span>
<span class="line"><span style="color: #D4D4D4">    }</span></span>
<span class="line"><span style="color: #D4D4D4"> </span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #569CD6">void</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">lock</span><span style="color: #D4D4D4">() {</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #DCDCAA">xSemaphoreTake</span><span style="color: #D4D4D4">(mutexHandle, portMAX_DELAY);</span></span>
<span class="line"><span style="color: #D4D4D4">    }</span></span>
<span class="line"><span style="color: #D4D4D4"> </span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #569CD6">void</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">unlock</span><span style="color: #D4D4D4">() {</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #DCDCAA">xSemaphoreGive</span><span style="color: #D4D4D4">(mutexHandle);</span></span>
<span class="line"><span style="color: #D4D4D4">    }</span></span>
<span class="line"><span style="color: #D4D4D4"> </span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #569CD6">bool</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">trylock</span><span style="color: #D4D4D4">(</span><span style="color: #569CD6">uint32_t</span><span style="color: #D4D4D4"> timeout_ms) {</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #C586C0">return</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">xSemaphoreTake</span><span style="color: #D4D4D4">(mutexHandle, </span><span style="color: #DCDCAA">pdMS_TO_TICKS</span><span style="color: #D4D4D4">(timeout_ms)) == pdTRUE;</span></span>
<span class="line"><span style="color: #D4D4D4">    }</span></span>
<span class="line"><span style="color: #D4D4D4"> </span></span>
<span class="line"><span style="color: #D4D4D4">private:</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #4EC9B0">SemaphoreHandle_t</span><span style="color: #D4D4D4"> mutexHandle;</span></span>
<span class="line"><span style="color: #D4D4D4">};</span></span>
<span class="line"><span style="color: #D4D4D4"> </span></span>
<span class="line"><span style="color: #6A9955">// Mbed-style Semaphore wrapper using FreeRTOS</span></span>
<span class="line"><span style="color: #D4D4D4">class Semaphore {</span></span>
<span class="line"><span style="color: #D4D4D4">public:</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #DCDCAA">Semaphore</span><span style="color: #D4D4D4">(</span><span style="color: #569CD6">int</span><span style="color: #D4D4D4"> max_count, </span><span style="color: #569CD6">int</span><span style="color: #D4D4D4"> initial_count) {</span></span>
<span class="line"><span style="color: #D4D4D4">        semaphoreHandle = </span><span style="color: #DCDCAA">xSemaphoreCreateCounting</span><span style="color: #D4D4D4">(max_count, initial_count);</span></span>
<span class="line"><span style="color: #D4D4D4">    }</span></span>
<span class="line"><span style="color: #D4D4D4"> </span></span>
<span class="line"><span style="color: #D4D4D4">    ~</span><span style="color: #DCDCAA">Semaphore</span><span style="color: #D4D4D4">() {</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #DCDCAA">vSemaphoreDelete</span><span style="color: #D4D4D4">(semaphoreHandle);</span></span>
<span class="line"><span style="color: #D4D4D4">    }</span></span>
<span class="line"><span style="color: #D4D4D4"> </span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #569CD6">void</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">acquire</span><span style="color: #D4D4D4">() {</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #DCDCAA">xSemaphoreTake</span><span style="color: #D4D4D4">(semaphoreHandle, portMAX_DELAY);</span></span>
<span class="line"><span style="color: #D4D4D4">    }</span></span>
<span class="line"><span style="color: #D4D4D4"> </span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #569CD6">void</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">release</span><span style="color: #D4D4D4">() {</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #DCDCAA">xSemaphoreGive</span><span style="color: #D4D4D4">(semaphoreHandle);</span></span>
<span class="line"><span style="color: #D4D4D4">    }</span></span>
<span class="line"><span style="color: #D4D4D4"> </span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #569CD6">bool</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">try_acquire</span><span style="color: #D4D4D4">(</span><span style="color: #569CD6">uint32_t</span><span style="color: #D4D4D4"> timeout_ms) {</span></span>
<span class="line"><span style="color: #D4D4D4">        </span><span style="color: #C586C0">return</span><span style="color: #D4D4D4"> </span><span style="color: #DCDCAA">xSemaphoreTake</span><span style="color: #D4D4D4">(semaphoreHandle, </span><span style="color: #DCDCAA">pdMS_TO_TICKS</span><span style="color: #D4D4D4">(timeout_ms)) == pdTRUE;</span></span>
<span class="line"><span style="color: #D4D4D4">    }</span></span>
<span class="line"><span style="color: #D4D4D4"> </span></span>
<span class="line"><span style="color: #D4D4D4">private:</span></span>
<span class="line"><span style="color: #D4D4D4">    </span><span style="color: #4EC9B0">SemaphoreHandle_t</span><span style="color: #D4D4D4"> semaphoreHandle;</span></span>
<span class="line"><span style="color: #D4D4D4">};</span></span></code></pre></div>



<p class="wp-block-paragraph">This wrapper gave me a great starting point, saving hours of manual coding and research.</p>



<h2 id="h-key-takeaways" class="wp-block-heading">Key Takeaways</h2>



<p class="wp-block-paragraph">ChatGPT is a game-changer for embedded systems development when used wisely. Here’s how you can maximize its benefits:</p>



<ul class="wp-block-list">
<li><strong>Be Specific: </strong>Define your problem clearly to guide ChatGPT effectively</li>



<li><strong>Iterate: </strong>Break complex tasks into smaller, manageable chunks</li>



<li><strong>Validate: </strong>Always test and review ChatGPT’s suggestions</li>



<li><strong>Leverage Your Expertise: </strong>Combine your technical knowledge with ChatGPT’s output for optimal results</li>
</ul>



<p class="wp-block-paragraph">By incorporating ChatGPT into your embedded development workflow, you can significantly enhance productivity, streamline development, and tackle tedious tasks more effectively.</p>



<div class="wp-block-group alignwide has-custom-light-blue-background-color has-background is-layout-flow wp-container-core-group-is-layout-dbd34961 wp-block-group-is-layout-flow" style="border-radius:20px;margin-top:var(--wp--preset--spacing--50);margin-bottom:var(--wp--preset--spacing--50);padding-top:var(--wp--preset--spacing--50);padding-right:0;padding-bottom:var(--wp--preset--spacing--50);padding-left:0">
<div class="wp-block-columns alignwide are-vertically-aligned-center is-layout-flex wp-container-core-columns-is-layout-43efaee5 wp-block-columns-is-layout-flex" style="padding-right:var(--wp--preset--spacing--60);padding-left:var(--wp--preset--spacing--60)">
<div class="wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:85%">
<h3 class="wp-block-heading has-text-align-left" id="h-have-an-upcoming-project-dmc-can-help-you-take-the-next-step"><strong>From AI-Assisted Development to Embedded Deployment</strong>.</h3>



<p class="has-text-align-left wp-block-paragraph" id="h-need-help-turning-ideas-into-outcomes-automation-project-to-the-next-level-contact-us-today-to-learn-more-about-our-solutions-and-how-we-can-help-you-achieve-your-goals">Learn more about our <a href="https://static.dmcinfo.com/services/embedded-development-and-embedded-programming/" data-type="page" data-id="431">Embedded Development</a> solutions for accelerating Linux, FreeRTOS, MQTT, Python, and advancing our <a href="https://static.dmcinfo.com/services/embedded-development-and-embedded-programming/iot-solutions/" data-type="page" data-id="704">IOT</a> expertise.</p>
</div>



<div class="wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:15%">
<div class="wp-block-buttons is-horizontal is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-2236275c wp-block-buttons-is-layout-flex">
<div class="wp-block-button is-style-fill"><a class="wp-block-button__link has-base-contrast-color has-text-color has-link-color wp-element-button" href="https://static.dmcinfo.com/contact/">Contact Us</a></div>
</div>
</div>
</div>
</div>
<p>The post <a href="https://static.dmcinfo.com/blog/15739/streamlining-embedded-systems-development-with-chatgpt/">Streamlining Embedded Systems Development with ChatGPT</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Creating Custom AI Tools to Analyze LabVIEW Code</title>
		<link>https://static.dmcinfo.com/blog/16249/creating-custom-ai-tools-to-analyze-labview-code/</link>
		
		<dc:creator><![CDATA[Fadil Eledath]]></dc:creator>
		<pubDate>Wed, 05 Jun 2024 14:25:52 +0000</pubDate>
				<category><![CDATA[LabVIEW]]></category>
		<category><![CDATA[Test and Measurement Automation]]></category>
		<category><![CDATA[AI]]></category>
		<guid isPermaLink="false">https://static.dmcinfo.com/blog/16249/creating-custom-ai-tools-to-analyze-labview-code/</guid>

					<description><![CDATA[<p>In the field of test and measurement&#160;we do tons of work with NI hardware and software. Clients often lean on DMC engineers as experts of the NI stack to help them figure out what’s going wrong and how to make things right with their test systems. Hardware experts don&#8217;t always have hours of time to [&#8230;]</p>
<p>The post <a href="https://static.dmcinfo.com/blog/16249/creating-custom-ai-tools-to-analyze-labview-code/">Creating Custom AI Tools to Analyze LabVIEW Code</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">In the field of <a href="https://static.dmcinfo.com/services/test-and-measurement-automation">test and measurement</a>&nbsp;we do tons of work with NI hardware and software. Clients often lean on DMC engineers as experts of the NI stack to help them figure out what’s going wrong and how to make things right with their test systems.</p>



<p class="wp-block-paragraph">Hardware experts don&#8217;t always have hours of time to invest in staying updated on the latest in LabVIEW like we do at DMC. Understandably, this can result in code that doesn’t follow standard architecture or best practices.</p>



<p class="wp-block-paragraph">We&#8217;ve seen every kind of graphical code structure under the sun. It takes time to follow the hundreds of wires and many parallel loops to figure out what makes a program behave the way that it does.</p>



<p class="wp-block-paragraph"><p align="center"><img decoding="async" alt="" height="362" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/pepe-labview.png" width="482"><br>
Me analyzing LabVIEW code for the first time</p></p>



<h2 id="h-using-openai-and-labview" class="wp-block-heading">Using OpenAI and LabVIEW</h2>



<p class="wp-block-paragraph">Text-based languages have benefitted from recent advancements&nbsp;in tools used to analyze and write code&nbsp;like Python with tools like GitHub Copilot. NI has been hard at work too, as evidenced by their recent demo of <a href="https://www.youtube.com/live/Bk-dmXEp5xk?si=7aURtiBINJvDBGEg&amp;t=3070">Nigel</a>, but they haven’t yet released it.</p>



<p class="wp-block-paragraph">In the meantime, I thought I could try something rudimentary to achieve a similar outcome using the GPT API from OpenAI with a few tricks to make it work on VI files (files for LabVIEW written in their G language). I wanted to see if I could use GPT to describe LabVIEW code.</p>



<p class="wp-block-paragraph">Here are the steps:</p>



<ol class="wp-block-list">
<li>Convert the LabVIEW graphical code to text-based code.</li>



<li>Pass the text-based code to GPT and ask it to analyze the code.</li>
</ol>



<h2 id="h-converting-graphical-code-to-text-based-code" class="wp-block-heading">Converting Graphical Code to Text-Based Code</h2>



<p class="wp-block-paragraph">Step 1 basically describes a transpiler which is a compiler that takes code in one language and produces equivalent code in a target language, though as we’ll see that’s easier said than done. For my purposes, I decided to target Python-like code&nbsp;since it isn’t strictly typed and would let me get away with leaving out a lot of information about data types. It’s also likely that GPT is trained on tons of Python code and trying to use a language more equivalent to LabVIEW code would mean implementing more programming constructs in the transpiler or creating a proprietary intermediary language as NI has been doing with Nigel.</p>



<p class="wp-block-paragraph">The first major hurdle is the fact that LabVIEW code isn’t written as a series of sequential statements.&nbsp;Instead, it is a data-flow language which uses “wires” to transfer information from block to block. This makes it especially great for simple-looking implementations of multi-threaded applications but annoying for our purposes. Luckily, this construct maps well onto the concept of computational graphs and we can try to move from code to a more abstract graph to make our life simpler. We can think of LabVIEW code as a “directed acyclic graph” with a set of start nodes (controls) and end nodes (indicators) connected by edges (wires).</p>



<p class="wp-block-paragraph"><p align="center"><img decoding="async" alt="" height="245" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Untitled-Diagram_drawio2.png" width="454"></p></p>



<p class="wp-block-paragraph">But how do we convert LabVIEW code to a computational graph? Using VI Scripting of course! NI has a library of tools that lets you find all instances of a specified type of LabVIEW programming construct and if we look for all wires and note what pair of objects each one joins, we can build our graph.</p>



<p class="wp-block-paragraph"><p align="center"><img decoding="async" alt="" height="347" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/VISight-Snippet.png" width="1112"></p></p>



<p class="wp-block-paragraph">We then take the graph and use a custom scheduler algorithm to create a sequence of operations for each of the code blocks and finally use the metadata of each wire’s two terminals to provide some additional data in the transpiled code.</p>



<p class="wp-block-paragraph"><p style="text-align: center;"><img decoding="async" alt="" height="517" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Screenshot-2024-05-09-161224.png" width="339"> &nbsp;&nbsp;<img decoding="async" alt="" height="517" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/Screenshot-2024-05-09-161333.png" width="329"></p></p>



<h2 id="h-ask-gpt-to-analyze-the-code" class="wp-block-heading">Ask GPT to Analyze the Code</h2>



<p class="wp-block-paragraph">Add in some logic to avoid accidentally using the variable names in multiple places using UIDs and we’re basically done! All we do now is ask GPT to describe the code in terms of what it represents and not the actual variables themselves and we have a crude AI-powered VI analysis tool.</p>



<p class="wp-block-paragraph"><p style="text-align: center;"><img decoding="async" alt="" height="110" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/GPT-prompt_1.png" width="654"></p></p>



<p class="wp-block-paragraph"><p style="text-align: center;"><img decoding="async" alt="" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/VISight.gif"></p></p>



<p class="wp-block-paragraph">Except that it doesn’t work for:</p>



<ul class="wp-block-list">
<li>For loops</li>



<li>While loops</li>



<li>Broken code</li>



<li>Cases where there are orphaned blocks</li>



<li>Feedback loops</li>



<li>Analyzing sub-VIs</li>



<li>Etc.</li>
</ul>



<p class="wp-block-paragraph">You get the idea. Perhaps with a more structured approach to VI scripting and fine-tuning with example code, it might be possible to get more out of this idea, but I think this serves as a useful demo to see what might one day possible!</p>



<div class="wp-block-group alignwide has-custom-light-blue-background-color has-background is-layout-flow wp-container-core-group-is-layout-dbd34961 wp-block-group-is-layout-flow" style="border-radius:20px;margin-top:var(--wp--preset--spacing--50);margin-bottom:var(--wp--preset--spacing--50);padding-top:var(--wp--preset--spacing--50);padding-right:0;padding-bottom:var(--wp--preset--spacing--50);padding-left:0">
<div class="wp-block-columns alignwide are-vertically-aligned-center is-layout-flex wp-container-core-columns-is-layout-43efaee5 wp-block-columns-is-layout-flex" style="padding-right:var(--wp--preset--spacing--60);padding-left:var(--wp--preset--spacing--60)">
<div class="wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:85%">
<h3 class="wp-block-heading has-text-align-left" id="h-have-an-upcoming-project-dmc-can-help-you-take-the-next-step"><strong>Bring AI-Powered Analysis to LabVIEW Code</strong>.</h3>



<p class="has-text-align-left wp-block-paragraph" id="h-need-help-turning-ideas-into-outcomes-automation-project-to-the-next-level-contact-us-today-to-learn-more-about-our-solutions-and-how-we-can-help-you-achieve-your-goals">See more about our <a href="https://static.dmcinfo.com/services/test-and-measurement-automation/" data-type="page" data-id="428">Test &amp; Measurement</a> capabilities and <a href="https://static.dmcinfo.com/services/test-and-measurement-automation/labview-programming/" data-type="page" data-id="584">LabVIEW</a> solutions for code analysis, architecture evaluation, and custom AI tool development.</p>
</div>



<div class="wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:15%">
<div class="wp-block-buttons is-horizontal is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-2236275c wp-block-buttons-is-layout-flex">
<div class="wp-block-button is-style-fill"><a class="wp-block-button__link has-base-contrast-color has-text-color has-link-color wp-element-button" href="https://static.dmcinfo.com/contact/">Contact Us</a></div>
</div>
</div>
</div>
</div>
<p>The post <a href="https://static.dmcinfo.com/blog/16249/creating-custom-ai-tools-to-analyze-labview-code/">Creating Custom AI Tools to Analyze LabVIEW Code</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>The Future of Test and Measurement and NI Connect 2024</title>
		<link>https://static.dmcinfo.com/blog/16254/the-future-of-test-and-measurement-and-ni-connect-2024/</link>
		
		<dc:creator><![CDATA[Steven Dusing]]></dc:creator>
		<pubDate>Thu, 30 May 2024 10:24:08 +0000</pubDate>
				<category><![CDATA[Battery Pack Test Systems]]></category>
		<category><![CDATA[LabVIEW]]></category>
		<category><![CDATA[Test and Measurement Automation]]></category>
		<category><![CDATA[2024]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[Battery]]></category>
		<category><![CDATA[Connect]]></category>
		<category><![CDATA[NI]]></category>
		<category><![CDATA[Test]]></category>
		<guid isPermaLink="false">https://static.dmcinfo.com/blog/16254/the-future-of-test-and-measurement-and-ni-connect-2024/</guid>

					<description><![CDATA[<p>NI Connect 2024 was a highlight event this year&#160;for the Test and Measurement industry that brought together major thought leaders to share insights, forge connections, and celebrate innovation. Let’s dive into the key takeaways!&#160; Solving the Challenges of Battery Production and Remanufacturing Test At NI Connect, DMC had the privilege of showcasing our cutting-edge battery [&#8230;]</p>
<p>The post <a href="https://static.dmcinfo.com/blog/16254/the-future-of-test-and-measurement-and-ni-connect-2024/">The Future of Test and Measurement and NI Connect 2024</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><p aria-level="2" lang="EN-US" paraeid="{0daae977-df12-4d0c-86d3-eac046759b3e}{195}" paraid="486709785" role="heading" xml:lang="EN-US">NI Connect 2024 was a highlight event this year&nbsp;for the Test and Measurement industry that brought together major thought leaders to share insights, forge connections, and celebrate innovation. Let’s dive into the key takeaways!&nbsp;</p></p>



<h2 class="wp-block-heading" paraeid="{755f097e-b8fc-42c2-be66-de357aeba079}{192}" paraid="197224372">Solving the Challenges of Battery Production and Remanufacturing Test</h2>



<p class="wp-block-paragraph">At NI Connect, DMC had the privilege of showcasing our cutting-edge battery production and remanufacturing test innovations at our exhibit in the Battery Production Test booth. We deeply appreciate the valuable input from our customers, which has allowed us to develop solutions that directly addresses the common pain points we frequently hear about from conference attendees. Scalability and openness to the test platform are core principles of DMC’s Battery Pack Test (BPT) solution, ensuring it meets the dynamic needs of the industry. If you are encountering similar challenges with you battery pack or module testing, explore our&nbsp;<a href="https://static.dmcinfo.com/services/test-and-measurement-automation/battery-pack-and-bms-test-systems/" type="page" id="611">Battery Test page</a> to learn how we can assist you-from consulting to full system integration.</p>



<p class="wp-block-paragraph"><p paraeid="{755f097e-b8fc-42c2-be66-de357aeba079}{192}" paraid="197224372"><a href="https://static.dmcinfo.com/bpt" rel="noreferrer noopener" target="_blank"><img decoding="async" alt="" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/bpt-test-1.jpg"></a>&nbsp;</p></p>



<p class="wp-block-paragraph"><p lang="EN-US" paraeid="{cadaf326-5568-4613-bc67-a1fb3fd21b07}{250}" paraid="1193331433" xml:lang="EN-US">The DMC Battery Pack Test (BPT) System is designed by DMC’s Battery Test experts, leveraging almost two decades’ worth of battery test experience. It is a highly capable pack and module testing solution that enhances test coverage and scales with your organization. Some notable features include:&nbsp;</p></p>



<ul class="wp-block-list" role="list">
 

<li aria-setsize="-1" data-aria-level="1" data-aria-posinset="1" data-font="Symbol" data-leveltext="" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559683&quot;:0,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" data-listid="2" role="listitem">
 

<p class="wp-block-paragraph" lang="EN-US" paraeid="{ff14f694-fd71-40ac-9b07-bf48695f3c71}{156}" paraid="1039660669" xml:lang="EN-US"><strong>Open Platform</strong>: Built on NI TestStand, the BPT offers a truly open platform for managing test recipes that allows customers to fully own and adapt the solution to meet emerging technology requirements.&nbsp;</p>


 </li>


 

<li aria-setsize="-1" data-aria-level="1" data-aria-posinset="2" data-font="Symbol" data-leveltext="" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559683&quot;:0,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" data-listid="2" role="listitem">
 

<p class="wp-block-paragraph" lang="EN-US" paraeid="{27ecf7c7-efa1-4bb1-9044-bc79ab588eef}{64}" paraid="1431753318" xml:lang="EN-US"><strong>User-Centric Station Operation</strong>: Intuitive workflows ensure consistent daily production operation with minimal interaction with the software.&nbsp;</p>


 </li>


 

<li aria-setsize="-1" data-aria-level="1" data-aria-posinset="3" data-font="Symbol" data-leveltext="" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559683&quot;:0,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" data-listid="2" role="listitem">
 

<p class="wp-block-paragraph" lang="EN-US" paraeid="{ff14f694-fd71-40ac-9b07-bf48695f3c71}{181}" paraid="1887772042" xml:lang="EN-US"><strong>Role-Based Access Controls</strong>: Screen and feature access are controlled based on roles.&nbsp;</p>


 </li>


 

<li aria-setsize="-1" data-aria-level="1" data-aria-posinset="4" data-font="Symbol" data-leveltext="" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559683&quot;:0,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" data-listid="2" role="listitem">
 

<p class="wp-block-paragraph" lang="EN-US" paraeid="{ff14f694-fd71-40ac-9b07-bf48695f3c71}{203}" paraid="1051916234" xml:lang="EN-US"><strong>Flexible Configurations</strong>: The BPT can be deployed in one station rack module or decomposed into multiple station modules for optimized cycle times and throughput.&nbsp;</p>


 </li>


 

<li aria-setsize="-1" data-aria-level="1" data-aria-posinset="5" data-font="Symbol" data-leveltext="" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559683&quot;:0,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" data-listid="2" role="listitem">
 

<p class="wp-block-paragraph" lang="EN-US" paraeid="{ff14f694-fd71-40ac-9b07-bf48695f3c71}{225}" paraid="1957501939" xml:lang="EN-US"><strong>Complete Traceability</strong>: Continuous data acquisition (DAQ) provides traceability and visualization.&nbsp;</p>


 </li>


 

<li aria-setsize="-1" data-aria-level="1" data-aria-posinset="6" data-font="Symbol" data-leveltext="" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559683&quot;:0,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" data-listid="2" role="listitem">
 

<p class="wp-block-paragraph" lang="EN-US" paraeid="{ff14f694-fd71-40ac-9b07-bf48695f3c71}{247}" paraid="347503605" xml:lang="EN-US"><strong>Integration with MES/SCADA Systems</strong>: Seamlessly integrates with your manufacturing execution system (MES) or supervisory control and data acquisition (SCADA) system.&nbsp;</p>


 </li>


 

<li aria-setsize="-1" data-aria-level="1" data-aria-posinset="7" data-font="Symbol" data-leveltext="" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559683&quot;:0,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" data-listid="2" role="listitem">
 

<p class="wp-block-paragraph" lang="EN-US" paraeid="{5a9c01b3-493b-4e6d-b41c-5eca54eb2dee}{36}" paraid="1053708680" xml:lang="EN-US"><strong>Data Analytics</strong> via NI SystemLink or custom database plugin: Enables data analysis and insights.&nbsp;</p>


 </li>


 

<li aria-setsize="-1" data-aria-level="1" data-aria-posinset="8" data-font="Symbol" data-leveltext="" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559683&quot;:0,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" data-listid="2" role="listitem">
 

<p class="wp-block-paragraph" lang="EN-US" paraeid="{5a9c01b3-493b-4e6d-b41c-5eca54eb2dee}{58}" paraid="63313656" xml:lang="EN-US"><strong>IT-Synced User Permissions Management</strong>: Ensures secure access.&nbsp;</p>


 </li>


 

<li aria-setsize="-1" data-aria-level="1" data-aria-posinset="9" data-font="Symbol" data-leveltext="" data-list-defn-props="{&quot;335552541&quot;:1,&quot;335559683&quot;:0,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}" data-listid="2" role="listitem">
 

<p class="wp-block-paragraph" lang="EN-US" paraeid="{5a9c01b3-493b-4e6d-b41c-5eca54eb2dee}{80}" paraid="2049338100" xml:lang="EN-US"><strong>Soft-Front Panel HMIs</strong>: Allows manual device control and diagnostics.</p>


 </li>


</ul>



<p class="wp-block-paragraph"><p lang="EN-US" paraeid="{ff14f694-fd71-40ac-9b07-bf48695f3c71}{124}" paraid="256196202" xml:lang="EN-US">DMC also took part in a joint presentation with NI on <strong>Advanced Battery Cell Testing Techniques</strong>, highlighting the work we&#8217;re currently doing to help our customers scale battery cell testing with NI&#8217;s latest technology.</p></p>



<p class="wp-block-paragraph"><p lang="EN-US" paraeid="{ff14f694-fd71-40ac-9b07-bf48695f3c71}{124}" paraid="256196202" xml:lang="EN-US"><img decoding="async" alt="" src="https://static.dmcinfo.com/wp-content/uploads/2025/05/celltest-1.jpg"></p></p>



<h2 class="wp-block-heading" paraeid="{82c6fb8b-fdcf-477e-b971-9af32ecafbd9}{192}" paraid="1618063845">Celebrating Partnerships and Connections</h2>



<p class="wp-block-paragraph"><p lang="EN-US" paraeid="{66f94d94-30f8-4c0f-83b8-22b14ec90827}{186}" paraid="2118412941" xml:lang="EN-US">NI Connect 2024 was more than just a conference; it was a celebration of the strong bonds formed between colleagues, partners, and clients. Amidst great dinners, social events, and learning opportunities, the DMC team took a moment to recognize the strong partnership we’ve shared with NI for over 25 years. This partnership has been instrumental in helping our mutual customers solve challenging technical problems in a variety of industries. Some key themes to our partnership as I see them are:</p></p>



<p class="wp-block-paragraph"><p lang="EN-US" paraeid="{66f94d94-30f8-4c0f-83b8-22b14ec90827}{212}" paraid="1806673984" xml:lang="EN-US"><em><strong>Expertise and Solutions:</strong></em> DMC, recognized as an NI Preferred System Integrator, brings unparalleled NI ecosystem expertise to the table, especially LabVIEW programming. DMC’s role extends beyond writing code; we act as consultants, advising on hardware choices and anticipating future needs. NI’s hardware product offerings combined with DMC’s expertise and software solutions helps our customers get to market faster.&nbsp;</p></p>



<p class="wp-block-paragraph"><p lang="EN-US" paraeid="{66f94d94-30f8-4c0f-83b8-22b14ec90827}{237}" paraid="948661928" xml:lang="EN-US"><em><strong>Investments in Product Offerings: </strong></em>NI continues to invest in both hardware and software, enhancing test workflows and leveraging test data with their latest emphasis on the <a href="https://www.ni.com/en/shop/labview/labview-plus-suite.html" rel="noreferrer noopener" target="_blank">LabVIEW+ Suite</a>. NI’s renewed commitment to their software platforms provides clarity on areas of NI’s investment and enables DMC to focus on forward-looking solutions for our customers, knowing that we have the investment and backing of NI to take on the next challenge. In particular, NI’s focus on AI is opening new doors for the future of what test engineering can look like, and DMC is excited for the new opportunities ahead.&nbsp;</p></p>



<p class="wp-block-paragraph"><p lang="EN-US" paraeid="{92985620-7654-4402-8658-c1a00f8778d8}{52}" paraid="622827821" xml:lang="EN-US"><em><strong>Collaborative Spirit:</strong></em> NI Connect 2024 exemplified the collaborative spirit that drives the industry forward. The strong partnership between NI and DMC is a testament to this spirit, resulting in innovative solutions for customers. NI’s Battery Test Solution for Pack Validation and DMC’s Battery Production Test (BPT) solution are recent examples of DMC and NI collaboration. &nbsp;</p></p>



<p class="wp-block-paragraph"><p lang="EN-US" paraeid="{92985620-7654-4402-8658-c1a00f8778d8}{52}" paraid="622827821" xml:lang="EN-US"><em><strong>Thought Leadership and Educational Lectures: </strong></em>A key feature of NI Connect 2024 was the array of lectures on cutting-edge innovations, providing a platform for thought leadership within the industry. These sessions were not just educational but inspirational at times, offering a glimpse into the technological advancements that are shaping our world. &nbsp;</p></p>



<p class="wp-block-paragraph"><p lang="EN-US" paraeid="{24bd17ae-065a-4884-8827-9a2651c850a0}{223}" paraid="134592618" xml:lang="EN-US">&nbsp;</p></p>



<h2 class="wp-block-heading" lang="EN-US" paraeid="{24bd17ae-065a-4884-8827-9a2651c850a0}{223}" paraid="134592618" xml:lang="EN-US">NI Focus on Generative AI</h2>



<p class="wp-block-paragraph"><p lang="EN-US" paraeid="{24bd17ae-065a-4884-8827-9a2651c850a0}{223}" paraid="134592618" xml:lang="EN-US">Notably, several exciting AI technology integrations were discussed, highlighting how NI is focusing on leveraging AI as a competitive advantage in their product offerings, which will help our customers leverage this cutting edge technology to enhance their business performance. Here are some highlights:&nbsp;</p></p>



<p class="wp-block-paragraph"><p lang="EN-US" paraeid="{c6a7f0b5-a176-425c-b23d-1f5190217013}{22}" paraid="1280507792" xml:lang="EN-US"><em><strong>Analytics Tools (AI and ML): </strong></em>The use of artificial intelligence (AI) and machine learning (ML) in test processes was a hot topic this year. Attendees discovered how these tools can improve yield, enhance product quality, and drive innovation. NI continues to invest in its new AI assistant,&nbsp;NIGEL, expanding capabilities and planning a roadmap that ensures you can leverage the power of AI wherever you need: from the cloud to the edge and anywhere in between.&nbsp;</p></p>



<p class="wp-block-paragraph"><p lang="EN-US" paraeid="{c6a7f0b5-a176-425c-b23d-1f5190217013}{22}" paraid="1280507792" xml:lang="EN-US"><em><strong>Effective Test Data Management:</strong></em> Companies learned strategies for optimizing test data management. By efficiently handling large volumes of data, organizations can make informed decisions and drive better outcomes. Tools like NI SystemLink greatly simplify this task. DMC has lots of experience using SystemLink and can attest to its impact on our customers&#8217; workflows, data analytics, and systems management. AI is certain to play a large role in transforming the utility of this data and rapidly accelerating data analysis capabilities for our customers.</p></p>



<p class="wp-block-paragraph"><p lang="EN-US" paraeid="{ff7bea61-e20c-45ba-88cc-5fce27c17cdc}{160}" paraid="1302352397" xml:lang="EN-US"><em><strong>Python/LabVIEW Integration: </strong></em>Attendees explored Python/LabVIEW integration, allowing seamless collaboration between these two powerful programming languages. This integration streamlines test development and data analysis, enhancing overall efficiency and productivity. Both Python and LabVIEW are getting lots of AI integration investment, making it easier for teams to build sophisticated software in record time. DMC’s multiple service areas, including Test &amp; Measurement and Application Development frequently work together on projects, bringing the best solutions from multiple technologies like LabVIEW and Python together into an integrated solution that leverages the advantages of both. You can check out some of <a href="https://static.dmcinfo.com/latest-thinking/blog/id/10391/advantages-of-net-and-python-for-test-measurement-applications" target="_blank" rel="noreferrer noopener">our latest thinking on using text-based languages for your test projects here</a>. </p></p>



<h2 class="wp-block-heading" lang="EN-US" paraeid="{8835f336-8349-494d-8c58-9bfce8ef6ccd}{230}" paraid="1207031354" xml:lang="EN-US">Final Thoughts</h2>



<p class="wp-block-paragraph"><p lang="EN-US" paraeid="{24bd17ae-065a-4884-8827-9a2651c850a0}{188}" paraid="1011496850" xml:lang="EN-US">NI Connect 2024 was a testament to the power of collaboration and innovation. It was an event where industry leaders could share their vision for the future and where partnerships were strengthened. As we reflect on the success of this year&#8217;s conference, we are reminded of the endless possibilities that lie ahead for technology and innovation. The DMC team, along with our partners at NI, are <span style="background-color: rgb(255, 255, 255);">at the forefront of this journey, providing our expertise and enthusiasm to our customers to help them solve their most challenging problems.  </span></p></p>



<p class="wp-block-paragraph"><p lang="EN-US" paraeid="{1b658db6-658c-4409-b936-c23f1f952c2f}{241}" paraid="1035928709" xml:lang="EN-US">Thanks for reading! We hope to see you next year at NI Connect 2025 in Fort Worth, Texas. &nbsp;</p></p>



<div class="wp-block-group alignwide has-custom-light-blue-background-color has-background is-layout-flow wp-container-core-group-is-layout-dbd34961 wp-block-group-is-layout-flow" style="border-radius:20px;margin-top:var(--wp--preset--spacing--50);margin-bottom:var(--wp--preset--spacing--50);padding-top:var(--wp--preset--spacing--50);padding-right:0;padding-bottom:var(--wp--preset--spacing--50);padding-left:0">
<div class="wp-block-columns alignwide are-vertically-aligned-center is-layout-flex wp-container-core-columns-is-layout-43efaee5 wp-block-columns-is-layout-flex" style="padding-right:var(--wp--preset--spacing--60);padding-left:var(--wp--preset--spacing--60)">
<div class="wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:85%">
<h3 class="wp-block-heading has-text-align-left" id="h-have-an-upcoming-project-dmc-can-help-you-take-the-next-step"><strong>Explore the Future of Test and Measurement</strong></h3>



<p class="has-text-align-left wp-block-paragraph" id="h-need-help-turning-ideas-into-outcomes-automation-project-to-the-next-level-contact-us-today-to-learn-more-about-our-solutions-and-how-we-can-help-you-achieve-your-goals">Learn more about our <a href="https://static.dmcinfo.com/services/test-and-measurement-automation/" data-type="page" data-id="428">Test &amp; Measurement</a> expertise in <a href="https://static.dmcinfo.com/services/test-and-measurement-automation/battery-pack-and-bms-test-systems/" data-type="page" data-id="611">battery testing</a>, NI technologies, AI-powered analytics, and integrated LabVIEW and Python solutions.</p>
</div>



<div class="wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:15%">
<div class="wp-block-buttons is-horizontal is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-2236275c wp-block-buttons-is-layout-flex">
<div class="wp-block-button is-style-fill"><a class="wp-block-button__link has-base-contrast-color has-text-color has-link-color wp-element-button" href="https://static.dmcinfo.com/contact/">Contact Us</a></div>
</div>
</div>
</div>
</div>
<p>The post <a href="https://static.dmcinfo.com/blog/16254/the-future-of-test-and-measurement-and-ni-connect-2024/">The Future of Test and Measurement and NI Connect 2024</a> appeared first on <a href="https://static.dmcinfo.com/">DMC, Inc.</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
