LabVIEW Idea Exchange

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

In ini (configuration) files it is desirable to commentout keys as well as add comments to Sections or Keys, thsi can be done with

;this is a comment

 

Why is there not functions for adding comments to an ini file

 

The functions I would like is

- Add comment to section/Key (if key is blank, the comments are added below the [section] tag)

 

I want this so that I can keep track of what the sections and keys are used for in a complex application or for putting notes into an ini (ie ;do not change this filed or ;valid values are 0-100)

 

The only method I see for this is to parse and write the comments manually of using a text file section. 

When I looked into the low level format of the ini files it is just a queue of clusters which keeps track of sections and key-value pairs, there is a comment filed but I dont see it ever used, was this a planned option that was never implemented.  I do not want to write my own since this now requires access to provate functions of the config libraray and I have been burned by this already (NI decides to make a function private and future code is broken).

One of the recent great additions to LV (for me at least) was the parallel for-loop.  This is a great and quick way to essentially generate a worker pool.

 

The only drawback I see is that we need to know the total number of iterations in advance which can mostly be OK but .

 

By allowing essentially the same function for a while loop  we can spawn parallel processing workers for an indefinite period.  For operations which can be spread over multiple cores and whose execution order is not important (or whose order can be re-created afterwards) this can be very tasty indeed. 

 

An application I have is the processing of data which is being input via Queue and whose output can be sent also by Queue (as a part of the incoming queue data).  I don't care which worker processes which queue entry as long as they run in parallel and the output goes to the right place. 

 

I abuse this a bit at the moment as can be seen in THIS post.   This approach is limited by the neccessity to know the total number of loop iterations in advance.

 

Shane.

I have always disliked storing extra data with controls in the description section of controls, vis....  This section already has a use for documentation.  I have seen this hijaced for language information, user access security even requirements gateway.  It would be nice if there was a properys similar to a string/binary data section that was devoted for meta data.  This meta data is only accessed programatically.  Users could use this to keep extra information about any Gobject (read or write to this maybe even lock it)  that is useful for coding.  I dont know if this is even possible since it would not be backwards compatable.  This allows metadata to be shared and linked to a reference.  Is there a beter way to do this.

 

 

Message Edited by Support on 01-08-2010 04:43 PM
I would like to see the "radix" visible in the probes for "Numeric probes" and "hexadecimal/coded display" for "string" probes
I really like the idea of being able to define error codes and descriptions in an error.txt file.  It's very convenient to be able to see all the errors in a single place.  However, the location the error.txt file must be stored, to be blunt, stinks.  Instead of storing them in user.lib\errors (which creates a useless palette item) how about putting them in user.lib\_errors?  It would also be nice if the Error Cluster from Error Code VI had an optional filename input to define which error.txt file to use when looking up the error.

Currently the synchronous and asynchronous modes of writing data have little to no effect when communication over TCP. The write will return immediately after buffering the data to be written. However, the data it self may take considerable time to actually be written to the network. Absent some type of hand shaking at the application level there is no way for an application to wait until all the data has actually been written. The native LabVIEW TCP Write behaves in the same manner as the VISA write. Given this behavior it is impossible to implement a well behaved write queue for queuing up and transmitting data to a device. For example a normal print queue will open a connection and send the data to the printer. It will not attempt to open a second connection for the next print job until the first one has consumed all of the data. If a large amount of data is being written it can take time for all of it to be transmitted. The way the VISA or TCP write VIs behave the print queue would open a connection and write the data. However the call to the write would return immediately because the lower level network stack has accepted the data and buffered it. The print queue then believes the first job is complete and begins processing the second job. This will mean that a second connection will be opened. Some devices will allow multiple connections and some do not. However without the ability to actually wait for the data to be completely written the queue would have to continually try to open connections. This would be unnecessary network traffic and and unnecessary communication with the printer.

 

I would like to see an open on the write VIs to allow for a true blocking write. The write will not return until the data has truly been transmitted. The current behavior is also valid and can be retained.

 

Note: I have not tested the behavior on other types of interfaces so I am not sure if this is a TCP only issue.

We have an application that extensively uses queues, both named and unnamed.  We suspect that one or more of these queues -- probably an unnamed one -- is not being properly drained, and over time is leading to a memory leak.  I would like a means to programmatically examine all the queues in use to determine whether any are growing without bound.  I looked for a way to do this and found this link.

 

The answer here is pretty unsatisfactory.  Our queues have a multitude of types, and replacing every get/release queue with a registration VI specific to that type would be very tiresome.  What we would like is a way to obtain a generic queue reference to each queue -- named or unnamed, suitable for use in Get Queue Status (providing the Elements Out output is not used, as that would require knowledge of type).

 

It would be fine if the refnums were "read only", that is, they could not be used to modify the queue in any way.  Come to think of it, read only refnums might be useful in themselves, but that's another post.

 

If anyone can think of a way to do this with the existing features of 8.6.1 or LV 2000, I'd like to know about it, but there seems to be no existing method for doing this.

We are getting into trouble with all these run-time engine updates! Every time a new release or service pack come out we have to create a new installer with the new run-time engine and send it out onto all our customer's machines. It is not convenient to develop in 20 different versions of Labview and we like to keep our executables and updates recent.

 

Our instruments run on XPe with very little extra room for an additional RTE every 6 months. Asking the customer to uninstall old RTEs is painful as they are not supposed to go that deep inot our XPe build. 

 

I would like to see a modularized run-time engine where we don't need to update the whole thing every release. I know  with .NET updates are only necessary in 3-5 year increments. That would be much more acceptable IMHO:smileyhappy:

 

Traditional IVI drivers haven't worked. The industry has been waiting for this for too long.

 

Best regards, Pavan

If a Facade VI of an XControl registers for some dynamic events (whatever the source), a firing of one of these Events will NOT trigger actual activity (Facade VI activity) within the XControl.

 

If we register for a static Event (Mouse move on the FP for example) we DO get a trigger for the XControl (Facade VI becomes active).

 

The unusual situation rises that the Danymic events are registered but not executed UNTIL a static Event is called, after which all of the dynamic events are also dealt with.

 

Please make it possible for Dynamically registered Events within an XControl to "trigger" the XControl just as static events do.

 

Shane.

If you do a dynamic call from a built application and it fails because the VI in question depends on a VI that it is unable to locate when called in a built application environment - the only way to figure out what went wrong is to rewrite your app so that it opens the front panel of the VI, and then click on its broken run-button...There should be a way to get that error description without having to do anything with the application.

 

The real challegne however comes when you run into the same problem on a real-time target. There you can not open the front panel...and basically have to search in the dark to find a solution.

 

Feedback to the programmer's machine would be nice, but it should not only work when you have LabVIEW running. It should be possible to e.g. put a switch in an INI file...and then get a text log that describes, in full detail, what goes wrong with the dynamic calls.

I like using Linux whenever I can, particularly when running large software like LabVIEW, since it tends to crawl on my XP systems. I was happy to realize that LabVIEW works on Linux, but soon after I was disappointed by the lack of usefulness of it when interfacing with hardware. I need to use the RealTime module to interface with my RealTime Compact-RIO. I also need Linux support for the FPGA module, as I need to program the FPGA attached to my cRIO. I'm sure I am not the only person who would like the ability to do this.

 

Without support for any of the hardware or LabVIEW modules I need, the Linux version of LabVIEW is entirely useless to me, and XP as an OS simply cannot perform up to par for me.

Hello everybody,

 

(as suggested I will separate my idea Expand the functionality of Event structures into four seperate ideas to allow giving kudos separately.)

 

Make it possible to add conditions to events, e.g. only allow event foo, if condition bar is True. I'm not sure, how this should look like. Some static conditions could be "key pressed == a" coupled with "key down" event. Conditions could also be coupled to controls via registering the control reference like dynamic events. If my idea Expand Event structure functionality: Register new types of references is realized, a condition could also be something like "tcp/ip connection is offline". If a condition is not fullfilled, than either nothing happens or there is a leftside node, which indicates the status of the condition. This should be configurable.

 

Regards,

Marc

When a subarray is created, the data is copied from the origin-array.

 

The LabVIEW Compiler does not recognise if the subarray data is then only read.

It would be a major improvement for memory and even CPU usage if the compiler recognised that some part of the array is only read and pass only a reference to that part of the array in the memory.

 

It would be helpful to add an option like "Digital Value" in the DAQmx Trigger.vi (comparable to Analog Window).
Background: when missing the edge of a digital trigger signal (due to being late in code execution after eg. waveform reconfiguration), the trigger event does not happen. With this new option it is possible to execute the trg event asap after missing the edge. 

Many times, at least in my codes, it's necessary to act only on a rising / falling or changed edge of a boolean signal.

Probably this option can be added for CASE-structures with a boolean-type case selector of cause. 

Hi

While working with LabVIEW I would suggest that there are broken arrow that shows that the code is not complete if we left to wire any input or output.

I would suggest that there should be an option in the block diagram that we can select the active region (it could be as to draw box) and LabVIEW should only consider code that is inside the box and outside of the box if any unwired input  or output should be ignored.

 

I hope  I made my idea clear.

 

Thanks

Asif 

It would be useful to add a Boolean for resetting "First call?". Sometimes it might be required to reset a first call during a run.   
It could be as following:

KhalilEslami_0-1684738034968.png

 

It makes no sense to write the channel name every time with TDMS write. You could easily improve write performance and disk utilization if you stored the channel names once and used a smaller alias to them (see example below). There are other work arounds including buffering

https://knowledge.ni.com/KnowledgeArticleDetails?id=kA00Z000000P9reSAC&l=en-US

But the downside of buffering is that the data is stored in memory so if you lost power, you would potentially be missing a large chunk of data. Also, this solution is compatible with the buffering idea in that this would make the files even smaller.

In my example even after just 100 writes, the example using the lookup table is 20% smaller.

We can also get even bigger gains if instead of using hex-ascii strings for the short names, we used an integer.

 

TDMS long name lookup.png

I really like the option to use indicators (connected to the connector pane) as the output for webservice methods. By default, Labview will serialize it to JSON, but text and xml are also options. It works quite well and it saves a lot of coding writing your own serialisation.
I have some suggestions for the serialize functionality:

 

1. order the JSON output by tabbing order when there are multiple output indicators. This prevents that you end up always clustering all controls into one, just to enforce order.

 

2. it would be nice if an enum could be represented by its string instead of its index.

 

3. support for maps