LabVIEW Idea Exchange

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

Hi

 

Suppose we have a big code in that a part of the code need not be executed ( still obeying the data flow).There is no option to do that .Those who are familiar with Matlab /Python  know there is acommenting option .Once commended thet statements will not get executed.The problem with LabVIEW now is in abid code if we want to try if a node need not get executed we have to delete it then claerind of wire will come.If we want to include it again we still have to do thwe same thing.If something is there ( may be a rectangle) when drawn around  a particular node keeps it away from the execution it will make development/testing  easy

 

Please update the XML parsing pallette (specifically the load VI and Node.XML invoke node) to be able to get the actual text contents of a node when it contains ">" or "<".  Currently, if the node text contains ">", the Result XML of the node is displayed, with "&gt;" substituted for ">".  If the node text contains <, the XML document won't even load and throws an error.

 

To see this behavior, use the LabVIEW example: Query XML Document for a Single Node.vi

 

Modify any text tag contents to contain either of these characters.

 

 

Hello,

LabView permits to import three different 3D file formats: VRML, STL and ASE.

So LabView can handle these file type, but is not possible to export any CAD format with LabView.

In example can not be exported to a CAD format simple x,y,z points generated by a mathematic process in LabView.

Next future will be possible to save CAD formats?

 

 

 

In some cases we may have functions called from DLLs, which cannot be not terminated in "normal" way due to some reasons.

When source code for DLL is available, then this is not a problem, but for third-party DLLs this may be terrible.

 

All what we needed is Timeout for External Code Call.

Let me explain. For example, we have code like this:

 

01.png

when such external code called from VI, then this VI cannot be stopped

 

Suggestion:

 

add Timeout option to the following dialog:

 

timeout-setting.png

 

When enabled, then the following input will be shown:

 

timeout.png

 

And timeout can be programmatically defined on the block-diagram:

 

suggestion.png

by default -1, of course.

 

I fully understand, this is dangerous thing, but in some cases we needed this. Suggested is something like TerminateThread function.

 

Back to the code above, when this code should be terminated, then we needed wrapper something like this:

 

02.png

 

Then this function can be called in separate thread:

 

03.png

 

And now we can terminate execution with TerminateThread function:

 

04.png

Then in LabVIEW it looks something like this:

 

06.png

 

Now we can "Abort" our infinite DLL call without any dialogs like "Resetting VI", etc.

 

Again, this is dangerous feature (but not more dangerous as TerminateThread itself), and may be is necessary in the most extreme cases, otherwise the only way to stop the application is taskkill.

 

 

Problem:

 

When you want to have the organization of your files within the project file different from the folder hierarchy on disk you are not able to connect to a vi dynamically through vi server because you simply do not know the path which the builder has created within the executable.

 

To rebuild and maintain the folder structure of the disk in the project file is time consuming and error prone.

 

Solution:

 

A small tool which extracts the actual paths within the executable so you can copy the correct path to your vi-server call would do the job.

I miss the ability to wire a cluster reference to (un)bundle by name nodes. If I have some parallel processes that share a common configuration bundle for my project, I'd really like to be able to only have one copy of the bundle in memory. This is possible if I use a reference to a cluster. However if I do that it gets really complicated to get access to the content of the bundle. If I use 'property node --> value --> unbundle' I load the bundle into memory anyway in an extremely inefficient way before extracting the control of interest. If I use 'property node --> controls --> index --> variant to data, everything is suddenly very fragile to cluster changes, not to say needlessly complicated.

 

If you could (un)bundle a control directly from the cluster reference you would have easy and very efficient access.

 

What should then happen for non control references? I'd say the same as 'property node --> value' with the name of the control displayed. It could even be possible to access variant data by using the variant --> cluster -->variant functions.

 

Of course this method is subject to race conditions, but that is always the case when you use references anyway.

 

I'm currently working on a project where I have 9-11 active parallel processes where each process needs access to the configuration cluster. Thus I have 9-11 copies of all my configuration data in memory all the time. I'd really love to reduce that number to one.

 

This is my first post here. I did check for similar ideas, but I didn't find one.

 

-Henrik, Denmark

As a LabVIEW user, I would like to see who has called the current VIs when a breakpoint is placed on it.

 

From the stack view, when a vi is double clicked, the corresponding vi block diagram should open highlighting the block diagram area from where the call is made to the next vi.

 

If posssible the stack view can show the inputs and outputs of all the VIs in the stack view.

 

An example screen is provided as an attachment.

 

A picture is worth a thousand words !

abc.png

 

 

Allow users to wire an XControl with the error line.

like this ,

 

SR.png

Will be great if exists a function to convert any numeric type to byte array or any numeric type array to byte array

like Array to String Function and fast like.

 

Now we can use typecast function to do this, but is very slow, compared with string to byte array function.

 

Split or Join numbers function are not pratic if we splitting u64 numbers from to u8 numbers and generate local

copies of numbers.

 

u32--------------DD---------------[u8]

u64--------------DD---------------[u8]

[u32]------------DD---------------[u8]

 

 

[u8]--------------DD---------------[u32]

[u8]--------------DD---------------[u64]

 

 

It would be nice to have a primitive to check if a certain value is in an array. It seems like something that would exist already.

There's really nothing more to say here.

I fear this may be an old-school post, but unless I've missed a recent update, it's my understanding that fundamental LabVIEW teaching is that Locals duplicate memory and should be sparingly used.  I've always known it, and I've ALWAYS disobeyed it.  I love locals and I think they make code cleaner and encourage their use. 

 

So my idea is, if Locals waste memory, please make them NOT waste memory.  A local should be the functional equivalent of updating a Value Property Node in LabVIEW, and of stating VarName = 1234 in any other programming language in which I can set the value of a variable as often as i want anywhere I want, and it doesn't waste memory.  So if we can make Locals good again, all the more harmony.

 

Here's hoping this is a good/novel idea, yet if it's already fixed then Kudos to NI.  I'd hate to think they have structures in LabVIEW with a note that says "PS... don't use this" in the training material. 

 

If I'm wrong about their fundamental behavior now or earlier, let me know. 


Labview has a way of creating the equivalent of static variables in a VI similar to static variables in OO languages or function-scoped static variables in C. This way is through the use of uninitialized shift-registers in single-iteration loops (i.e dummy loops).

If multiple instances of a VI is created and the VI contains such a static variable, the value of the static variable persists from one instance to the next. I can see why this is useful, but I think it would also be useful if there was an option to make static variables of different instances of a VI separate.

Static variables are primarily useful for VIs that have some concept of state and you don't want to explicitly create a state variable or cluster that the user has to manually feedback with outside signals. For example, if you created a VI for a PID controller or a state machine, and you wanted to use an uninitialized shift register to store that state, you can not create multiple instances of that VI with out having the two instances intefere with each other. The two instances cannot maintain independent state.

I ran into this problem while creating a VI to implement a moving window of values. (as a side not, it would be useful to have a moving window VI)

A programmatic eevent can be generated using val(signal). The problem is that every time val(signal) is called it generates an event, (even when it is a non [false] event). Just like keyboard events that only occur when a key is pressed (and/or released), can val(signal) be modified to respond in the same way. In other words, if val(signal) is given the value "False", it should not generate an event, only generating an event when val(signal) is "True". This would make code writing so much easier and stop the possiblity of potential race conditions.

I have a multiple step ATP systems that Operators would like to see Gray for Not tested, Red for Fail and Green For Pass. Currently I overlay two boolean indicator Enable the correct one and set it to true. It would be great to have a single boolean indicator with tri color output.

The second element in the ROI cluster is an array of Contours yet many sub vis will only act on the first contour in the array. Both the required contour descriptors(line and annulus) are available in the example image, but since the first element is a line, the circular edge find - which wants the annulus - throws an error. 

 

All it would take would be a simple index and logical test to fix this issue.

All the simple Numeric operators (add, subtract and multiply) do not show red dots when you wire, say, two integers. "Divide" does, but should not! The Divide operator coerces everything to a double!...

 

In all other languages, if you use the divider operator (the slash /) it conforms to the operands passed: divide a double by a double and you get a double; divide integer by integer and you get an integer.

 

Please make the Divide operator not upcast to a double!

Hi,

 

I develop LabVIEW long time and I find it unfortunate that we still can not change a value of a variable (or wire) for testing code or to continue to debug our application.

 

The solution would probably be able to change the value directly on the probe, in case of breakpoint with probe of course.



Most of the languages ​​do this, so why not LabVIEW ?

 

 

 

JC

NI smartcams + VBAI provide a really neat and fast way to get results in image processing - however, predicting their performance is close to impossible. Information like "DSP coprocessor" is nice, but it's not adding any information that I can use.

I have benchmarked the devices that went through my hands with some standard resolutions+ROIs and algorithms, so I have some idea, but most of the time I just wonder "Would this work on a 1774?" "Would it work on something slower?" I usually call an engineer and try a loan device, but this takes time and rather static concepts.

 

I know that algorithm runtimes (especially the more complex ones) strongly depend on the sample data, so it's not just a matter of scaling, but even an estimate (like 8-12ms) would improve my experience rapid prototyping.So, I'd just use Profile->Performance Meter -> Profile for NI 1772..