LabVIEW Idea Exchange

Community Browser
Top Authors
cancel
Showing results for 
Search instead for 
Did you mean: 
Post an idea

Very often you get into the situation where you always have to do the same hundred clicks in the same order.

 

My suggestion: make shortcuts for every LabView menu item, also the context menues user defineable (right click on controls etc., e.g. "set control to typedef" or "set cluster autosize to arrange vertically" etc. It is the same with the cluster constants in the block diagram, not only with controls/indicators on the front panel.  Additionally it might be really an option to record little macros and make those macros available via short cuts, like you are used to have in MS tools.

 

Comment: I know you can do a lot of stuff with VI server, but nevertheless: recording makros as a LabView function would just be more comfortable ...

When you use cluster or enums, you will have to define them as Type Definition. This should always be done by default from LabView, because this is the most common option at least for clusters and typedefs.

 

But there are other settings like the autosize, which you do not want to reedit every time when you create a new cluster typedefinition.

 

My suggestion is to let be clusters (and enums) typedefinitions by default. Then, additionally, to make the cluster default settings optional (maybe this is already LabView standard... but if, it´s not well documented, at least I haven´t found the option ...).

 

Example:

 

Cluster_default_settings.JPG

When you want to change cluster properties, you will have to right click on the frame of the cluster. For me it´s really a challenge to hit the right area to get into the right menue.

 

My suggestion is to make the area bigger, where you right click on...

 

Example:

 

right area hit:

rightclick_area.JPG

 

wrong menue, which I hit more often than the right one:

rightclick_area_false_selection.JPG

When you wand to exchange a VI with another VI (which you do very often when you put VIs of one class into a case structure - to program modular - and don´t want to wire all stuff again, like errorwires or instrhandle wires), you have go a long way through the context menue all the time. I would suggest to add the menue item "Replace with VI" on the top menue.

 

Example:

old menue path: Replace -> All Palettes -> Select a VI ...

 

NEW: "Replace with VI"

 

Replace_VI.JPG

Where LabVIEW close a VI it does not free the memory automatically. This should allow the VI to reopen soon.
For large projects or multiple projects open at the same time, this feature is very annoying. More and more memory is consumed and the only way to release is to close LabVIEW.
It should be possible to force the mode of operation within the parameters of LabVIEW.
[X] Free memory when a VI / Project is closed
] Maintain a copy of the VI in memory to improve performance at the reopening.
In the second case, it would be useful to have a command in the menu of LabVIEW to force the timely release of memory.

Properties or parameters of methods are often documented (context help ctrl+h, move mouse over properties/methods). When a control is created to apply data to a property node or a method parameter, the available documentation of a property/method parameter should automatically be added to the controls documentation (description).

 

Example: The following picture shows a subVI of a LabView driver basing on an Ag3352x IVI-COM driver. Documentation for the amplitude property is available. When the amplitude control is created, the available documentation should be added automatically to the controls description...

 

 

create control example

Inspired during discussion in this nugget of Darren:

 

In my opinion there are a lot of good reasons to inline nearly every VI, which is reentrant. I see only three reasons for not using inlining:

 

1.) use recursive code (which I seldom use)
2.) call the reentrant VI dynamically (which I use more often than recursion, but still I use this seldom)
3.) you don't want to recompile every time, when you change the reentrant sub-VI

 

Of course you can disable inlining, if you want. It is only enabled after you set the VI reentrant. This behavior could be controlled via LabVIEW options.

 

Regards,

Marc

When building an installer have the builder scan all .vi's in order to include all addition installers that need to be installed.

Situation:

You want to show a coworker or customer something "real quick" in the LabVIEW.  So you open a new VI, open the block diagram, and open the quick drop accidentally because you thought the palettes were already loaded.  

 

DANGIT you forgot that you haven't accessed the palettes since you started LabVIEW.  Now you have to resort to awkward conversation defending LabVIEW about how awesome it is, even though it can sometimes be slow, etc, etc.  If you decide to skip the awkward conversation and instead try clicking out of the window you see this awful image:

 

notresponding1.png

 

Oh No! Did LabVIEW crash?  Is it broken?  How long will this take?

 

Solution:

Cancel button on the windows in question that allows you to stop loading the palettes (or switch it to loading in the background) so that you can go back to work and find your function the old fashion way.  Save you time.  Save you annoyance.  Save LabVIEW some street cred.

 

cancel quick drop load.png

 

The world is a happier place...

 

I would like to see the Join and Split Numbers function to be expandable and polymorphic. I’m not arguing big vs little. Just accept there are two Endian worlds and work with them. Have you ever joined two or four numbers from a data stream in Little Endian? You have to change the order and cross wires as shown in figure (1).

Join Numbers Figure 1.GIF

This is not that clean and it gets worse when you need to split numbers and send them back to a device. Because I join and split a lot of numbers I created a library of vi’s that are clean on the diagram and visually indicate Big vs. Little Endian. A simple arrow works for me to indicate Big vs. Little Endian shown in figure (2). This Library is also attached.

Join Numbers Figure 2.GIF

I know the Join and Split two numbers in Big Endian is the same function in LabVIEW. This provide visual consistence on my block diagrams. An example of block diagram code that shows the difference between Big and Little Endian form is shown below in figure (3).

Join Numbers Figure 3.GIF

Here is what I would like to see National Instruments create. Make the Join and Split Numbers function to be expandable and polymorphic. The words are only going to get bigger and there will always be two Endian worlds. Make the Join and Split Numbers vi’s expand like the build array function. Click and drag possibly in groups of 2 i.e. 2, 4, 6 and 8 inputs or outputs for the Split Numbers vi. Of course the output data type would correspond to the number input connections. The polymorphic examples are shown below in figure 4.

Join Numbers Figure 4.GIF

To take the polymorphic function one step further it could include the data type. There are times when I need to join numbers and convert to a signed integer or a double floating point. A demonstration of the polymorphic data type is shown in figure 5 and 6 with before and after examples.

Join Numbers Figure 5.GIF

Expanding the functionality of the Join and Split Number vi’s will reduce block diagram clutter, increase coding speed and maintain visual readability. What do you think?

 

Current Scenario:

 

for dequeue element we can pass one reference only. And the function waits till timeout if no element is present in queue. If element appears before completion of timeout then function returns immediately with data.

However if I want to wait for data from multiple queues then I need to dequeue from them one by one. This approach has following problem.

 

Lets say I Have two queues Q1 and Q2 and I am Dequeuing element from them one by one with 10 Sec timeout. Now lets assume there is no data in Q1 but there is data available in Q2. Now when I dequeue element from Q1 it waits for 10 sec and returns and then I dequeue element immediately. If situation is opposite then Q1 returns immediately but Q2 waits for 10 Sec.

However what I need that if Q1 or Q2 has data then there should not be any wait/

 

In Notifier palette there is a VI called "wait on notification from multiple" this VI accepts array of notifiers and return immediately if any of the notifier receives notification.

 

notifier pallet

 

Similar functionality will be highly useful in queues

 

Modified Queue Palette

 

 

TDMS could be very useful if they were not so badly handled. The need for files that you can read and write concurrently does exist but TDMS fail to address it right now because of the lack of stability.

Create a TDMS, close the ref and then pass the closed ref to any TDMS function, LabVIEW crashes instantly...

Try use NI's TDMS viewer for a very large file, you get a memory error.

 

For now I still use WAV file and when customer send me their large TDMS files I always have to struggle around to parse them.

Really TDMS could be cool with a little effort from NI.

From the developers perspective... events are interrupts and timing sources are interrupts. Do we need two separate way to pragmatically creating these (event registration refnum and timing source string) and reacting to these (structures)?

 

I realize there are features one has and the other one doesn't... but there is so much overlap and so much potential if combined.

It is time to put a dent in the floating point "problems" encountered by many in LV.  Due to the (not so?) well-known limitations of floating point representations, comparisons can often lead to surprising results.  I propose a new configuration for the comparison functions when floats are involved, call it "Compare Floats" or otherwise.  When selected, I suggest that Equals? becomes "Almost Equal?" and the icon changes to the approximately equal sign.  EqualToZero could be AlmostEqualToZero, again with appropriate icon changes.  GreaterThanorAlmostEqual, etc.

 

AlmostEqual.png

 

 

I do not think these need to be new functions on the palette, just a configuration option (Comparison Mode).  They should expose a couple of terminals for options so we can control what close means (# of sig figs, # digits, absolute difference, etc.) with reasonable defaults so most cases we do not have to worry about it.  We get all of the ease and polymorphism that comes with the built-in functions.

 

There are many ways to do this, I won't be so bold as to specify which way to go.  I am confident that any reasonable method would be a vast improvement over the current method which is hope that you are never bitten by Equals?.

Curently, when we use the Open VI Reference node, there is a numeric "options" input for specifying how to open the reference. For example, 0x01 for "record modifications", 0x02 for "open templates for editing", and so on.

 

To my best knowledge, the theory here is that is makes it "easy" to combine options, e.g. 0x03 to "record modifications" and "open templates for editing". The problem I have with this method is that 90% of the time I cannot remember the number to go with the option(s) that I want - I end up opening Context Help->Detailed Help, etc.

 

An alternative way would be to copy the VISA Flush Buffer node: use a ring control for each of this input. that way you could just select the "record modifications" option, or, if you need multiple options, combine them with a OR or compound logic node (or even, take an array of these options as the input, allowing 0 or more options to be select). This to be would be much easier as we wouldnt have to keep on going to the context help.


Let's make it happen! 🙂

 

Shaun

 

Perhaps this could be handled by having an "exit" out of a For Loop

but I think it make more sense to have the

option to have While Loop Auto - Stop if a wired array input has indexing enabled.

This would save diagram space to catch an infinite loop.

 

Either a right-click on the "Enable indexing" icon of the array input or a right click on the Stop if True or Stop if False icon to

change it to Purple or Orange to indicate the while loop is also enabled to stop when input array has reached its array size.

 

 

My forum question asked here: http://forums.ni.com/t5/LabVIEW/Determine-and-Minimize-LabVIEW-Build-Dependencies/m-p/1441734 has prompted me to post a New Idea on this exchange.

 

    To summarize:  LabVIEW executables tend to be on the LARGE side especially when driver packages like DAQmx, VISA amd IMAQ are required.  I'm asking if NI could add some enhanced functionality to the Application/Executable Builder that assist the user in determining and minimizing the size of the final distribution package.  Ideally this would be a completely automatic function that would simply minimize the build parameters to the smallest possible set after analyzing the active project.  Additionally, it would be great if this would be smart enough to pare down the driver package itself to the bare minimum.  (I.E. It shouldn't require a 150MB DAQmx package size to read a few thermocouples with a 9211 module.)

    At the very least, the Additional Installers tab should show the size of the packages you're checking off and the resulting installer's total size.

 

An example of the size increases of required installer packages for a simple DAQmx application:

Build Size (MB)
Program Itself
8
Run-time Engine Added
104
DAQmx Core Drivers Added
258
DAQmx Core Drivers + MAX Added
712

 

the decorations in the front panel have properties, these properties you can to modify in execution time, but the order off these decorations is created automaticaly, and the newer decoration object, it's the first, and other existing decorations your order number is changed automaticaly.
Proposed solutions 
- the automatic order number should be generated, in the same order to are created the decorations, in the same way of controls
- create a new function to modifying the order number, the same way to modify the tab order of the controls.

 

 

When it comes to integer addition, subtraction I would like to have one more bit for input and output. This will help me to achieve N byte (width) addition or subtraction. Please see the diagram for details.

 

 

 

Some times when there is an overflow, I would like to have saturated value or sometimes modulo value. With the current behavior we get modulo addition only. if we have this bit output, we can even decide the output to be saturated value(FF) or modulo value. 

 

 

Since basic arithmetic functions are polymorphic in nature. we can add this two terminals as optional terminals.  

 

New Idea.png

Dear All,

 

The toggle bit function is very essential to toggle the flags set in the progam.

Right now we have to doit in inderect manner shown in attachement.

 

It will be very useful when we have a bit toggle boolean function. Not just inverting bit it has to toggle specified flag.

 

If it is already availble in any other form please let me know.

 

 

Regards,

Y.Stalin