LabVIEW Idea Exchange

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

 

              Flush Queue with a Boolean to enable or disable it.


             Bench_1.png              pouce_levé.gif

 

 

                               Indexing OR shift register

 

     it would be nice to have  Indexing AND shift register

 

 

                    original5.png

(Resubmitted to include pictures)

 

Similar to the discussions on command and data cluster primitives, it seems many programmers would like the ability to have a primitive to move a message and some additional data easily. The current methods involve casting specific data types to generic types (i.e. Variants) which are then passed to sub-processes. Once in the sub-process, the process reverses and the data is cast back to the specific type. Many times this casting to and from generic data types not only takes time and resources but also requires managing many type def'ed controls for each specific data type used.

 

Here is a traditional method for passing data between processes:

TraditionalConfiguration.png

Alternately, if the message (such as an enum) included the specific data type definition then no casting is required. This idea involves embedding inherancy of private class data into a defined LabVIEW primitive where each command/item is its own class of private data. It's like having your cake and eating it too! Or, it's like having your message and the data too! (cheesy, i know). Below is an idea for the configuration of the "Defined Enum":

DefinedEnumControl.png

Like a tab control, each tab is an Enum Item and the controls within the tab are specific controls associated with the item. The Defined Enum loads a drop-down selection list of the private data associated with the current item.

DefinedEnumBlockDiagram.png

In the block diagram, like property nodes, the accessors would be used to get or set the values of the enum items. 

DefinedEnumAccessors.png

The sales pitch: When developing large applications where there are multiple services running in parallel it is often difficult to develop completely modular processes because the casting to and from specific data types require a control dependancy between the caller and the callee. Eliminating generic data casting would help develop a more robust hierarchy. I applogize if this idea is a repeat. Let me know what you think.

-Ryan

Similar to the discussions on command and data cluster primitives, it seems many programmers would like the ability to have a primitive to move a message and some additional data easily. The current methods involve casting specific data types to a generic types (i.e. Variants) which are then passed to a sub-process. Once in the sub-process, the process reverses and the data is cast back to the specific type. Many times this casting to and from generic data types not only takes time and resources but also requires managing many type def'ed controls for each specific data type used.

 

Here is a traditional method for passing data between processes:

Alternately, if the message (such as an enum) included the specific data type definition then no casting is required. This idea involves embedding inheritance of private class data into a defined LabVIEW primitive where each command is its own class of private data. It's like having your cake and eating it too! Or, it's like having your message and the data too! (cheesy, I know). Below is an idea for the configuration of the "Defined Enum":

Like a tab control, each tab is an Enum Item and the controls within the tab is the specific data associated with the item. The Defined Enum loads a drop-down selection list of the private data associated with the current item.

In the block diagram, like property nodes, the accessors would be used to get or set the values of the enum items. 

The sales pitch: When developing large applications where multiple services are running in parallel it is often difficult to develop completely modular processes because the casting to and from specific data types require a control dependency between the caller and the callee. Eliminating generic data casting would help develop a more robust hierarchy. I apologize if this idea is a repeat. Let me know what you think.

-Ryan

Problem:

 

if  i  wanna  take a  single event of  mouse  down  or  value  change   of  so  many  controls  like  booleans  without  grouping  them  in  clusters i  have  to  select  each  boolean  and  give  it  the  event  like  value  change,  it  is  not  feasible  with  so  many  booleans .

 

Suggestion:

 

 I  think  here  should  be something  like  tick  marks  in  event  case  so  that  we  can  just  select  the  booleans  using  those  tick  marks   or  controls  and  give the  event  groupwise.

 

I've posted an idea, but didn't add any pic to explain:
http://forums.ni.com/t5/ideas/v2/ideapage/blog-id/labviewideas/article-id/16975/tab/rich

 

 

I've attached an image with this idea. Sorry for the duplicate posts.

These are simple examples but can get more complicated. For example, usage 2 can have more input (e.g. 4) it will have 16 possibilities which have different simplified code.

 

USAGE 1: User wires some input on the block diagram, when the simplify button is used, it simplifies the complicated code to a simple one ( noting that it is not the unique solution as shown in USAGE 3)

USAGE 2: If for the application, the user changes the value of the input and he gets different output; this table can get the simplified; or the "best fit" for the number of data present.

 

In http://forums.ni.com/t5/ideas/v2/ideapage/blog-id/labviewideas/article-id/16975/tab/rich, I wanted to compare that  Partial fraction expansion vi is not widely used except for certain applications yet it is important and beneficial.

Same goes for this idea.

 

Best


 

There are alot of applications that require the use of Booleans, and when the boolean expression gets complicated or large it will be a headache on the programmer.

LabVIEW should try having a De Morgan law "function" or at least a way to simplify complicated Boolean expressions. Although it won't be used as much, it will be a handy tool for any electronics/programming course.

For instance, Partial fraction expansion isn't used regularly but when it's used it helps save time.

 

These are simple examples but can get more complicated. For example, usage 2 can have more input (e.g. 4) it will have 16 possibilities which have different simplified code.

 

USAGE 1: User wires some input on the block diagram, when the simplify button is used, it simplifies the complicated code to a simple one ( noting that it is not the unique solution as shown in USAGE 3)

USAGE 2: If for the application, the user changes the value of the input and he gets different output; this table can get the simplified; or the "best fit" for the number of data present.

 

In http://forums.ni.com/t5/ideas/v2/ideapage/blog-id/labviewideas/article-id/16975/tab/rich, I wanted to compare that  Partial fraction expansion vi is not widely used except for certain applications yet it is important and beneficial.

Same goes for this idea.

 

Simplifying Boolean.png

 

For speed of development and ease of reading code I would like to add a contitional array build function.  I use a build inside of a case structure where the true case appends on to the array and the false case does nothing,  why even have the case structure to hide empty code and clutter up the block diagram, the could be easly grouped into a singel function (see below).  I am for anything that cleans up block diagrams and speeds up coding.

 Conditional Build.png 

All time complete data logging is not necessary.

In present version if we want to log the data we have to use write function for the particular file format and we get the continuous logging facility, same time if we want the acquisition at 1 Sec and data logging after each 5 Sec we can't do it. We have to write one code to achieve this logging target. So same time if logging time selection option is there in File Write function this can give us the freedom to do data logging as per our application requirement.

 

Data Logging with Time Configuration.jpg

 

Thanks and Regards
Himanshu Goyal | LabVIEW Engineer- Power System Automation
Values that steer us ahead: Passion | Innovation | Ambition | Diligence | Teamwork
It Only gets BETTER!!!

Hello!

 

It would be helpful for me, if I had an indicator-field which shows me the latest path & file which was loaded in MAX.

 

Best regards

We are all used to creating arrays with a for loop.  I have always wondered why there wasn't a simplier way to do this.

 

What about simplfying array creation with a more advanced Initialize Array.  Add another terminal that is just "increment" or "delta".  In the example below a double array of length 1000 with a starting value of .004 and an increment of .004 per element.

 

newarray.png

I would suggest some kind of automatic save / backup option which is STANDARD unless turned off.

Something like backing up the last 60 min, max backups 5 (5 hours). This way, there always a way to go back an hour or 3 hours and work again from there (like after making radical changes you decide that those changes weren't for the best and you'd like to revert). Seeing the Save All button actually overwrites old saves, which is kind of annoying.

 

And yes, this actually has something to do with me just losing a week of work after renaming a Global Variable which keeps on crashing my main VI. And no, recovering has no use. Would be awesome to just go back a save, having only to rewrite the last hour (or so).

 

Thanks.

 

PS. I've already started rewriting the code and have no intention of recovering the old, but if there is an option as described above I'd like to know where it is and why it isn't standard issue (I can only imagine it taking up loads of disk space, but seeing 1TB disk space ain't even much any more who cares?).

 

I really like the results of insert bundle action on a cluster wire.

 

On similar lines, I would like to see the "insert unbundle action" work properly and not result in broken wires for the cluster.

 

When we remove the Bundle function, it is pretty obvious where to connect the broken wires.

 

So, it will be nice if LabVIEW can take care of rewiring the broken link on removal on the Bundle function.

It would be nice to have all LabVIEW add-ons (modules, toolkits, suites, etc.) in 64-bit versions. Especially the Embedded Module for ARM 2011+. Is this under way? I'd rather wait for this than to install virtual machine just to use that on a 32-bit XP.

HiAll,

 

Now it is impossible to change the name of x-axis when graph is wired to dynamic data or waveform. To bypass this you had to use this kind of structure: Example.png or make another x-axis scale.

 

The idea is to change this situation to make name change work every time. 

 

Thanks,

Attached is a VI which is broken in a built executable but runs in development node.

 

Please let the development system also show a broken VI or let the Runtime Engine accept this VI.

The problem is that the VI has subroutine priority and contains a static reference to a VI with another priority.

 

To reproduce include the VI in a build. (The VI can even be the only startup VI). Building passes but the executable reports an error after starting.

 

Tested LabVIEW Versions: 8.6, 2010 SP1, 2011

Does anybody else have issues with NumericArrayResize?

I am running windows 7 x64, 32 bit labview, and creating a 32 bit dll.  There is a bug on the packing of the structure for doubles. I had to add a #pragma pack(1) to the code for my configuration.

I modified an example off the NI website/help as follows.  The example originally uses uint8, change the code for doubles and it did not work.  I think the "extcode.h" has improper #if/#defines for checking system configuration.

#include "extcode.h"

#pragma pack(1)

 

typedef struct {

long dimSize;

double elt[1];

} TD2;

typedef TD2 **TD2Hdl;

 

_declspec (dllexport) long sizeToTen(TD2Hdl array);

_declspec (dllexport) long sizeToTen(TD2Hdl array)

{

  double * temp;

    MgErr error;

    error = NumericArrayResize(fD, 1, (UHandle *)(&array), 10*sizeof(double));

   (*array)->dimSize = 10;

   temp = (*array)->elt;

   temp[3] = (double)1;

   temp[7] = (double)2;

   temp[9] = 255;

   return error;

}

 

Sorry for poor english.

 

Sometimes required function the specific range highligt.

Current it can be acomplished seperate plot or two cursor.

 

New suggestion fuction is highlight specfic range for all chart & graph.

 

-> Range Highlight Enable/Disable Property

-> Highlight Scale Select Property

-> Highlight Plot Select Property

-> Range Start & Range End Property

-> Highlight Plot Property ( Plot type, Plot Color, Plot Thick ... )

 

Thanks to read.

 

 

One of the frustrations with user events, is that they are so very tightly typed, that a trivial change to a user event breaks all of its event handlers.

This is an ongoing issue for events that are triggered by one VI, and handled by VIs which are operating asynchronously, since you can't just wire the event creation node to its associated handler(s).

 

I'd like to see user events be identified by something unique, such as a name or an enumeration, and to be polymorphic as long as the data types of any associated user data are compatible.