<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:webfeeds="http://webfeeds.org/rss/1.0">
    <channel>
        <title><![CDATA[Workers for LabVIEW Community]]></title>
        <description><![CDATA[Workers for LabVIEW Community]]></description>
        <link>https://community.workersforlabview.io</link>
        <generator>Bettermode RSS Generator</generator>
        <lastBuildDate>Fri, 18 Sep 2026 09:44:42 GMT</lastBuildDate>
        <atom:link href="https://community.workersforlabview.io/rss/feed" rel="self" type="application/rss+xml"/>
        <pubDate>Fri, 18 Sep 2026 09:44:42 GMT</pubDate>
        <copyright><![CDATA[2026 Workers for LabVIEW Community]]></copyright>
        <language><![CDATA[en-US]]></language>
        <ttl>60</ttl>
        <webfeeds:icon></webfeeds:icon>
        <webfeeds:related layout="card" target="browser"/>
        <item>
            <title><![CDATA["rqp_Disconnect Server.vi" method in the TCP Client class]]></title>
            <description><![CDATA[where can I find the description of what the "rqp_Disconnect Server.vi" method does in TCP Client class, and how to use the "Data in" argument passed to it please?]]></description>
            <link>https://community.workersforlabview.io/ask-the-community-az5ilws8/post/rqp-disconnect-server-vi-method-in-the-tcp-client-class-zve0W6LDaieGXmS</link>
            <guid isPermaLink="true">https://community.workersforlabview.io/ask-the-community-az5ilws8/post/rqp-disconnect-server-vi-method-in-the-tcp-client-class-zve0W6LDaieGXmS</guid>
            <dc:creator><![CDATA[Rafal Korczeniewski]]></dc:creator>
            <pubDate>Thu, 10 Sep 2026 15:28:19 GMT</pubDate>
            <content:encoded><![CDATA[<p>where can I find the description of what the "rqp_Disconnect Server.vi" method does in TCP Client class, and how to use the "Data in" argument passed to it please?  </p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Native DVR Add-on Proposal]]></title>
            <description><![CDATA[Hi Peter,

I wanted to share an update regarding the Worker Framework's performance with high-resolution video acquisition.

The Worker Framework successfully demonstrated its capability to execute at a ...]]></description>
            <link>https://community.workersforlabview.io/wishlist-9gjrv181/post/native-dvr-add-on-proposal-nHJ1bKgUeuKD85K</link>
            <guid isPermaLink="true">https://community.workersforlabview.io/wishlist-9gjrv181/post/native-dvr-add-on-proposal-nHJ1bKgUeuKD85K</guid>
            <dc:creator><![CDATA[Diogo Silva]]></dc:creator>
            <pubDate>Wed, 09 Sep 2026 15:09:20 GMT</pubDate>
            <content:encoded><![CDATA[<p>Hi Peter,</p><p>I wanted to share an update regarding the Worker Framework's performance with high-resolution video acquisition.</p><p>The Worker Framework successfully demonstrated its capability to execute at a solid <strong>33 ms cycle time</strong>, acquiring <strong>8 MP RAW12 at 30 FPS (~500 MB/s)</strong> without freezing or crashing. This performance clearly highlights the quality and robustness of the architecture.</p><p>The single bottleneck identified during testing was the transfer of this heavy data payload between workers. Passing raw image arrays through the standard APIs caused the consumer thread to miss loop deadlines and introduced extremely high jitter in the standalone executable. We resolved this by replacing array passing in the APIs with <strong>Data Value References (DVRs)</strong> for inter-worker data transfer, achieving a Zero-Copy pipeline that completely eliminated memory overhead and jitter.</p><p><strong>Proposed Framework Add-on</strong> Given these results, I would like to propose a potential extension to the framework architecture: a native <strong>Zero-Copy / DVR Data Channel Add-on</strong>.</p><p>Adding built-in DVR helper methods or dedicated reference-based communication channels (e.g., pre-allocated DVR ring-buffers managed natively by the framework) would allow developers to handle massive data streams without needing custom workarounds or bypassing standard API structures.</p><p></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[💥 Workers 5.0 is finally here !]]></title>
            <description><![CDATA[Workers 5.0 is finally here and is now available to download from VIPM - Discover LabVIEW Tools! [https://www.linkedin.com/company/vi-package-manager/]. The focus of Workers 5.0 was to provide scripting tools to create both APIs and HALs for Worker QMHs.

...]]></description>
            <link>https://community.workersforlabview.io/announcements-5kqh9xef/post/workers-5-0-is-finally-here-9SwKPM0CnJEL56Q</link>
            <guid isPermaLink="true">https://community.workersforlabview.io/announcements-5kqh9xef/post/workers-5-0-is-finally-here-9SwKPM0CnJEL56Q</guid>
            <dc:creator><![CDATA[Peter Scarfe]]></dc:creator>
            <pubDate>Tue, 08 Sep 2026 19:16:33 GMT</pubDate>
            <content:encoded><![CDATA[<p>Workers 5.0 is finally here and is now available to download from <a href="https://www.linkedin.com/company/vi-package-manager/" rel="nofollow ugc" class="text-interactive hover:text-interactive-hovered">VIPM - Discover LabVIEW Tools!</a>. The focus of Workers 5.0 was to provide scripting tools to create both APIs and HALs for Worker QMHs.<br><br>Some of the new tools / features in Workers 5.0 include:<br>- Public API Builder tool<br>- Create MHL Case tool<br>- New Debug Server application<br>- Asynchronous Launchers<br>- Change Worker Properties tool<br>- Workers User Library Config File Editor<br>- DMM HAL demo project<br>&nbsp;<br>The Workers 5.0 online documentation, including a walk-through of the changes made in this version, can be found here. <a href="https://docs.workersforlabview.io/" rel="noopener noreferrer nofollow" class="text-interactive hover:text-interactive-hovered">https://docs.workersforlabview.io/</a></p><p><br>Workers 5.0 will also be presented at the <a href="https://www.glasummit.org/presentations/602dab5c-e347-4e64-9031-ea9917055043" rel="nofollow ugc" class="text-interactive hover:text-interactive-hovered">GLA Summit - For all LabVIEW and TestStand Enthusiasts!</a> on the 25-26 March 2024, so if you want to see the new version in action, please tune in for the live presentation.<br>&nbsp;<br>Again I’d like to thank the guys at <a href="https://www.linkedin.com/company/kubes-gmbh/" rel="nofollow ugc" class="text-interactive hover:text-interactive-hovered">Kubes AG</a>, including or in addition to <a href="https://www.linkedin.com/in/ACoAAA0ZRZIBxrSMwepe_Kzz3bxige3rLbWh970" rel="nofollow ugc" class="text-interactive hover:text-interactive-hovered">Matthias Kubli</a>,&nbsp;<a href="https://www.linkedin.com/in/ACoAABttePIBH8_ak2p2N1VbReKUf-bKIvFIZkc" rel="nofollow ugc" class="text-interactive hover:text-interactive-hovered">Andreas Scheuber</a>,&nbsp;<a href="https://www.linkedin.com/in/ACoAAAQ-VMoB8AVzrQYBAzvU9rfgRMjw_DSO4B4" rel="nofollow ugc" class="text-interactive hover:text-interactive-hovered">Sreejith Sreenivasan</a>,&nbsp;<a href="https://www.linkedin.com/in/ACoAACe5dtMBBscn2LQ9BkpKm3v8BcZYXKXDIaI" rel="nofollow ugc" class="text-interactive hover:text-interactive-hovered">Philipp Herzog</a>,&nbsp;<a href="https://www.linkedin.com/in/ACoAACkqXwcBP8MmuRG-PymnCKdlKOiqRP0XaWk" rel="nofollow ugc" class="text-interactive hover:text-interactive-hovered">Olivier Compondu</a>,&nbsp;for helping to make this version what it has become. I couldn’t have done it without your feedback, support, creative ideas, discussions and testing during the development process.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Workers 5.0 beta is ready for public testing]]></title>
            <description><![CDATA[It’s finally reeeeady! After 18 months in development and more than 70 additions/improvements later (changelog [https://community.workersforlabview.io/changelog/post/UkWO6uINmqAUrGm]), the Workers 5.0 beta is finally here! Link for VIPM package download is below.

The focus...]]></description>
            <link>https://community.workersforlabview.io/announcements-5kqh9xef/post/workers-5-0-beta-is-ready-for-public-testing-q9RF5JEN0DAfdw4</link>
            <guid isPermaLink="true">https://community.workersforlabview.io/announcements-5kqh9xef/post/workers-5-0-beta-is-ready-for-public-testing-q9RF5JEN0DAfdw4</guid>
            <dc:creator><![CDATA[Peter Scarfe]]></dc:creator>
            <pubDate>Tue, 08 Sep 2026 19:15:26 GMT</pubDate>
            <content:encoded><![CDATA[<p>It’s finally reeeeady! After 18 months in development and more than 70 additions/improvements later (<a href="https://community.workersforlabview.io/changelog/post/UkWO6uINmqAUrGm" rel="noopener noreferrer nofollow" class="text-interactive hover:text-interactive-hovered">changelog</a>), the Workers 5.0 beta is finally here! Link for VIPM package download is below.<br><br>The focus of Workers 5.0 has been to provide developers with scripting tools to create strictly typed Public and Local APIs for both Workers and Worker base classes, and to provide the tools required to create abstracted Worker APIs, making it now possible to easily create HALs with the framework.<br><br>Workers 5.0 allows you to create:<br>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Local API Requests<br>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Public API Requests<br>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Public API Requests with Reply<br>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Public API Responses<br>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Override Public / Local API MHL cases<br>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Asynchronous Launcher VIs<br><br>Other new additions in Workers 5.0 include:<br>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Change Worker Properties Tool<br>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Workers User Library Config File Editor<br>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Workers 5.0 Debug Server: a new application, refactored and improved<br>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DMM HAL demo project<br><br>The new Asynchronous Launcher and Public Request VIs can be used to interact with a Workers application from external LabVIEW applications or from TestStand (such as in the new DMM HAL demo project).<br><br>As always, feedback is most welcome to help with the continued development of the framework.<br><br>Big thanks to the guys at <a href="https://www.linkedin.com/company/kubes-gmbh/" rel="nofollow ugc" class="text-interactive hover:text-interactive-hovered">Kubes AG</a> and <a href="https://www.linkedin.com/company/ad-t-ag/" rel="nofollow ugc" class="text-interactive hover:text-interactive-hovered">ad+t AG</a> for making this version possible. I couldn’t have done it without your feedback, support, creative ideas, discussions and testing during the development process this year. <a href="https://www.linkedin.com/in/ACoAAA0ZRZIBxrSMwepe_Kzz3bxige3rLbWh970" rel="nofollow ugc" class="text-interactive hover:text-interactive-hovered">Matthias Kubli</a>, <a href="https://www.linkedin.com/in/ACoAABttePIBH8_ak2p2N1VbReKUf-bKIvFIZkc" rel="nofollow ugc" class="text-interactive hover:text-interactive-hovered">Andreas Scheuber</a>, <a href="https://www.linkedin.com/in/ACoAAAQ-VMoB8AVzrQYBAzvU9rfgRMjw_DSO4B4" rel="nofollow ugc" class="text-interactive hover:text-interactive-hovered">Sreejith Sreenivasan</a>, <a href="https://www.linkedin.com/in/ACoAACe5dtMBBscn2LQ9BkpKm3v8BcZYXKXDIaI" rel="nofollow ugc" class="text-interactive hover:text-interactive-hovered">Philipp Herzog</a>, <a href="https://www.linkedin.com/in/ACoAACkqXwcBP8MmuRG-PymnCKdlKOiqRP0XaWk" rel="nofollow ugc" class="text-interactive hover:text-interactive-hovered">Olivier Compondu</a></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Workers 4.0 is now available on VIPM]]></title>
            <description><![CDATA[Workers v4.0 is finally available on VIPM.

You can now use your Workers QMHs on NI real-time targets such as a cRIO. Workers v4.0 allows you to develop and debug your Workers on both Windows and real-...]]></description>
            <link>https://community.workersforlabview.io/announcements-5kqh9xef/post/workers-4-0-is-now-available-on-vipm-LEWQl3JHuHcDi7b</link>
            <guid isPermaLink="true">https://community.workersforlabview.io/announcements-5kqh9xef/post/workers-4-0-is-now-available-on-vipm-LEWQl3JHuHcDi7b</guid>
            <dc:creator><![CDATA[Peter Scarfe]]></dc:creator>
            <pubDate>Tue, 08 Sep 2026 19:13:54 GMT</pubDate>
            <content:encoded><![CDATA[<p>Workers v4.0 is finally available on VIPM.</p><p>You can now use your Workers QMHs on NI real-time targets such as a cRIO. Workers v4.0 allows you to develop and debug your Workers on both Windows and real-time targets, allowing you to run your Windows-developed Workers on real-time targets, without needing to develop real-time specific modules.<br><br>I’ll be releasing a demo video in the coming weeks showing how to setup Workers applications on both a Windows host and a real-time cRIO, and stream data between the two applications using the new TCP Server and Client Workers (available in the Worker Library).</p><p>You can learn more about developing applications with Workers 4.0 <a href="https://workersforlabview.gitbook.io/docs/basic-concepts/welcome" rel="nofollow ugc" class="text-interactive hover:text-interactive-hovered">here</a>.<br><br><a href="https://www.linkedin.com/feed/hashtag/?keywords=workersforlabview&amp;highlightedUpdateUrns=urn%3Ali%3Aactivity%3A6958362109969604608" rel="nofollow ugc" class="text-interactive hover:text-interactive-hovered">#WorkersforLabVIEW</a> <a href="https://www.linkedin.com/feed/hashtag/?keywords=labview&amp;highlightedUpdateUrns=urn%3Ali%3Aactivity%3A6958362109969604608" rel="nofollow ugc" class="text-interactive hover:text-interactive-hovered">#LabVIEW</a> <a href="https://www.linkedin.com/feed/hashtag/?keywords=engineerambitiously&amp;highlightedUpdateUrns=urn%3Ali%3Aactivity%3A6958362109969604608" rel="nofollow ugc" class="text-interactive hover:text-interactive-hovered">#engineerambitiously</a></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Workers 3.1 is now available!]]></title>
            <description><![CDATA[Workers v3.1 is now available through the NI Tools Network and through VIPM - Discover LabVIEW Tools! [https://www.linkedin.com/company/vi-package-manager/]

The main new feature of this release is the addition of the Workers Library. The Workers Library ...]]></description>
            <link>https://community.workersforlabview.io/announcements-5kqh9xef/post/workers-3-1-is-now-available-hGcuT0dI3msvTxA</link>
            <guid isPermaLink="true">https://community.workersforlabview.io/announcements-5kqh9xef/post/workers-3-1-is-now-available-hGcuT0dI3msvTxA</guid>
            <dc:creator><![CDATA[Peter Scarfe]]></dc:creator>
            <pubDate>Tue, 08 Sep 2026 19:12:18 GMT</pubDate>
            <content:encoded><![CDATA[<p>Workers v3.1 is now available through the NI Tools Network and through <a href="https://www.linkedin.com/company/vi-package-manager/" rel="nofollow ugc" class="text-interactive hover:text-interactive-hovered">VIPM - Discover LabVIEW Tools!</a><br><br>The main new feature of this release is the addition of the Workers Library. The Workers Library will become a library of pre-built functional Workers that you can use in your applications. As of now, it only contains a single dynamically loadable Message Pump Worker, but more Workers will be added to the library in future releases.</p><p>VIPM Download Link: <a href="https://lnkd.in/dxmGSY6￼NITN" rel="noopener noreferrer nofollow" class="text-interactive hover:text-interactive-hovered">https://lnkd.in/dxmGSY6<br>NITN</a> Download Link: <a href="https://lnkd.in/dTjh8PW8￼￼#LabVIEW" rel="noopener noreferrer nofollow" class="text-interactive hover:text-interactive-hovered">https://lnkd.in/dTjh8PW8<br><br>#LabVIEW</a> <a href="https://www.linkedin.com/feed/hashtag/?keywords=workersforlabview&amp;highlightedUpdateUrns=urn%3Ali%3Aactivity%3A6845696219910549504" rel="nofollow ugc" class="text-interactive hover:text-interactive-hovered">#WorkersForLabVIEW</a> <a href="https://www.linkedin.com/feed/hashtag/?keywords=engineerambitiously&amp;highlightedUpdateUrns=urn%3Ali%3Aactivity%3A6845696219910549504" rel="nofollow ugc" class="text-interactive hover:text-interactive-hovered">#engineerambitiously</a> <a href="https://www.linkedin.com/feed/hashtag/?keywords=lvoop&amp;highlightedUpdateUrns=urn%3Ali%3Aactivity%3A6845696219910549504" rel="nofollow ugc" class="text-interactive hover:text-interactive-hovered">#LVOOP</a></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Circular Dependencies]]></title>
            <description><![CDATA[How to avoid Circular Dependencies between Head Workers and SubWorkers?

I have a project hierarchy like that:

-Head Worker.lvclass (img-1)

----User Interface.lvlib:App UI SubPanel LEFT.lvclass (img-2)

---...]]></description>
            <link>https://community.workersforlabview.io/ask-the-community-az5ilws8/post/circular-dependencies-PK8IRM26Sva16L4</link>
            <guid isPermaLink="true">https://community.workersforlabview.io/ask-the-community-az5ilws8/post/circular-dependencies-PK8IRM26Sva16L4</guid>
            <dc:creator><![CDATA[Davide Fiorentin]]></dc:creator>
            <pubDate>Tue, 01 Sep 2026 08:10:43 GMT</pubDate>
            <content:encoded><![CDATA[<p>How to avoid Circular Dependencies between Head Workers and SubWorkers?</p><p>I have a project hierarchy like that:</p><p>-Head Worker.lvclass (img-1)</p><p>----User Interface.lvlib:App UI SubPanel LEFT.lvclass (img-2)</p><p>----User Interface.lvlib:Synoptic.lvclass (img-3)</p><p>----User Interface.lvlib:App UI SubPanel BOTTOM.lvclass (img-4)</p><p>----User Interface.lvlib:Exec Buffer View.lvclass (img-5)</p><p>----User Interface.lvlib:App UI SubPanel TOP.lvclass (img-6)</p><p>----User Interface.lvlib:Exec System Task Manager.lvclass (img-7)</p><p>----User Interface.lvlib:Exec System Tag Tree View.lvclass (img-8)</p><p>----Events Handling.lvlib:Exec Error View.lvclass (img-9)</p><p>Other "Standalone Workers" without direct dependencies Exept for the Head Worker.lvclass Override VIs</p><p>The Head Workers have some Override VIs of the Framewor VIs (Create Stop Event, Dequeue, Error Handler etc. )</p><figure data-type="image" data-version="v2" data-id="iz2i9pZAEZpYXpPGxcGuM" data-size="best-fit" data-align="center"><img src="https://tribe-s3-production.imgix.net/iz2i9pZAEZpYXpPGxcGuM?auto=compress,format" data-id="iz2i9pZAEZpYXpPGxcGuM"></figure><p>The problem is that as the System.lvlib:XXXXXX.lvclasses and User Interface.lvlib:XXXXXX.lvclasses are loaded using Async/Sync Launchers or Dynamic Loaded with Public API these are dependencies of Head Worker.lvclass, so if i have other "Standalone" workers System.lvlib:XXXXXX.lvclasses and User Interface.lvlib:XXXXXX.lvclasses are automatically loaded as dependencies of these "Standalone" workers as are called from Head Workers that has Override VIs or standard VIs to use between Workers.</p><figure data-type="image" data-version="v2" data-id="FbrNQ4feomdCu8Aj9you7" data-size="best-fit" data-align="center"><img src="https://tribe-s3-production.imgix.net/FbrNQ4feomdCu8Aj9you7?auto=compress,format" data-id="FbrNQ4feomdCu8Aj9you7"></figure><p></p><p>Is there an already implemented option to abstract the launch of SubWorkers without having it as dependency of Head Worker?</p><p>For example the Calculations.lvlib have 2 Workers that have no direct dipendency to User Interface.lvlib (User Interface.lvlib is called dependency of Head Worker.lvclass so is automatically loaded as dependency... or at least i think is that the cause as i didn't find other vi in common except the Head Worker override VIs).</p><figure data-type="image" data-version="v2" data-id="0ex2a2FeWj0wDu6TWFcWj" data-size="best-fit" data-align="center"><img src="https://tribe-s3-production.imgix.net/0ex2a2FeWj0wDu6TWFcWj?auto=compress,format" data-id="0ex2a2FeWj0wDu6TWFcWj"></figure><p>I have already made an abstraction to Dynamically call "Standalone" workers by populating the initial data (that has a standard cluster with a JSON configuration) so i can launch multiple workers loading a database configuration... i would like to check if there is a better solution to avoid these circular dependencies.</p><figure data-type="image" data-version="v2" data-id="riLoieNsGJTld2Nikqu6a" data-size="best-fit" data-align="center"><img src="https://tribe-s3-production.imgix.net/riLoieNsGJTld2Nikqu6a?auto=compress,format" data-id="riLoieNsGJTld2Nikqu6a"></figure><p></p><p>Thank you and have a nice day.<br></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Workers launched on sbRIO RT not registering with Debug Server.]]></title>
            <description><![CDATA[I've created a head worker that statically launches the TCP server. I launch the head worker using an asynchronous launcher because I need to call that head worker from a non-worker code. I can see in...]]></description>
            <link>https://community.workersforlabview.io/ask-the-community-az5ilws8/post/workers-launched-on-sbrio-rt-not-registering-with-debug-server-R1v2oIhmaZIqmH5</link>
            <guid isPermaLink="true">https://community.workersforlabview.io/ask-the-community-az5ilws8/post/workers-launched-on-sbrio-rt-not-registering-with-debug-server-R1v2oIhmaZIqmH5</guid>
            <dc:creator><![CDATA[Rafal Korczeniewski]]></dc:creator>
            <pubDate>Tue, 01 Sep 2026 00:28:27 GMT</pubDate>
            <content:encoded><![CDATA[<p>I've created a head worker that statically launches the TCP server. I launch the head worker using an asynchronous launcher because I need to call that head worker from a non-worker code. I can see in the project that the head worker class and the TCP Server.lvlib get loaded showing the padlock, yet the Debug Server running on the host sees neither one. Is something blocking the workers' TCP traffic on my sbRIO? I can see in the debug server all the workers running on the host PC, one of which is the TCP Client. is there a way to troubleshoot this at the RT OS level on sbRIO, please?</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[What's new in Workers 5.1 beta ?]]></title>
            <description><![CDATA[Welcome to Workers 5.1 beta! It's been over two years since the release of Workers 5.0, and we're very excited to bring you this long-awaited release. Workers 5.1 is full of new features and ...]]></description>
            <link>https://community.workersforlabview.io/announcements-5kqh9xef/post/what-s-new-in-workers-5-1-beta-ZUQH4qn2KOJ7gzb</link>
            <guid isPermaLink="true">https://community.workersforlabview.io/announcements-5kqh9xef/post/what-s-new-in-workers-5-1-beta-ZUQH4qn2KOJ7gzb</guid>
            <dc:creator><![CDATA[Peter Scarfe]]></dc:creator>
            <pubDate>Mon, 31 Aug 2026 11:48:51 GMT</pubDate>
            <content:encoded><![CDATA[<div data-type="embed" data-embed-url="https://community.workersforlabview.io/workers-5-1-beta"></div><p>Welcome to Workers 5.1 beta! It's been over two years since the release of Workers 5.0, and we're very excited to bring you this long-awaited release. Workers 5.1 is full of new features and improvements, many of which have been requested by the Workers community, all designed to make working with the framework as streamlined as possible.</p><p>We hope you enjoy the new features in this version. While the official documentation for all the new tools is still a work in progress, here is a quick overview of what's new in this release.</p><blockquote><p><strong>Important to know:</strong> You can continue using your existing Workers 5.0 applications with Workers 5.1. No upgrade or changes to your code are required.</p></blockquote><h2 id="90964503-6e92-48c4-b7bc-bc65de3874a0" data-toc-id="90964503-6e92-48c4-b7bc-bc65de3874a0" class="text-xl">NEW: Remove Statically-Linked subWorker</h2><p>Included now with the <strong>Create/Add Worker</strong> tool, you can remove a statically-linked subWorker that has previously been added to another Worker. This essentially reverses the changes made by the Create/Add Worker tool when a Worker is added as a statically-linked subWorker to a Caller.</p><p>The tool will <strong>not delete the subWorker itself</strong>. It removes the subWorker from the Caller, including the wiring on the Caller's block diagram and the framework integration VIs that were created when the subWorker was added.</p><p>Any application-specific dependencies on the subWorker, such as calls to its Public Request VIs, still need to be removed manually by the developer.<br></p><figure data-type="image" data-version="v2" data-id="lL9RDO7KJMwANk2Nzvpto" data-size="best-fit" data-align="center"><img src="https://tribe-s3-production.imgix.net/lL9RDO7KJMwANk2Nzvpto?auto=compress,format" data-id="lL9RDO7KJMwANk2Nzvpto"><figcaption class="!text-center !mx-auto !text-content-subdued !text-xs  !px-0.5 !my-1 !max-w-prose !mt-1 !rounded-none">Remove statically-linked subWorkers, available in the Create/Add Worker tool</figcaption></figure><h2 id="4e213ba2-bc01-4dce-87e9-2b77e9984b69" data-toc-id="4e213ba2-bc01-4dce-87e9-2b77e9984b69" class="text-xl"><br>NEW: Local Requests moved to the API Builder tool</h2><p>The <strong>Public API Builder</strong> tool from Workers 5.0 has been renamed to the <strong>API Builder</strong> tool, and now also allows you to create and manage a Worker's Local Requests.</p><p>There is also a new QuickDrop shortcut for opening the <strong>API Builder</strong> tool: <strong>Ctrl+7</strong>.<br></p><figure data-type="image" data-version="v2" data-id="ewhbf9NL2xWljci9jfca4" data-size="best-fit" data-align="center"><img src="https://tribe-s3-production.imgix.net/ewhbf9NL2xWljci9jfca4?auto=compress,format" data-id="ewhbf9NL2xWljci9jfca4"><figcaption class="!text-center !mx-auto !text-content-subdued !text-xs  !px-0.5 !my-1 !max-w-prose !mt-1 !rounded-none">Local API management moved to API Builder tool</figcaption></figure><p><br>Note that the <strong>Create Worker MHL Case</strong> tool (QuickDrop shortcut <strong>Ctrl+9</strong>) is still used to create MHL cases in a Worker to receive Public Responses from a subWorker.</p><h2 id="a0b73fbc-da10-4bfd-b78f-7baad0f4721f" data-toc-id="a0b73fbc-da10-4bfd-b78f-7baad0f4721f" class="text-xl">NEW: Delete Requests and Responses</h2><p>Another new feature in the <strong>API Builder</strong> tool is the ability to delete Local and Public API Requests and Responses. The right-click menu for each API now includes a <strong>Delete Request/Response</strong> option.<br></p><figure data-type="image" data-version="v2" data-id="G2lAAfpP3MdI7p72k65ry" data-size="best-fit" data-align="center"><img src="https://tribe-s3-production.imgix.net/G2lAAfpP3MdI7p72k65ry?auto=compress,format" data-id="G2lAAfpP3MdI7p72k65ry"><figcaption class="!text-center !mx-auto !text-content-subdued !text-xs  !px-0.5 !my-1 !max-w-prose !mt-1 !rounded-none">New feature: deleting Local / Public Requests and Responses in API Builder tool</figcaption></figure><p><br>There are two important things to know:</p><ol><li><p>When an API is deleted, its associated API VIs and typedef controls are also deleted from the selected Worker. Any instances of the deleted VIs or controls used elsewhere in the project, such as on another Worker's block diagram, are also removed. A bookmarked comment containing the name of the deleted VI or control is placed at each location so you can easily identify what was removed.</p></li><li><p>The MHL case associated with a deleted Request is <strong>not deleted</strong>. Instead, it is moved to a new section of the Worker's MHL case structure called <strong>--- DELETED CASES ---</strong>. This preserves any application logic that you had already implemented in the MHL case.<br></p></li></ol><figure data-type="image" data-version="v2" data-id="E2uieRKSpozDlGAnahLD4" data-size="best-fit" data-align="center"><img src="https://tribe-s3-production.imgix.net/E2uieRKSpozDlGAnahLD4?auto=compress,format" data-id="E2uieRKSpozDlGAnahLD4"><figcaption class="!text-center !mx-auto !text-content-subdued !text-xs  !px-0.5 !my-1 !max-w-prose !mt-1 !rounded-none">MHL cases associated with deleted Requests are moved to the --- DELETED CASES --- section. Bookmarked comments are left where API VIs were removed on block diagrams.</figcaption></figure><h2 id="fac4d03b-73a5-4422-b938-b5e492efc102" data-toc-id="fac4d03b-73a5-4422-b938-b5e492efc102" class="text-xl"><br>NEW: Add EHL to Worker tool</h2><p>If you create a Worker <strong>without an Event Handling Loop (EHL)</strong> and later decide that you need one, you can now add it with the click of a button.</p><p>The new <strong>Add EHL to Worker</strong> tool can be found in the <strong>Other Tools</strong> dropdown menu of the Workers Tools Menu. As the name suggests, the tool adds and wires the default Workers EHL above the Worker's existing MHL.<br></p><figure data-type="image" data-version="v2" data-id="jhLulCutHbNB8Lp3sAK1W" data-size="best-fit" data-align="center"><img src="https://tribe-s3-production.imgix.net/jhLulCutHbNB8Lp3sAK1W?auto=compress,format" data-id="jhLulCutHbNB8Lp3sAK1W"><figcaption class="!text-center !mx-auto !text-content-subdued !text-xs  !px-0.5 !my-1 !max-w-prose !mt-1 !rounded-none">Automatically add an EHL to any Worker that was created without one.</figcaption></figure><h2 id="59237d7a-47e8-4825-a36f-a436a3556ef7" data-toc-id="59237d7a-47e8-4825-a36f-a436a3556ef7" class="text-xl"><br>NEW: Workers Blueprint – Architectural documentation for your Workers applications</h2><p>You can find the new <strong>Workers Blueprint</strong> functionality in the <strong>Worker Call-Chain Viewer</strong> tool. After generating the Worker call-chain diagram for an application, you can export its architecture to the new <strong>.blueprint.json</strong> format and open it in the <strong>Workers Blueprint Viewer</strong>.</p><p>Workers Blueprint documents the application's supervision hierarchy, inheritance relationships, and messaging architecture, helping make the overall structure of a Workers application much easier to understand.</p><p>The interactive Blueprint Viewer runs locally in your web browser and can render the architecture as a Markdown (.md) document with Mermaid diagrams.</p><p>A CLI for generating Workers Blueprints will be provided with the official Workers 5.1 release.<br></p><figure data-type="image" data-version="v2" data-id="lVWQ2Q2F4ZEtVWSKzELfe" data-size="best-fit" data-align="center"><img src="https://tribe-s3-production.imgix.net/lVWQ2Q2F4ZEtVWSKzELfe?auto=compress,format" data-id="lVWQ2Q2F4ZEtVWSKzELfe"><figcaption class="!text-center !mx-auto !text-content-subdued !text-xs  !px-0.5 !my-1 !max-w-prose !mt-1 !rounded-none">Workers Blueprint Viewer - Architectural documentation for your Workers Applications</figcaption></figure><h2 id="7e10deb1-f20d-4109-a2d8-72e9ca3e0908" data-toc-id="7e10deb1-f20d-4109-a2d8-72e9ca3e0908" class="text-xl"><br>NEW: Pull Workers Examples and User Library Items from GitHub</h2><p>Additional example projects are available from the Workers Community GitHub repository and can now be pulled and installed directly from the redesigned <strong>Workers Example Projects</strong> tool.</p><p>The same GitHub integration has also been added to the <strong>Worker User Library</strong> tool, allowing additional Workers, templates, and other library items to be downloaded directly through the Workers development tools.</p><p>This means new examples and library items can be made available to the community without waiting for a new Workers release.<br></p><figure data-type="image" data-version="v2" data-id="AQYmCeOCe0i0nlM5OC5zB" data-size="original" data-align="center"><img src="https://tribe-s3-production.imgix.net/AQYmCeOCe0i0nlM5OC5zB?auto=compress,format" data-id="AQYmCeOCe0i0nlM5OC5zB"><figcaption class="!text-center !mx-auto !text-content-subdued !text-xs  !px-0.5 !my-1 !max-w-prose !mt-1 !rounded-none">Pull additional items from Workers Community on GitHub, directly into the Workers tools.</figcaption></figure><h2 id="d6d521e2-995b-47dc-9e29-f331b1057837" data-toc-id="d6d521e2-995b-47dc-9e29-f331b1057837" class="text-xl"><br>NEW: gRPC Worker Templates</h2><p>Available from the Workers Community GitHub repository are new <strong>gRPC Server</strong> and <strong>gRPC Client Worker templates</strong>. These templates provide Worker Public API Requests and Responses that map directly to messages sent over a bidirectional gRPC stream.</p><p>The templates provide nine message channels in each direction, which can be adapted to carry your own custom payloads.</p><p>You can learn more about the gRPC Worker templates here: <a href="https://community.workersforlabview.io/articles/post/using-the-grpc-worker-templates-nZFACBeQcmMJnXm" rel="noopener noreferrer nofollow" class="text-interactive hover:text-interactive-hovered">Using the gRPC Worker Templates</a>.</p><figure data-type="image" data-version="v2" data-id="39qDOaA5zcoqZkiDhyW07" data-size="best-fit" data-align="center"><img src="https://tribe-s3-production.imgix.net/39qDOaA5zcoqZkiDhyW07?auto=compress,format" data-id="39qDOaA5zcoqZkiDhyW07"><figcaption class="!text-center !mx-auto !text-content-subdued !text-xs  !px-0.5 !my-1 !max-w-prose !mt-1 !rounded-none">gRPC Server and Client Worker templates,  available in the Worker User Library tool</figcaption></figure><h2 id="d63cc68d-64d8-4a66-8442-43ec1614da7d" data-toc-id="d63cc68d-64d8-4a66-8442-43ec1614da7d" class="text-xl"><br>NEW: gRPC Workers ↔ Python Example Project</h2><p>To demonstrate the use of the new gRPC Worker templates, we've created an example showing how a Workers application that simulates an oscilloscope can communicate with a Python application over gRPC.</p><p>The example starts from the gRPC Server Worker template and adapts the message payloads in the gRPC <strong>.proto</strong> contract for the simulated scope application. The LabVIEW Workers application then communicates bidirectionally with a scope UI created entirely in Python.</p><p>The example demonstrates how the gRPC Worker templates provide a clean separation of responsibilities between LabVIEW and another language, while communication within the Workers application is still implemented using standard Worker Public APIs.<br></p><figure data-type="image" data-version="v2" data-id="TsPGZCfyT5b4vPP5MU08k" data-size="original" data-align="center"><img src="https://tribe-s3-production.imgix.net/TsPGZCfyT5b4vPP5MU08k?auto=compress,format" data-id="TsPGZCfyT5b4vPP5MU08k"><figcaption class="!text-center !mx-auto !text-content-subdued !text-xs  !px-0.5 !my-1 !max-w-prose !mt-1 !rounded-none">Use the gRPC Worker templates to create Worker Public APIs that communicate with other languages</figcaption></figure><h2 id="8f716559-2da3-4bab-b18b-d0b2adb5acd9" data-toc-id="8f716559-2da3-4bab-b18b-d0b2adb5acd9" class="text-xl"><br>Other Improvements</h2><p>Workers 5.1 also includes numerous bug fixes, usability improvements, and performance improvements throughout the development tools. You'll notice many smaller improvements here and there, and the Workers Tools Menu now loads significantly faster.</p><p>This is a beta release, so if you find any bugs or unexpected behavior, please report them here in the Workers Community. Your feedback during the beta helps us refine the release and lets us know whether we're moving in the right direction.<br></p><div data-type="embed" data-id="uMzQv5PdILEIaF102oDA1" data-embed-url="https://community.workersforlabview.io/workers-5-1-beta"></div>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Using the gRPC Worker templates - Walkthrough]]></title>
            <description><![CDATA[
For an introduction to the gRPC Worker Templates, please see Using the gRPC Worker Templates – Introduction [https://community.workersforlabview.io/private-articles/post/using-the-grpc-worker-templates-nZFACBeQcmMJnXm]. It is recommended that you read through this before starting this guided walkthrough.

...]]></description>
            <link>https://community.workersforlabview.io/blog-9abfh5hq/post/using-the-grpc-worker-templates-walkthrough-GxUjGDvtJ5t6rNK</link>
            <guid isPermaLink="true">https://community.workersforlabview.io/blog-9abfh5hq/post/using-the-grpc-worker-templates-walkthrough-GxUjGDvtJ5t6rNK</guid>
            <dc:creator><![CDATA[Peter Scarfe]]></dc:creator>
            <pubDate>Fri, 28 Aug 2026 13:37:00 GMT</pubDate>
            <content:encoded><![CDATA[<figure data-type="image" data-version="v2" data-id="KiOnGpweEXxU4xp3BExE2" data-size="full" data-align="center"><img src="https://tribe-s3-production.imgix.net/KiOnGpweEXxU4xp3BExE2?auto=compress,format" data-id="KiOnGpweEXxU4xp3BExE2"></figure><p><br>For an introduction to the gRPC Worker Templates, please see <a href="https://community.workersforlabview.io/private-articles/post/using-the-grpc-worker-templates-nZFACBeQcmMJnXm" rel="noopener" class="text-interactive hover:text-interactive-hovered">Using the gRPC Worker Templates – Introduction</a>. It is recommended that you read through this before starting this guided walkthrough.</p><p><strong>Important: </strong>LabVIEW 2019 or later is required (for the gRPC libraries)<br><strong>Important: </strong>Download <a href="https://github.com/ni/grpc-labview/releases/download/v1.7.0.1/grpc-labview.zip" rel="noopener noreferrer nofollow" class="text-interactive hover:text-interactive-hovered">grpc-labview.zip</a> from the NI gRPC LabVIEW repository on GitHub and install the three VI packages it contains before creating the template projects. The gRPC Worker templates will not work without them.</p><table class="md-table" style="width: 668px"><colgroup><col style="width: 668px"></colgroup><tbody><tr class="md-end-block"><th colspan="1" rowspan="1" style="width: 668px; min-width: 668px;" class="relative bg-background border text-left font-bold p-2 [&amp;_p]:m-0"><p><strong>VI package</strong></p></th></tr><tr class="md-end-block"><td colspan="1" rowspan="1" class="relative border p-2 min-h-6 align-top [&amp;_p]:m-0"><p>ni_lib_labview_grpc_library-1.7.0.1.vip</p></td></tr><tr class="md-end-block"><td colspan="1" rowspan="1" class="relative border p-2 min-h-6 align-top [&amp;_p]:m-0"><p>ni_lib_labview_grpc_servicer-1.7.0.1.vip</p></td></tr><tr class="md-end-block"><td colspan="1" rowspan="1" class="relative border p-2 min-h-6 align-top [&amp;_p]:m-0"><p>ni_lib_grpc_server_and_client_template[2]-1.7.0.1.vip</p></td></tr></tbody></table><h3 id="5b9a2794-05fe-4313-9b7e-4b6f504e3a40" data-toc-id="5b9a2794-05fe-4313-9b7e-4b6f504e3a40" class="text-lg">Download the gRPC Worker templates from Github</h3><p>Make sure you have an active internet connection and can access GitHub. Then open the Workers 5.1 <strong>Worker User Library</strong> tool and follow these steps:</p><ol><li><p>Press <strong>Pull from GitHub</strong>. A dialog will open.</p></li><li><p>Press <strong>W4LV-Community Repo</strong> to automatically copy the GitHub repository URL into the control below.</p></li><li><p>Press <strong>Download items from GitHub</strong>. The tool will download the Workers Community GitHub repository as a ZIP file, unzip it, and save the new library items.</p></li></ol><figure data-type="image" data-version="v2" data-id="HGB0lVsekUHuDfvC3uJbS" data-size="best-fit" data-align="center"><img src="https://tribe-s3-production.imgix.net/HGB0lVsekUHuDfvC3uJbS?auto=compress,format" data-id="HGB0lVsekUHuDfvC3uJbS"><figcaption class="!text-center !mx-auto !text-content-subdued !text-xs  !px-0.5 !my-1 !max-w-prose !mt-1 !rounded-none">Download the gRPC Worker templates from Github</figcaption></figure><h3 id="2caa7bdc-fdd1-45ae-8de4-885530408f9a" data-toc-id="2caa7bdc-fdd1-45ae-8de4-885530408f9a" class="text-lg"><br>Create a copy of the gRPC Worker Templates</h3><p>After the download from GitHub completes, you should see the gRPC Client and Server Templates in the <strong>Items in User Library</strong> list.</p><p>The next step is to create your own copies of both templates:</p><ol><li><p>Select the <strong>gRPC Client Worker Template</strong> from the list.</p></li><li><p>Press <strong>Create copy of Project Template</strong>. A dialog will appear.</p></li><li><p>Make sure the path where you want the project to be copied is correct. <strong>Important: remember this path, as you will need it later.</strong> When ready, press <strong>Create Project</strong>.</p></li><li><p>After the project has been successfully created, repeat the steps above to create a copy of the <strong>gRPC Server Worker Template</strong>.</p></li><li><p>After both projects have been successfully created, close the Worker User Library tool.</p></li></ol><figure data-type="image" data-version="v2" data-id="z2cf8JJv1eEs7RYfWEb7H" data-size="best-fit" data-align="center"><img src="https://tribe-s3-production.imgix.net/z2cf8JJv1eEs7RYfWEb7H?auto=compress,format" data-id="z2cf8JJv1eEs7RYfWEb7H"><figcaption class="!text-center !mx-auto !text-content-subdued !text-xs  !px-0.5 !my-1 !max-w-prose !mt-1 !rounded-none">Create a copy of the gRPC Worker Templates</figcaption></figure><h3 id="645c1aa7-fb95-46cb-a032-b1ff666951fb" data-toc-id="645c1aa7-fb95-46cb-a032-b1ff666951fb" class="text-lg"><br>Testing the gRPC Server and Client Worker Templates</h3><p>Before modifying the templates, let's first verify that the original Server and Client Workers can communicate with each other.</p><p>Run the Launcher VIs in both projects. You should see the front panels of the <strong>gRPC Server Tester</strong> and <strong>gRPC Client Tester</strong> Workers appear.</p><p>Follow these steps:</p><ol><li><p>On the <strong>gRPC Server Tester</strong>, press <strong>Create gRPC Server</strong> to create and start the gRPC Server. The <strong>Server Listening</strong> LED should light green.</p></li><li><p>On the <strong>gRPC Client Tester</strong>, press <strong>Create gRPC Client</strong> to connect the gRPC Client to the Server. The <strong>Client Connected</strong> LED on the Client Tester should light green. The <strong>Client Connected</strong> LED on the Server Tester should also light green.</p></li><li><p>Now that the connection between the Server and Client has been established, enter text into any of the five message controls on either tester. The text should appear in the corresponding message indicator on the opposite tester, demonstrating that messages are being sent and received in both directions.</p></li><li><p>Press <strong>Destroy gRPC Client</strong> and <strong>Destroy gRPC Server</strong>, then close both applications and exit LabVIEW completely.</p><p></p></li></ol><figure data-type="image" data-version="v2" data-id="rdlMRWkPnw76KHxo4HuKw" data-size="original" data-align="center"><img src="https://tribe-s3-production.imgix.net/rdlMRWkPnw76KHxo4HuKw?auto=compress,format" data-id="rdlMRWkPnw76KHxo4HuKw"><figcaption class="!text-center !mx-auto !text-content-subdued !text-xs  !px-0.5 !my-1 !max-w-prose !mt-1 !rounded-none">Testing the gRPC Server and Client Worker Templates</figcaption></figure><p></p><hr><h2 id="802ea861-2f1e-4403-a73c-5bc7d3a0e51d" data-toc-id="802ea861-2f1e-4403-a73c-5bc7d3a0e51d" class="text-xl"><br>Part A : gRPC Client Worker Project</h2><h3 id="a4488c71-fd3b-411e-94f5-730925e2c8ef" data-toc-id="a4488c71-fd3b-411e-94f5-730925e2c8ef" class="text-lg">Modifying template.proto</h3><p>For the next step, we will modify some of the default message payloads in <strong>template.proto</strong>.</p><p>Go to the folder where you saved your <strong>gRPC Client Worker</strong> project and do the following:</p><ol><li><p>Delete the folder called <strong>Generated_client</strong>. (Later on we will re-generate this folder using the NI gRPC Code Generator tool.)</p></li><li><p>Open <strong>template.proto</strong> in your preferred text editor.</p></li></ol><figure data-type="image" data-version="v2" data-id="1NN5BzkcSRz2r12FQfkcH" data-size="best-fit" data-align="center"><img src="https://tribe-s3-production.imgix.net/1NN5BzkcSRz2r12FQfkcH?auto=compress,format" data-id="1NN5BzkcSRz2r12FQfkcH"><figcaption class="!text-center !mx-auto !text-content-subdued !text-xs  !px-0.5 !my-1 !max-w-prose !mt-1 !rounded-none">Your gRPC Client Worker project folder</figcaption></figure><ol start="3"><li><p>In <strong>template.proto</strong>, change the payloads of <strong>Msg_ToServer_1</strong> and <strong>Msg_ToServer_2</strong> to the following:</p></li></ol><pre><code>message Msg_ToServer_1 { bool run = 1; int32 position = 2; }
message Msg_ToServer_2 { double temperature = 1; }</code></pre><ol start="4"><li><p>Next, change the payload of <strong>Msg_ToClient_1</strong> to:</p></li></ol><pre><code>message Msg_ToClient_1 { string error_message = 1; int32 error_code = 2; }</code></pre><ol start="5"><li><p>The remaining messages are placeholders that you can customize for your own applications. You can change their payloads to use the protobuf data types supported by the NI gRPC implementation. The <a href="https://github.com/ni/grpc-labview" rel="noopener noreferrer nofollow" class="text-interactive hover:text-interactive-hovered">NI gRPC Repository</a> and the official <a href="https://protobuf.dev/programming-guides/proto3/?utm_source=chatgpt.com" rel="noopener" class="text-interactive hover:text-interactive-hovered">Protocol Buffers documentation</a> provide additional information about defining protobuf messages and the data types available in <strong>.proto</strong> files.</p></li><li><p>Save <strong>template.proto</strong>.</p></li></ol><blockquote><p><strong>Important to know:</strong> When editing <strong>template.proto</strong>, only change the message payloads and any supporting types you add. Do not rename the package, service, RPC, message names, or <strong>oneof</strong> case names. The NI gRPC Code Generator uses these identifiers when naming the generated files, VIs, typedefs, and classes. Keeping them unchanged ensures that the regenerated code remains compatible with the existing gRPC Worker templates.</p></blockquote><h3 id="12582173-23c3-4845-9250-74635dd783c8" data-toc-id="12582173-23c3-4845-9250-74635dd783c8" class="text-lg">Regenerating the gRPC Client Library</h3><p>The next step is to regenerate the gRPC Client library so that it matches the new message definitions in <strong>template.proto</strong>.</p><p>Start LabVIEW again and select:</p><p><strong>Tools &gt; gRPC &gt; Open gRPC Server-Client[2] - Code Generator...</strong></p><figure data-type="image" data-version="v2" data-id="PlALG8QKDZtGVuBDh2L7C" data-size="best-fit" data-align="center"><img src="https://tribe-s3-production.imgix.net/PlALG8QKDZtGVuBDh2L7C?auto=compress,format" data-id="PlALG8QKDZtGVuBDh2L7C"></figure><h3 id="03eef036-71f2-4486-b382-0fb21d9a30a8" data-toc-id="03eef036-71f2-4486-b382-0fb21d9a30a8" class="text-lg"></h3><p>With the NI gRPC Code Generator open, perform the following steps:</p><ol><li><p>For <strong>Proto File Path</strong>, enter the path to the modified <strong>template.proto</strong> file.</p></li><li><p>For <strong>Target Project</strong>, enter the path to the gRPC Client Worker LabVIEW project you created earlier.</p></li><li><p>For <strong>Generate Server or Client?</strong>, select <strong>gRPC Client</strong>.</p></li><li><p>Run the VI. The generator may take a few minutes to complete. Once it has finished, the gRPC Client Worker project should open automatically.</p></li></ol><figure data-type="image" data-version="v2" data-id="XuY29jOIlyjXhNTwxQdE9" data-size="original" data-align="center"><img src="https://tribe-s3-production.imgix.net/XuY29jOIlyjXhNTwxQdE9?auto=compress,format" data-id="XuY29jOIlyjXhNTwxQdE9"><figcaption class="!text-center !mx-auto !text-content-subdued !text-xs  !px-0.5 !my-1 !max-w-prose !mt-1 !rounded-none">The NI gRPC Code Generator. v1.7.0.1</figcaption></figure><p></p><figure data-type="image" data-version="v2" data-id="Od5adK2vuwTewDqo3BN7P" data-size="half" data-align="center"><img src="https://tribe-s3-production.imgix.net/Od5adK2vuwTewDqo3BN7P?auto=compress,format" data-id="Od5adK2vuwTewDqo3BN7P"></figure><p></p><ol start="5"><li><p>Save the gRPC Client Worker project and close it.</p></li><li><p>Back in the Windows Explorer folder for the project, you should now see that the <strong>Generated_client</strong> folder has been recreated, as shown in the screenshot below. Close the window.</p></li></ol><figure data-type="image" data-version="v2" data-id="rgX2cK8pBbNLHwangMUnf" data-size="best-fit" data-align="center"><img src="https://tribe-s3-production.imgix.net/rgX2cK8pBbNLHwangMUnf?auto=compress,format" data-id="rgX2cK8pBbNLHwangMUnf"><figcaption class="!text-center !mx-auto !text-content-subdued !text-xs  !px-0.5 !my-1 !max-w-prose !mt-1 !rounded-none">The folder "Generated_client" has been re-generated by the NI gRPC Code Generator.</figcaption></figure><p></p><hr><h2 id="b3ccdf77-7592-4db7-9bef-c98d92f2750e" data-toc-id="b3ccdf77-7592-4db7-9bef-c98d92f2750e" class="text-xl"><br>Part B : gRPC Server Worker Project</h2><p>The following steps repeat the process you just completed for the <strong>gRPC Client Worker</strong> project, but this time for the <strong>gRPC Server Worker</strong> project.</p><p>It is important that both projects use the same modified <strong>template.proto</strong>, because the gRPC Server and Client must implement the <strong><em>same message contract</em>.</strong></p><h3 id="c915bd70-32d1-4003-9cc6-5c686b4f3fef" data-toc-id="c915bd70-32d1-4003-9cc6-5c686b4f3fef" class="text-lg">Modifying template.proto</h3><p>Go to the folder where you saved your <strong>gRPC Server Worker</strong> project and do the following:</p><ol><li><p>Delete the folder called <strong>Generated_server</strong>. For this walkthrough, we will regenerate this folder using the NI gRPC Code Generator.</p></li><li><p>Replace the existing <strong>template.proto</strong> file with the modified <strong>template.proto</strong> from your <strong>gRPC Client Worker</strong> project. This ensures that both the gRPC Server and Client are generated from <strong><em>exactly the same message contract</em>.</strong></p></li></ol><figure data-type="image" data-version="v2" data-id="pgwuenV1A7cQmG9bRX0LZ" data-size="best-fit" data-align="center"><img src="https://tribe-s3-production.imgix.net/pgwuenV1A7cQmG9bRX0LZ?auto=compress,format" data-id="pgwuenV1A7cQmG9bRX0LZ"><figcaption class="!text-center !mx-auto !text-content-subdued !text-xs  !px-0.5 !my-1 !max-w-prose !mt-1 !rounded-none">Your gRPC Server Worker project folder</figcaption></figure><h3 id="2855f160-71b1-4eef-b81e-30f86fef2a81" data-toc-id="2855f160-71b1-4eef-b81e-30f86fef2a81" class="text-lg">Regenerating the gRPC Server Library</h3><p>The next step is to regenerate the gRPC Server library so that it matches the new message definitions in <strong>template.proto</strong>.</p><p>Start LabVIEW again and select:</p><p><strong>Tools &gt; gRPC &gt; Open gRPC Server-Client[2] - Code Generator...</strong></p><figure data-type="image" data-version="v2" data-id="aKfvEEWf75OO1nYAO5HCE" data-size="best-fit" data-align="center"><img src="https://tribe-s3-production.imgix.net/aKfvEEWf75OO1nYAO5HCE?auto=compress,format" data-id="aKfvEEWf75OO1nYAO5HCE"></figure><h3 id="03eef036-71f2-4486-b382-0fb21d9a30a8" data-toc-id="03eef036-71f2-4486-b382-0fb21d9a30a8" class="text-lg"></h3><p>With the NI gRPC Code Generator open, perform the following steps:</p><ol><li><p>For <strong>Proto File Path</strong>, enter the path to the modified <strong>template.proto</strong> file in the gRPC Server Worker project.</p></li><li><p>For <strong>Target Project</strong>, enter the path to the gRPC Server Worker LabVIEW project you created earlier.</p></li><li><p>For <strong>Generate Server or Client?</strong>, select <strong>gRPC Server</strong>.</p></li><li><p>Run the VI. The generator may take a few minutes to complete. Once it has finished, the gRPC Server Worker project should open automatically.</p></li></ol><figure data-type="image" data-version="v2" data-id="E1C8dZNXRE2qQgSli7eLU" data-size="original" data-align="center"><img src="https://tribe-s3-production.imgix.net/E1C8dZNXRE2qQgSli7eLU?auto=compress,format" data-id="E1C8dZNXRE2qQgSli7eLU"><figcaption class="!text-center !mx-auto !text-content-subdued !text-xs  !px-0.5 !my-1 !max-w-prose !mt-1 !rounded-none">The NI gRPC Code Generator. v1.7.0.1</figcaption></figure><p></p><figure data-type="image" data-version="v2" data-id="gLc1jUTTGbKNsEkiSWXiP" data-size="half" data-align="center"><img src="https://tribe-s3-production.imgix.net/gLc1jUTTGbKNsEkiSWXiP?auto=compress,format" data-id="gLc1jUTTGbKNsEkiSWXiP"></figure><p></p><ol start="5"><li><p>Save the gRPC Server Worker project and close it.</p></li><li><p>Close the NI gRPC Code Generator.</p></li><li><p>Back in the Windows Explorer folder for the project, you should now see that the <strong>Generated_server</strong> folder has been recreated, as shown in the screenshot below.</p></li></ol><figure data-type="image" data-version="v2" data-id="p1SaMUDSoHNvnvgwERr6J" data-size="best-fit" data-align="center"><img src="https://tribe-s3-production.imgix.net/p1SaMUDSoHNvnvgwERr6J?auto=compress,format" data-id="p1SaMUDSoHNvnvgwERr6J"><figcaption class="!text-center !mx-auto !text-content-subdued !text-xs  !px-0.5 !my-1 !max-w-prose !mt-1 !rounded-none">The folder "Generated_server" has been re-generated by the NI gRPC Code Generator.</figcaption></figure><p></p><hr><h2 id="57b8d097-c03f-4236-b710-0213dadd9041" data-toc-id="57b8d097-c03f-4236-b710-0213dadd9041" class="text-xl"><br>Part C : Testing your newly generated gRPC Messages</h2><p>Now reopen both the <strong>gRPC Client Worker</strong> and <strong>gRPC Server Worker</strong> projects.</p><ol><li><p>Run the Launcher VIs in both projects.</p></li><li><p>On the <strong>gRPC Server Tester</strong>, press <strong>Create gRPC Server</strong>.</p></li><li><p>On the <strong>gRPC Client Tester</strong>, press <strong>Create gRPC Client</strong>. As before, the Server and Client should connect and the corresponding status LEDs should light green.</p></li><li><p>Test the new message payloads. On the <strong>gRPC Server Tester</strong>, change the values in <strong>Msg_ToClient_1</strong>. The new message payload should be received and displayed in the corresponding indicator on the <strong>gRPC Client Tester</strong>.</p></li><li><p>On the <strong>gRPC Client Tester</strong>, change the values in <strong>Msg_ToServer_1</strong> and <strong>Msg_ToServer_2</strong>. The new message payloads should be received and displayed in the corresponding indicators on the <strong>gRPC Server Tester</strong>.</p></li><li><p>Test the remaining gRPC messages, making sure that what is sent is received on the opposite tester UI.</p></li></ol><figure data-type="image" data-version="v2" data-id="9grjQ57voWne7RmpmdTZL" data-size="best-fit" data-align="center"><img src="https://tribe-s3-production.imgix.net/9grjQ57voWne7RmpmdTZL?auto=compress,format" data-id="9grjQ57voWne7RmpmdTZL"><figcaption class="!text-center !mx-auto !text-content-subdued !text-xs  !px-0.5 !my-1 !max-w-prose !mt-1 !rounded-none">gRPC Server Worker tester front panel with the newly generated message payload typedefs.</figcaption></figure><p></p><figure data-type="image" data-version="v2" data-id="rhLySC02vpJYDoAQuAVKP" data-size="best-fit" data-align="center"><img src="https://tribe-s3-production.imgix.net/rhLySC02vpJYDoAQuAVKP?auto=compress,format" data-id="rhLySC02vpJYDoAQuAVKP"><figcaption class="!text-center !mx-auto !text-content-subdued !text-xs  !px-0.5 !my-1 !max-w-prose !mt-1 !rounded-none">gRPC Client Worker tester front panel with the newly generated message payload typedefs.</figcaption></figure><blockquote><p><strong>Notice that at no point did you need to modify the gRPC Server or Client Workers themselves.</strong> The Tester Workers ran immediately with the new payload typedefs. Because only the payload definitions were changed in <strong>template.proto</strong>, the names of the files, VIs, typedefs, and classes generated by the NI gRPC Code Generator remained unchanged. This allowed the existing Workers to re-link to the regenerated libraries automatically, with no manual rework required.</p></blockquote><h2 id="08b04799-b39b-4c16-82a9-eccf79e2bd4e" data-toc-id="08b04799-b39b-4c16-82a9-eccf79e2bd4e" class="text-xl">Conclusion</h2><p>You have now demonstrated how to customize the gRPC Worker Templates by changing the message payload definitions in <strong>template.proto</strong> and regenerating the corresponding LabVIEW gRPC libraries with the NI gRPC Code Generator.</p><p>This provides a straightforward way to adapt the gRPC Worker Templates to the data required by your own applications while maintaining a common gRPC contract between the Server and Client.</p><p>In <strong>Part 3 (coming soon)</strong>, we’ll look at a real example built from the <strong>gRPC Server Worker Template</strong>: the <strong>Workers ↔ Python Scope Example</strong>, which is already available with the Workers 5.1 beta. In this example, a Workers application simulates an oscilloscope in LabVIEW and communicates with a Python UI over the same bidirectional gRPC stream.<br></p>]]></content:encoded>
        </item>
    </channel>
</rss>