Compound arithmetic allows you to invert inputs or outputs. I find myself often checking for a string or path to NOT be empty. It would be nice to be able to invert the output the "Empty String/Path?" function instead of needing to wire up the additional "Not" function. It would look kind of like this:
For all the years programming LabVIEW this is something that has always bothered me. My development system has a monitor much higher resolution than the monitors on our ATE stations and it is very easy to end up with a panel that is too big for the target machines.
While I can set a MINIMUM panel size it would be nice to set a MAXIMUM panel size or be able to turn off the "Auto grow" on front panels.
Also related to this being able to turn off scrolling and "Auto Scroll" on front panels in the IDE.
Once I get a front panel set, I want to be able to "lock it" and have it NOT MOVE up, down, left, right or grow for any reason.
Many common functions include a "found" or "exists" output. Examples include:
Get Variant Attribute
Element of Set?
Config file VIs (Read Key, Write Key, Get Key Names, etc)
Chek if File or Folder Exists
Why then does Look In Map provide an inverted ("not found") output? Wouldn't it be better if it was consistent with other similar functions??
This is most frustrating when replacing existing code using variant attribute lookups with equivalent maps. "Look In Map" is pin compatible with "Get Variant Attribute" except for that one inverted output! This has caught me out on more than one occasion...
When writing a string key to a configuration file with the Config file "Write Key.vi" on the File I/O palette, the value will always have quotes around it because of the "Add Quotes.vi" in that particular method as you can see in this image.
Not all external programs handle ini files with quotes around strings as well, and this question was already asked and answered in 2010, but for some reason NI never added this VI or the option to remove the quotes to the actual palette.
I would like to have the option to have my string keys with and without quotes.
While writing/debugging applications that make heavy use of reentrancy it is not uncommon for a reentrant VI to be left open after the rest of the application has shut down. This leaves VIs, Classes, LVLIBs locked in the project and your only recourse is to hunt down the offending reentrant item or close the project and reopen it.
It would be valuable to be able to see the running clones in the list of reentrant items found by navigating to View>>Browse Relationships>>Reentrant Items, maybe denoted by a *, like this below:
Having that would easily allow me to open the running clones and close them out manually so I can continue debugging.
We need a “modal when called” behavior where the VI is NOT modal when the VI is not currently running (being called). Otherwise, accidentally opening the VI during development while the main VI is running will make it so you can’t interact with any other front panels, block diagrams, or any other LabVIEW windows; and you’re stuck — you have to kill LabVIEW from task manager or cmd.exe (taskkill /f /im LabVIEW.exe)
My work-around is to add this little snippet of code that uses a Floating behavior in development and a Modal behavior in a built application (EXE).
Many times, the bulk of LabVIEW development happens on computers that will never interface with hardware. A dozen engineers may be collaborating on code that will ultimately run on a dedicated machine somewhere, that is connected. Yet, as things currently are, I have to install more than I need on my development machine to get access to API VIs. If I am working on my laptop on an application with DAQ, RF, Spectrum analyzer, etc. components, I have to choose to either download and install all of that, or deal with missing VIs and broken arrows. This seems needless, since my particular machine will never actually interface with the hardware.
I would like to have the option to install only the LabVIEW VIs and ignore the driver itself. In many, if not most cases, the LabVIEW API could be independent of driver version. It could install very quickly, since it would just be a set of essentially no-op VIs. I don't care that the VIs would do nothing. They would just be placeholders for my development purposes. This would allow me to have full API access to develop my code without having to carry around large driver installations that I will never actually use.
I use a lot of user events and often define the user event references in a typedef cluster before actually writing the create/generate/destroy code. It would be really helpful if the Create User Event primitive would change its input datatype based on the output (i.e back propagate the datatype), much like the Variant To Data primitive.
I wanted to use a property node in an application today. I happened to have the Help context up and it showed "Run-Time Engine: No". But I could easily have missed that and not discovered the issue until much later, after building a lot of code and wasting time.
If the node had an obvious indication as soon as you put it on the block diagram - for example, a different color - that would help a lot and potentially save a lot of headache.
It seems that if you have a VI (or function) inside of a disabled frame of a Diagram Disable Structure or Conditional Disable Structure then the Find and Find All Instances features in LabVIEW will not report them. I'm OK if this is the default behavior, but maybe the Find dialog should have an option/checkbox to search inside of Disabled Structures.
Note: This is really important for cross-platform and embedded target development where there's lots of use of Disabled Structures.
I find the process of initializing Maps in LabVIEW to be unintuitive and inconsistent with the initialization process for other similar concepts (such as, say, arrays). After some initial trial and error, the process I've settled into for creating maps is to drop a map constant, and then to drag and drop the appropriate data types onto it for my key and value. I first looked for an Initialize Map VI (which doesn't exist) and then tried to create the constant by wiring up appropriate types to an "Insert Into Map" and creating the constant from there -- but this doesn't work as expected because the terminals don't update appropriately.
What drove me to coming to the forum today though, was that in creating a malleable VI with a map inside of it, I found a breaking point for the "drop constant and drag values into it" approach. Since the map data types need to be dynamic to support malleable VIs, I've had to get creative to get around that...
I work with large projects. And I often need to move items around in my projects. However... while you're dragging an item in the Project Explorer, if the cursor is at the top or bottom of the visible area, the window does not scroll. This means that the item you're moving, and its destination, must both be visible at the same time in order to drag and drop it.
I regularly have to un-expand items in order to be able to simply move a file. This is time consuming and forces me to un-expand tree items that I would prefer to keep expanded.
If I have a Control labelled '%s In', I would like to be able to right click on it and select Create Indicator, resulting in a terminal label of '%s Out'. Likewise, if I have an Indicator labelled '% Out', I would like to select Create Control and automatically label it '%s In'.
Simple enough, but one of those tiny little tweaks that would save me a tiny fraction of effort every time I do it 🙂