LabVIEW Idea Exchange

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

When selecting block diagram items from the "search results" screen, the resulting highlighted area on the block diagram always seems to be on the extreme edges of the screen. This requires a finite amount of time scanning all four corners of the screen for the item. Recommend that the "found" item always be positioned in the exact center of the screen to eliminate this issue.

Thanks,

Bob

When performing some scripting I found it handy at times to create the block diagram objects, use a Cut Selection method on the selection objects, and then I would have the image of the objects in my clipboard.  The cases when I needed this I also needed to delete the scripted objects so this one method performed the delete, and allowed me to have an image of the scripted code.

 

When doing the same operations on the front panel I noticed there isn't a Cut Selection method on either the panel or pane classes and made a post about it.

 

http://forums.ni.com/t5/LabVIEW/Missing-Cut-Selection-Front-Panel-Method/m-p/3190560

 

This idea is to create the Cut Selection method on either the pane or panel class (or both I don't really care) which operates like like the Copy Selection, and Delete would today.

Hello,
I believe many of you had already the problem that you accidentally changed a VI's from the vi.lib  and saved it.

 

There should be an option to use the complete vi.lib Read only!
I do not want to change the VI's in the vi.lib at all! Never!

 


Thanks for your support.

Excuse for my bad English.

 

 

 

Sample of an open VI from the vi.lib

Unbenannt1.jpg

 

 

and in the Options Menu it can look like this:

Unbenannt2.jpg

 

Hi all,

 

the 128-bit fixed point fractional format of the timestamp type is missing support in primitives.

 

Often the user needs to fall back to the double representation of the timestamp. This happens, for example, when one wants to measure the difference between two timestamps. Also, this may result in loss of accuracy if one is not aware of what is going on under the hood. See discussion in here and example below.

 

In particular the following should be improved:

 

1) There is an asymmetry between the "plus" operator and the "difference" operator. Calculating the difference of two timestamps to get a double is as correct as it is adding a double to a timestamp, if we think that the type of a time difference is DBL. Why don't we get any warning when we sum "apples with oranges" while we get harassed when subtracting things of the same type?  That signal was enough for me to try to work out myself what was going on inside that block. I would say that only bad compilers warns the programmer about something that is perfectly legal.

2) However, I prefer a second option: the 128-bit fixed point fractional format should be printable both as absolute and relative time, as it is for the DBL representation of time. In this case the output of the difference operator applied to two Timestamps is again a Timestamp. In this case the sum of two Timestamps should be allowed. As this has been debated in the discussion above, users should be aware enough of the facts of Nature to understand that the relative time representation is more appropriate when one subtract two numbers that he/she interprets as absolute timestamps. In fact, I guess users were managing pretty well time differences when they got only the DBL representation of timestamps... Also, nothing in the language stops me to show any DBL number as an absolute time. Why should the language prevent me to show a signed 128-bit number as a relative time? 

 

The example below shows that the difference operator applied to Timestamps performs the subtraction as 128 bit before the conversion to double, therefore, internally, the difference timestamp is already calculated. Note that the inconvenient way of doing the difference (conversion to DBL before subtracting) is not enough even for microseconds accuracy.

 

Sincerely,

 

testTimestampSchema.png

testTimestampControls.png

 

I know hyperlinks in free labels have been implemented in LabVIEW 2015 and that the idea has been marked as implemented:

http://forums.ni.com/t5/LabVIEW-Idea-Exchange/Hyperlink-in-Floating-Comments/idi-p/986485

 

Kudos to that and I love it. 

 

However, there was another idea:

http://forums.ni.com/t5/LabVIEW-Idea-Exchange/Documantation-links-on-block-diagrams/idi-p/3104999

 

that was closed as a duplicate of the hyperlink in free labels, except there is a small difference in the second idea that was not really implemented. The hyperlinks do not let us insert links relative to the project, the poster of the Documentation links on block diagrams even says: "The risk would be moving the document and the link becomes invalid. This risk could be minimized by placing a documentation folder in your labview project." 

 

So this new idea is to let us either use relative paths on the hyperlinks on the free labels: i.e. file:///C:/ProgramData  or use environment variables such as %userprofile%, %programdata%, etc. For example, file:///%userprofile%/documents. This would make it possible to put links to documents in our machine that will be in a different path than the rest of the team working on the project. The documentation might be relative to the project file, but might not be exactly in the same location in each machine due to differences such as %userprofile% = C:\users\<user name>  where <user name> will be different for each team member. 

 

 

Updating a value within an array of cluster is too complicated compared to other programming languages.

 

In my application I hold an (global) array of jobs to do, each consisting of its name and an array of (different) parts belonging to this job. One element of the part's description is the number of parts already done. If I want to update this value, the code looks:

 

BlockDiagram.jpg

Note the calling function has to update the global variable after updating or JobFilesIn and JobFilesOut can be replaced by reading/writing the global which does not make the code more visible.

 

Within C code the update would look

JobFiles[JobFileIndex].Parts[PartIndex].Done=Done;

which will not raise the need of making it a function (VI) at all.

 

A solution might be similar to Replace Array Subset if the compiler is parsing the data type on the input and accepting indices and cluster element names as shown below

Replace.jpg

Of course this should work with any data type selected from the initial variable by the selectors similar to C code

variable[index].element=array;

 

 

It also should accept a cluster as top level element as well, e.g. to replace an element within an cluster of clusters similar to C code

variable.element.subelement=WhateverDataTypeThisIs;

 

or an element within an array which is part of a cluster.

variable.element[i]=WhateverDataTypeThisIs

 

All the C code examples above expand to LabVIEW code which is hard to read.

 

Although it might be tricky to implement I would like to suggest the option to add comments to a block diagram while the code is running.

 

This way you can make notes to the block diagram for debugging and/or "reverse engineering" (examining LabVIEW spaghetti for example).

 

Problem: in some of the code we need to insert the error case. it will take time to create error case and wiring to it.

 

solution: if we can able to insert the Error case in the Error wire , it is easy to Error codes insdide the case.

Inserting Error Case.png

Graphs allow displaying data in linear or log scale.

This doesn't go without glitches, so my first suggestion would be fix all the annoying bugs which exist.

But a common way to get motivated to fix a bug being to implement a few feature, here is a unique opportunity:

 

Implement symmetric log scales (aka symlog scale) on all Graphs

 

What is a symlog scale, you will ask?

It is a log scale accepting negative arguments.

 

If x > 0, then Log(x) is computed (and labeled "x", hence the log scale apparence).

if x < 0, -Log(-x) is computer and labeled "x"

 

To get a visual representation of what this all mean, Google "symlog scale" and you will most likely end up on this page from which I am linking this figure:

 

 

Of course this should work on both axes (or all 3 axes for a 3D Graph).

 

The benefit is that when a curve has negative values, using a log scale to represent the plot results in a clipped plot. All negative values are gone, leaving gaps in the plot. The only way to visualize them is to revert to a linear scale, which now clumps all small positive values to pretty much the same location on the axis.

This isn't a major issue, but it hurts my LabVIEW OCD. Global variables are one pixel too tall and it gets annoying when unbundling a cluster of values into globals.

 

Globoal Vars.png

 

Hello,

 

Could You allow to resize Rearrange Cases window? 

 

[Note from admin: dead hotlinked image removed. User asked to provide new image.]

 

By default it fits only 8 cases and it is hard to move and work with it when we have to rearrange 30 or more...

Other idea is to select many cases by holding Shift

Tired of resizing an event structure and having to relocate the timeout constant?... Simply double-click on the hourglass and type the timeout value!

 

Of course, the option of wiring to the event structure timeout input should still exist. Just like the timed loop, where you can double click and set the period, etc.

 

 

 Untitled.png

I recently starting putting String Indicators in some of my programs that identified the Routine, along with its Version Number.  I have also created Dialog Boxes with one-line Messages, usually in large size, often Bold, sometimes colored and with a colored background.  I wanted to have the String indicator displaying these one-line messages "fit the text" (if the indicator was too short, the message would be truncated, and if too long, it "looked unprofessional" and wasted space).  I found code on the Forum that was awkward and didn't scale with fonts -- I found a work-around, got in touch with NI to inquire about filing a CAR to fix the specific flaw in their Get Text Rect function that I discovered, but was told they were not interested ("You just need to add a constant").

 

After more investigation, I found an even better solution to this problem, which I have posted to the LabVIEW Community here.  While this seems to work, I would like to propose that NI provide a simple Method or Property that could be used to scale the horizontal size of the contents of both the String and Path controls to just fit the content to be displayed in these controls.  This Method or Property should work regardless of the other properties, such as Font Size or Font Attribute (Bold, Italic, etc.).  It should also work regardless of the "family" of the control (Silver, Modern, Classic, or System).   I do note that System Strings might be a problem, but I could get my code to work with the System 2.0 String indicators available on the LabVIEW Tools Network.

 

The figures show a Front Panel with "too small" indicators truncating the display of their (variable, and run-time-dependent) content, plus the same Front Panel after I run my "Size-to-Text" code on the indicators.  I'm suggesting that NI provide a Method/Property to do the "dirty work" for me.

Strings_and_Paths_2.png

Notice truncation of Text and Paths

Strings_and_Paths.png

After programmatic adjustment of Indicators to "fit" their content.

 

Bob Schor

Instead Moving to cases instead selecting one by one every time,  whenever we highlight the cases it has to show the cases.  It will reduce the

programming or debugging time.

 

 CASE STRUCTURE.png

We have a software product where we have started working with branches and sometimes have a few different versions of the repository checked out for code implementation / testing / exploration.

 

It happens that I have two (or even more) versions of projects with the same name open at a time from different paths.  Currently I switch to files view and back to check which version I am currently looking at and I just thought it would nbe nice to see the path of the project file int he title bar of the project window.

 

I know I can right.click the project, I know there are other ways to get this information but can't we have a simple indication as to the path at least SOMEWHERE in the project window?

I would love to see Markdown support added to free labels and documentation in LabVIEW. I know that you can use HTML tags to add text formatting and now hyperlinks in 2015, but Markdown makes this much easier (in my opinion) to edit in the first place. For example, hyperlinks are specified in Markdown as [link text](URL), italic text is *between single asterisks*, and bold text is **between double asterisks** when editing. The raw Markdown text could be shown when editing, and then the resulting text with formatting shown when displayed.

 

For anyone unfamiliar with Markdown, you can find detailed syntax documentation here. It is licensed under a BSD-style open-source license. I am not affiliated in any way.

I have a Red-Green colorblind coworker.  When he looks at the Silver Error Cluster, he actually cannot tell if there is an error.  Why?  Because NI decided to make green the false state and red the true state of the boolean.  So he updates his error clusters to use black for the false state.

 

Simply put, that boolean display needs either icons (like in the Modern Error Cluster) or different colors to help these people.

Hi All 

 

if NI adds the Fuctional Global Variable (FGV) tempalte in design pateren tempates in hte New window, it is easy to create FGV VI's.

and Helps the programmers, no need to create from the begining of VI.

Even it is usefull for CLD Exam also.Smiley Happy

 

 

FGV Template.jpg

A feedback node is like a shift register.  Both elements can retain the past N values.  For a shift register you can access the entire internal memory by dragging down the left side terminals.  This is cumbersome if you just want a circular buffer. 

 

A feedback node is much more elegant for this task, however there isn't a way to access that memory.  If you could, you would make it extremely easy to make a simple circular buffer (oldest element is discarded, newest element is put onto the array).  It would be very useful, especially because the feedback node is polymorphic, and can take any data type.

 

Easy Circular buffer from feedback node.png

 

 

 

 

Search for Keywords is presently limited to logical "OR" search. It would highly profit from logical "AND" Search.