LabVIEW Idea Exchange

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

The Timing palatte is looking bad with all thes gaps.  A simple fix would be to fill these holes with useful functions. I'm proposing 3 and attaching 2 from my re-use code. (I may re-create the third later)

timing2.PNG

 

Time to XL.vi (Attached): and its inverse, XL to Time.vi

12:00:00.0 AM Jan 0, 1900 is a pretty common epoch (Base Date) for external programs and converting from LabVIEW epoch shows up several times a year on the forums. and Time to excel has a few solutions to threads under its belt.   Moreover for analisys against external data from other enviornments you are often using Access, Excel, Lotus... All share the same epoch (and Leap year bug) in their date/time formats.  These vi.s have been pretty useful to me although the names may change to avoid (tm) infringements

 

Time to Time of Day.vi (Attached) has also been in my arsenal and proves both valuable and get on a few threads per year on the forum.

 

The gaps in the palatte make it a perfect fit

timing.PNG

Download All
I would love it if the Call By Reference node had a "don't wait until done" option, so that we can stop using the inconvenient and inelegant Set Ctl Val method or other inconvenient ways to pass arguments to dynamically called processes.

 

I believe the main issue with this is what to do with the outputs from the subVI (since you won't be able to use them) and I can think of two options:

 

1. This option would be settable at edit time and would break the caller if you wire any of the outputs.

2. This option would be settable at run-time and you would get default data from the outputs and an error or warning from the error out terminal of the node if you wire any of the outputs.

This one of my very old ideas and goes all the way back to InfoLabVIEW. I recently got reminded in this thread to write it up as an idea. You might have heard it before. If not, read it :D)

 

Currently, an output tunnel gets the default value for the given datatype if "use default if unwired" is enabled and a case executes where it is not wired. Recently, we also got the "linked tunnels" feature, which is more like an editing assistant.

 

Many times we have a big stack of cases but the computation of many outputs is shared by many cases, maybe with one or two notable exceptions. 😉 It would be cool to be able to define this shared "default" code only once so it is executed unless we create an exception case.

 

My suggestion is to have a new, special case that allows us to define the output of each tunnel for cases where it does not receive an overwriting input.

 

The image shows a few possibilities for an event structure (same applies for all other relevant structures).

 

A: A reference is wired across by default. We don't need to wire across any other case.

B: Nothing is defined, so it acts like today. This is the default, so everything is automatically backwards compatible with existing code.

C: A number is incremented with each iteration unless we overwrite in a specific case

D: The default output is based on the operations of several inputs.

E: If a tunnels is unwired, we get NaN (or whatever we need) instead of zero. For I32 me might want -1, for example.

F: Same as A. This is similar (but not exactly the same) as linked tunnels. (I.e. It also applies to existing unwired cases)

G: This tunnel is defined in all cases. If we add an unwired case later it would act like B.

H: (not shown): certain global event terminals (e.g. time) should also be available in the "default definition case", because we might want to utilize it for a default output.

 

 

 Downconversion would be somewhat messy. It would probably need to wire the relevant default operations into all cases where an output is not wired, keeping the functionalty the same.

Message Edited by altenbach on 07-11-2009 10:45 AM

I find the Example Finder to be a terrible eyesore.  Really.  It's to the point that I don't even like to open it up--I'd rather type in search terms on the NI Community and hope someone has posted the code there, or some similar code.

 

Example Finder Scrolling.gif

 

My major beefs with Example Finder:

 

1. Line spacing is inconsistent.  Some examples have long titles that extend onto a second line, some don't.  (See green in image.)  I would prefer to use the horizontal space on my monitor by resizing the window horizontally, so that everything fits on one line.

 

It's nice the word order is consistent among examples.  However, it's not that helpful because we can't make use of this consistency by resizing the window.  For instance--your eyes will dance around trying to find the differences between these next four DAQmx examples:

 

Cont Acq&Graph Voltage- Int Config

Filter- SCXI114x.vi

Cont Acq&Graph Voltage- Ext Clk- Dig

Start.vi

Cont Acq&Graph Voltage- Ext Clk.vi

Cont Acq&Graph Voltage- Int Clk-

Accessory Status-PXIe-4300.vi

 

Now, watch how it all becomes much more clear when you allow the window to stretch out, so there's one example per line:

 

Cont Acq&Graph Voltage- Int Config Filter- SCXI114x.vi

Cont Acq&Graph Voltage- Ext Clk- Dig Start.vi

Cont Acq&Graph Voltage- Ext Clk.vi

Cont Acq&Graph Voltage- Int Clk- Accessory Status-PXIe-4300.vi

 

 

2.  Lots of scrolling to compensate.  Before I open an example, I try to glean some information from it by reading the "Information" section--but it's hard to keep track of things with all the scrolling (see red in the above image).

 

To minimize scrolling, we should have flexible sub-windows within the main Example Finder window.  Maybe I would want to give the majority of the window room to example VI titles, and less room to that huge "LabVIEW Zone" image I never click on.  Or maybe I'd minimize the extensive list of hardware the examples pertain to, and give more horizontal room to the "Information" column in the upper-right.  The point is, however I resize the Example Finder for my use, it should stay that way every time I load it up.

 

Resizing sub-windows

 

Here's hoping!  Please let me know what y'all think.

Today, if you wire something out of a case structure, the resulting tunnel does not use the default value if it is unwired.

 

In event structures (and disable structures), however, the tunnel defaults to use the default value if unwired. This is the more dangerous choice and should thus be reversed - the default for event structures should be NOT to use the default if unwired.

 

For disable structures, the current behavior makes more sense than it does for event structures, but maybe it should also be reconsidered. One way this could work is if the code broke only if the enabled cases are unwired, but this has some issues with the conditional structures, where code which is currently disabled might be enabled on another platform or when building an EXE.

I just finished installing LV15 (and device drivers) on a new PC and I think the installer window could use an upgrade.

When expanding the different features you can install beyond 2-3 levels, they disappear out of the narrow tree-area. 

 

It would be awesome if I could then just resize the entire installer and it would grow the tree (and description) so I didn't have to use the little horizontal scrollbar

 

installer with 3 levels expandedinstaller scrolled to the right

This is a very simple improvement, since the features are almost there. I want the block diagrams look like an electric diagram, that is: Controls aligned to the left, with the labels on the left of the control and the indicators moved to the right with the labels on the right, like this:

Wish.png

 

The problem is that in current LV versions the alignments occurs on the labels as well, making look the diagrams like this:

Current.png

 

Normally you should: 1) align labels relative to the object and 2) align the objects (without the labels) relative to the block diagram. This kind of cleaning up saves a lot of space and clutter.

 

Now I am pushing my luck, but it would even be better if I could have these settings on SubVI's only, because I usually don't want this in my main.

 

Good luck 

 

One of the biggest deterrents for learning is lack of organization.  LabVIEW examples in the Example Finder are currently only half-organized.  There's a directory structure--and that's great--if I need to find a data acquisition or generation task example, I can pretty easily think through the directories:

 

Hardware Input and Output >> DAQmx >> Analog Measurements >> Voltage

 

But here's where I have to stop and REALLY search.  Not only is it hard to read through the examples (see my other idea about Resizing Example Finder), but the slew of examples make no sense in order of complexity.  The Example Finder currently appears to only organize examples based on alphabetic order.

 

For instance, take a gander at the following laundry list of DAQmx >> Analog Measurement >> Voltage.  I marked in blue the first five examples I would recommend to a new user, in the order I would recommend them.

 

Organizing Examples.gif

 

How would a new programmer ever be able to get started with those so well hidden?  I have a lot of people who ask me exactly that: "I know I just need an example, but I don't know which one!"  From a customer support perspective, I have to say a lot of time spent and confusion revolves around finding a good, pertinent example

 

So here's what I recommend::

 

Reorganize all the examples in order of increasing complexity.  How do we define increasing complexity?  Well, the DAQ and Signal Conditioning Course already has it hammered down pretty well for DAQmx:

1. We start with just a Finite Acquisition with an internal clock--the most basic acquisition

2. Then, we add a little complexity with a trigger

3. We add a little more complexity by showing how to simulate a trigger in software

4. We add a little more complexity, doing the same thing in hardware-timing

5. And so on until the very end, when we look at very special-case, fancy examples which are supported by specific hardware, and which require specific property nodes to manipulate the behavior.

6. When we've exhausted the subject of Finite Acquisitions with triggers, we move on to Continuous Acquisitions with triggers in another sub-topic of the lesson.  Again, we build up from simple to complex.

 

Not only would this simple re-ordering help new learners, but it helps re-learners who have taken a DAQ class and have forgotten which example to start with (which happens all the time).  Let's be honest--it's VERY difficult to remember everything you've taken in any class.  We should do a better job to marry coursework (customer education courses) with homework (Example Finder).

 

It would also be of benefit if we added some extra directory structure to examples--such as Finite vs. Continuous and Internal vs. External clock in the case of DAQmx examples.  It is of really no benefit to have all these examples run together, as they are now.  New programmer or experienced programmer, a long list format with a lot of reading just gets confusing.  Technically, I believe anything over 7 items is about the limit for grasping new concepts.  Beyond 7 items, an average learner will be overtaxed and/or lose interest.  Besides--adding some extra descriptive folders would help a budding programmer to identify abbreviations like "Int Clk" with "Internal Clock".

 

Organizing Examples Folders.gif

 

From my digging, it looks like the examples that are in the most dire need are DAQmx, SVXMPL (Sound & Vibration), and everything in LabVIEW Fundamentals. The CAN, RIO, and FPGA examples are actually organized a little better, but could still use some work organizing from simple to complex instead of alphabetically.

 

This is a relatively easy project an intern could do, but it would be a huge help getting new programmers through the LabVIEW learning curve.

When creating a control or indicator based on a subVI terminal or strict typedef, formatting (speicifically the radix) is preserved.  However, when creating a constant from the same source, the format is removed.  This can cause incorrect behavior to inadvertantly be implemented when dealing with components that use Octal or Hexadecimal, as incorrect values can be input under the assumption of the correct formatting.

 

 

radix.png

 

 

Instead, block diagram constants should display the same behavior as controls and indicators, and maintain the correct radix/formatting when created from an existing source.

 

 

As outlined in this post, the current identical look of the Expression Node and Convert Unit can cause serious miscommunications, since their functions are completely different.

 

I suggest that they are made to look different so we can tell immediately what we have.

 

For example the two results below are very different, even though the code looks absolutely identical if the labels are hidden.

 

One possibility would be to make "convert unit" a different default background color (example shown below), but there are probably even better suggestions. How about rounded corners (not shown)?

 

 

When the Developer Suite DVD binder arrives, the first thing I do is find a black Sharpie, cross out the name (e.g. 2010) on the binder label, and write the version of the software it contains (e.g. 2009 SP1).

 

Rarely if ever do I care which year the DVD binder shipped to me -- all I care about is the version of the software (the most important being LabVIEW) it contains.

 

Now that LabVIEW and most other NI software products are on an annual release cycle and named according to the year and service pack, I would love it if the Dev Suite binders were named the same way.

I would like to see more native support for compression and encryption/hash algorithms.

 

When it comes to compression and encryption. We are very much the poor relations to other languages that have a plethora of source and examples for SHA1, DES, 3DES, Blowfish, HMAC, Ryjindel, AES (encryption) and LZO, LZMA, LZW, GZip, JPEG2000 (compression) to name but a few.

 

Apart from "Zip" (which can only be used on files) and "twofish" (which is hardly an industry standard because of security concerns) we have very little choice but to use DLLs and SOs meaning our applications violate one of the biggest reasons for using LabView........cross-platform. We have very little in our tool-kit to make efficient and secure network applications for example. Especially if we are required to interface to existing systems that ave used these technologies for many years.

 

We cannot even write applications to access Twitter any more!

 

With the introduction of "Stream" prototypes in the new LV2010, it is essential to have these tools in our palettes.

I propose LabVIEW launch the browse dialog that Windows provides with each OS version instead of the current limited LabVIEW browse dialog on all versions of Windows.

 

Background:

The LabVIEW browse dialog looks like this regardless of the Windows OS version you're using. This is for any browse dialog from LabVIEW... the getting started window, the file menu, save as, path controls, everything:

labview browse dialog.png

 

This is OK and works fine for most things. However, it hasn't received the updates that the Windows OS has provided for browse dialogs in Windows Vista and Windows 7. Mainly... the left pane is very limited. If you look at Windows Vista's browse dialog:

vistasaveas.jpg

 

You get a much more capable left pane including favorites. The top address bar is also more capable instead of just a dumb drop down box.

 

The same thing goes for Windows 7:

browse dialog.png

 

If you are like me and use lots of mapped drives and favorite locations... it is infuriating having to give up all your favorite locations when you use LabVIEW. You always end up pathing to the same places... but can't do anything about that because the LabVIEW browse dialog doesn't support the modern Windows browse features.

 

I propose LabVIEW launch the browse dialog that Windows provides with each OS version instead of the current limited LabVIEW browse dialog. This is possible somehow... as the screen shots I took for the Windows browse dialogs were from Firefox 7.0.1 on two different OSs (7 and Vista). So there must be some API call to invoke the Windows browse dialog.

 

Currently LabVIEW only has support for Mandriva, RedHat and SUSE Linux.  What's even worse, only 32-bit versions of those are supported.  Today, 64-bit linux installations are on huge raise, and Ubuntu is getting more and more popular.  LabVIEW Linux support should be expanded to include Ubuntu, and 64-bit versions are needed.

 

cheers,

Pekko

 

NXG needs an Idea Exchange.  The feedback button is a lame excuse for a replacement.  Why?

 

  • I can't tell if my idea has been suggested before.  (And maybe someone else's suggestion is BETTER and I want to sign onto it, instead.)
  • NI has to slog through bunches of similar feedback submissions to determine whether or not they are the same thing.
  • Many ideas start out as unfocused concepts that are honed razor sharp by the community.
  • This is an open loop feedback system.

Let's make an Idea Exchange for NXG!

If you have a local variable and you either rename it's control/indicator, or you click it to change it to refer to a different variable, all local instances resize based on a centre justified behaviour, which can have undesireable layout issues.


For example here is a what happens when it's made longer next to the bounds of a case structure.
(The Boolean is provided to show how it's aligned, and also to show it resized the case structure).

 

 Screenshot

If the local variable were Left justified as a 'Write' type (expands to the right when changed) or Right justified when a 'Read' type (expands to the left when changed) it wouldn't make such a mess of things!

 

The error ring control is awesome having its parameterized input strings which supprots things like %s, %d, and %f to customize your error string.  This is not supported by the error ring when you are defining the string in an external project erorr code file however, and that is a problem since you then can't localize for multi language from external files.

 

This idea is to add parametrized inputs to the error ring for ALL errors, custom or loaded from project resource files.

 

see screenshot below.

error ring.jpg

Whenever I built something (executable, installer) I want to go to the output location to change some filenames for distribution (e.g. I change "volume" folder of the installer to contain the name and version in the program name), zip things up to post on the server, etc.

 

On the final progress screen, where it tells me that the built has finished, I would like an additional button to open the target folder location(s) in explorer (similar to e.g. when downloading a file using IE) while dismissing the dialog.

 

Right now it says:

 

"The build is complete. you can locate the built at <very long and hard to remember path spread over 3-4 lines and that cannot be coped/pasted from this dialog anyway>."

 

Well, if the builder is smart enough to know where things are, why can't it just directly take me there as an option? 😄

I want a Do Not Save option in addition to Defer Decision and Save.  When I was checking to see if this has already been Idea'd I found this thread.  Dennis mentions the Revert option, which I didn't know of.  I will probably start using this.  But, I still think Do Not Save should be included in the dialog.

One improvement that I can see helping both idea suggesters and moderators: Help us know the scope of potential LabVIEW change.

 

Many ideas here are marked complete because they've been implemented in NXG. (Samples 1, 2, 3)

The message I get from this status is, "That's a great idea. We'll put resources toward making our next-generation product do that awesome thing, but it's more work that we want to do on the current generation product."

 

Many others are marked declined because significant changes to LabVIEW aren't planned (presumably in consideration of end-of-life). (Samples 1, 2, 3)

The message I get from this status is, "That's a great idea, but it would cost us more than we want to put into our current-generation product."

 

I think both of those messages are totally valid, but I find myself increasingly reserved about suggesting ideas here because I don't know where those thresholds lie. Could the community receive some guidelines on what type of change might make it into LabVIEW? If we had those guidelines, we could save our own time by only suggesting things that might make it in and we could save the moderator's time by reducing the number of ideas to have to process.