Adventures in LabVIEW GDevCon#4 Developer Conference

Blogs, LabVIEW Blog
Hey there, LabVIEW enthusiasts and curious minds! Buckle up because I'm about to take you on a thrilling ride through the highlights of GDevCon4, the LabVIEW event of the year. Whether you're a seasoned LabVIEW wizard or just dipping your toes into the world of code, this event had something for everyone. So, let's dive into what made G Devcon 4 an absolute must-attend. LabVIEW: More Than Meets the Eye First things first, I need to forget any preconceived notions I had about LabVIEW being confined to the realm of test and measurement. At the conference, I discovered that LabVIEW can boldly go where no LabVIEW has gone before - even to the land of ERP systems! Matthias wowed us with a case where LabVIEW was used to develop an…
Read More

Window Losing Focus

Blogs, LabVIEW Blog, Snippets
TLDR: When any window in Windows OS loses focus after closing a dialog, the best method that works for me to get back to normal behavior is by killing the explorer.exe from the task manager. For safety, I keep the command prompt open so that I can reopen Windows Explorer again if it doesn't reopen automatically. Just pass the explorer.exe command in the command prompt. Quite a few times, I found while working in LabVIEW that when I open some dialogs like VI properties or LabVIEW Options and close those dialogs, focus is lost and my Ctrl+Space or Ctrl+W doesn't work in the previous window I was working with. Initially, I thought it was due to some bug in LabVIEW, but later found that Windows Explorer is taking on some…
Read More

Pipeline: Repository Variables in GitHub Bitbucket for Version Info

Blogs, LabVIEW Blog, Snippets
Recently I've been working a lot with pipelines to automate the build aspects of a LabVIEW framework development and it's quite interesting how it all takes in various directions. To be frank, I think there are too many options when you come into this world from a fixed monolithic application world. Anyways a new learning today is the repository variables used as version info. LabVIEW Project & Version Limitation When it comes to LabVIEW (or maybe in other environments too, I'm not sure), you can save the version info of a built config only to the source file, ie., .lvproj in the LabVIEW case. You can't change this version info in the .lvproj file after your build server builds the executable because you usually don't want the build server to…
Read More

NI-DIAdem & Acquisition History

Blogs, LabVIEW Blog
When I started with DIAdem most recently I felt immediately it's such a powerful tool that I haven't explored. I was intrigued when one of my friends told me that it was originally built by a German company Gfs and later acquired by National Instruments. While searching, I found that pretty much most of the features are very intact including the GUI components from the original software. Here is a glimpse of some of the old docs I can extract. For some reason, NI didn't integrate LabVIEW and DIAdem tightly. Can we consider it as software-killing 😀? Nevertheless, if you have been in LabVIEW and NI platforms for quite a while, never miss a chance to look at DIAdem. I would say the DIAdem market is automotive. A sidenote on…
Read More

Merging LabVIEW VIs with SourceTree

Blogs, LabVIEW Blog
After 10+ years of working in LabVIEW, I finally got to merge one of the projects properly. Though we can use source control like SVN & Git with LabVIEW file types (such as .vi, .ctl), there is very little chance our LabVIEW developers get to diff and merge the LabVIEW file types. This is mainly due to the visual complexity that we go through, the binary format of LV files and real estate needs, and the simplicity of silos in most LabVIEW projects. Of them, LabVIEW merge is very less used than LabVIEW diff. I had some directions on how to apply it for sourcetree from Endigit here but later found that it partly worked. So I customized it further in order to get it working. Here is the working…
Read More

TestStand Execution Aborts Unexpectedly

Blogs, LabVIEW Blog
TestStand persisted data (like a watch window data) could be a reason behind such aborts or stopping of sequence unexpectedly. In my case, I tried to check function AbortAll() in the watch window and ran into an infinite loop of aborts whenever I try to pause the sequence. To add more trouble, it didn't allow me to delete it as Watch View becomes inaccessible (see greyed out below) after sequence aborts. Watch Window in TestStand is executing unexpected functions of TS-Engine To overcome this issue, the Watch expressions are persisted in the TS common app data can be edited in a simple text editor. Open TeststandPersistedOptions.opt found in below path in a notepad and remove the section as highlighted in following screenshot. C:\ProgramData\National Instruments\TestStand 2021 (32-bit)\Cfg\TeststandPersistedOptions.opt Delete the section which…
Read More

Integrate LabVIEW with Python to access SaaS Services

Blogs, LabVIEW Blog
The world is bombarding with SaaS services all over and it's time to connect LabVIEW to the SaaS world. Most of the SaaS service provides Python API and integrating Python API to LabVIEW is gradually becoming a norm. Recently I spoke on GLA Summit 2021 about how we can integrate the LabVIEW with SaaS services with a producer-consumer loop in the python layer. Demonstration Video This video explains a top-level view of how this really works for a simple email SaaS from mailersend. https://www.youtube.com/watch?v=YQeJaod8Ti8 Presentation Slides Here are the slides where I explained one of the Python to LabVIEW integration techniques that I adopted for integrating the SaaS services to LabVIEW. GLA Summit 2021: Python Integration & Door to SaaS worldDownload
Read More

Imperative vs Declarative programming paradigm

Blogs, LabVIEW Blog, New Learnings
This is a series of blogs where I collect some interesting programming concepts, new things I learn As LabVIEWers we're familiar with few programming paradigms like object-oriented (OOP). Have you heard of functional programming?Imperative Programming changes the state of the program. OOP is an imperative programmingDeclarative Programming: doesn't change the state of the program. Functional is a declarative programming Wikipedia has more details on the programming paradigm 2 main principles of Functional Programming Don't mutate. Don't change the state of the program, whatever data comes into the function make a new copy of the function and return the new data without modifying the original data. Keep the function purely independent ie., even if you want to play with the global variables, then pass that global variable as arguments to that function…
Read More

LabVIEW 64-bit Database Addon

Blogs, LabVIEW Blog
Up until LabVIEW 2018, National Instruments provided database addon only for 32-bit version. Those who works with 64-bit LabVIEW version, this could be a roadblock if ever wanted to run the app only in 64bit and still need to access databases. Access Database from both LabVIEW 32bit and LabVIEW 64bit Short Answer A simple trick which works. If we copy the database addon from 32-bit LabVIEW installation to 64-bit LabVIEW installation, it still works without any issues. However ensure that other database file (.udl etc) and ODBC connections are setup for 64bit as well. Checkout my Oracle DB Connection learnings as well here Long Answer I used Oracle database via ODBC for an application in 32-bit. To get it working in 64 bit I had 32-bit version of same LabVIEW…
Read More

LabVIEW or TestStand File Diff using TortoiseSVN or TortoiseGit

Blogs, LabVIEW Blog
When you're extensively working in LabVIEW or TestStand with multiple developers, you could easily end up in the need of merging different VIs or sequences. The LVCompare tool and TestStand File Diff and Merge Utility come in handy. Here is how you set up the Tortoise settings to make the diff handier right from the context menu using TortoiseSVN or TortoiseGit. You can diff the files this way without the need to go through the file selection dialog boxes. https://www.youtube.com/watch?v=UsvqPt8MB0g&feature=youtu.be For .vi file of LabVIEW "C:\Program Files\National Instruments\Shared\LabVIEW Compare\LVCompare.exe" %base %mine For .seq file of Teststand "C:\Program Files\National Instruments\Shared\TestStand\FileDifferLauncher.exe" %base %mine References For LabVIEW diff with merge, there is a good article here from Delacor.
Read More