LabVIEW Idea Exchange

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

I really like the changes to the Create Data Member Accessor Screen in LV2009 (and LV2010).

 

I like the Place new accessors in this folder logic.

One thing that would be cool to extend on it would be if the screen allows you to set the scope of a new Virtual Folder at the same time.

 

21684iC82E6A87291349BB

 

This would save time as you would not have to right click and set the scope of the new Virtual Folder from the Project Window the first time it the Virtual Folder is created.

If the Virtual Folder already exists in the Class then this option should be grayed out and disabled.

The current implementation of the integrated SCC options have an option to exclude (or ignore) vi.lib and instr.lib files.

Mysterically user.lib cannot be excluded!

This ought to be fixed.

 

Ton

Hello,

 

I work as a LabVIEW integrator and for one of my customer I develop application, with maintenance goal for their installation all over the world with RS232 or Bluetooth communication for example, deployed on targets as PDA (PocketPC 2003 & Windows Mobile 6) or Touch Panel (Windows CE 4.2 to 5.0) using LabVIEW 8.6 Mobile Module.

This LabVIEW additonal module works quite well to deploy the same application in this differant targets, but I encountered some problems and I have some suggestions for Mobile Module :

 

1/ MMI (Man Machine Interface)

      -  for graphics indicators (as Gauge or Slide) graphical object ramp or multi Slider is deleted by LabVIEW when you build an EXE => I think that a graphical objets with all its graphical property could be added in Mobile Module (and works on these all targets). See examples in GraphicalObjects.PNG

      - as I say in my introduction my application is deployed all over the world and usually I used "Caption" dynamic modification for multilingual management for all my controls & indicators. But in mobile module we can't do this (but we can modify dynamically boolean text), so I think that it could be possible.

 

2/ VISA (& Bluetooth) Management

      -  I think there is a bug with VISA installation. Indeed with the installer you can choose the installation directory (default directory or specific directory : in non volatil memory) but if you don't install VISA support in default directory it doesn't work (with PocketPC 2003 for example) I think that could be resolved

-  As I said in introduction my application could communicate throught different protocols (RS232, Bluetooth) and with LV 8.6 Mobile Module we can now use VISA : great !!!. But in Windows Mobile 6, VISA does not support bluetooth (it seems to have an incompatibility with virtual aliases in the registry) ; and in PocketPC2003 it works very well. I think that could be resolved

Let's Encrypt is an Certificate Authority (CA) that provides FREE TLS certificates for people and organisations to secure their websites and servers. Their certificates are valid for a maximum of 3 months, but client applications can automatically update the certificate when due.

It would be very nice to have this functionality in the NI web server. Exipiring certificates are cumbersome to manage.

Hello,

 

Actually the LabVIEW project Build Specification allow to create an old style DLL shared Library.

This kind of DLL is not so user friendly to use, because you have to define the DLL function prototypes, when you want to use them  ...  (Import, declare ... )

 

It would be nice, to be able to create a .Net DLL shared Library which is more easy to interface. (Without declare, import ...)

 

Build specification.png

The DotNet DLLs can be used without having to create Import declaration.

The self documentation of DotNet DLLs don't need to declare all function prototypes when you want to use them.

 

My need is :

- To create LabVIEW drivers libraries

- To create Packed libraries, from these librairies, to be used by LabVIEW projects or TestStand sequences.

- To create DLL from the same libraries, to be used by dotNet projects

 

Thanks a lot for reading.

 

Manu.Net  

if only LabVIEW can read and write PDF files, since it is already an open format. needless to say for the function of writing in report generation, but reading from PDF can also provide: text, picture or even CAD data that can then be used from automated mass data entry, QC vision inspection (CAD vs fabricated), augmented reality visualization of measurements (temperature, stress, vibration, etc) and much more...

 

if only...

If we can have instrument simulator VIs, we can test our codes prior to the actual hardware acquisition

 

The idea proposes device driver packages from IDNet to include a vendor instrument simulator VI that can be run prior to code testing. The VI can be configurable (VISA based on virtual ports created during runtime, file paths to read from to simulate measurements and responses to messages, etc) and started asynchronously (call & forget) at the start of the program and terminates when the caller terminates.

 

or as a template from the "New > Simulated Instrument" where user can modify according to the instrument that they are going to use.

 

...and that it covers NI and 3rd party instruments

LabVIEW AF is a fantastic tool to create multi-threaded messaging applications the right way. It promotes best practices and help write big yet scalable applications. 

I feel however that there is not enough included in the box 🙂 When looking at many other industry implementation of the actor model e.g. Scala Akka, Erlang, Elixir, microservices in many languages etc. you find that the frameworks usually include many more features. https://getakka.net/

 

I understand the decisions behind the design for AF yet would like to start a discussion about some of these.

I would like to see the following features being included into AF:
1. Ability to Get Actor Enqueuer by Path through hierarchy of actors e.g. /root/pactor/chactor could be used to get the enqueuer to chactor. This would probably require actors to have unique paths pointing to them. Having a system manager keeping all enqueuers on local system is not a bad thing. It is a good thing.

2. Ability to seamlessly communicate over the network and create your own queue specifications. For example actors should be able to talk between physical systems. Using the Network Actor is not a good solution, because it is simply to verbose and difficult to understand. The philosophy of AKKA should be embraced here "This effort has been undertaken to ensure that all functions are available equally when running within a single process or on a cluster of hundreds of machines. The key for enabling this is to go from remote to local by way of optimization instead of trying to go from local to remote by way of generalization. See this classic paper for a detailed discussion on why the second approach is bound to fail."

3. Improved debugging features like MGI Monitored Actor being inbuilt. https://www.mooregoodideas.com/actor-framework/monitored-actor/monitored-actor-2-0/

4. Included Subscriber Publisher communication scheme as a standard way for communicating outside the tree hierarchy. https://forums.ni.com/t5/Actor-Framework-Documents/Event-Source-Actor-Package/ta-p/3538542?profile.language=en&fbclid=IwAR3ajPR1lvFDyPFP_aRqFZzxR4FCQXh2nB2z0LYmPRQlnvXnsC_GQaWuZQk

5. Certain templates, standard actors, HALs, MALs should be part of the framework e.g. TDMS Logger Actor, DAQmx Actor. Right now the framework feels naked when you start with it, and substantial effort is required to prepare it for real application development. The fact that standard solutions would not be perfect for everyone should not prevent us from providing them, because still 80% of programmers will benefit.

6. Interface based messaging. The need to create messages for all communication is a major decrease in productivity and speed of actor programming. It also decreases readability. It is a better with the BD Preview in Choose Implementation Dialog in LV19, but still 🙂

7. This is more of an object orientation thing rather than actor thing but would have huge implications for actor core VI, or Receive Message VI. Please add pattern matching into OO LV. It could look like a case structure adapting to a class hierarchy on case selector and doing the type casting to the specific class inside the case structure. You could have dynamic, class based behavior without creating dynamic dispatch VIs, and you would still keep everything type safe. https://docs.scala-lang.org/tour/pattern-matching.html

 

The natural way for programming languages to evolve is to take ideas from the community and build them into the language. This needs to also become the LabVIEW way. I saw a demo of features of LV20 and I am really happy to see that many new features were inspired by the community. Lets take some ideas about actor and add them in.

 

I wanted to share my view on the direction I think AF should go. I see in it the potential to become the standard way to do big applications, but for that we need to minimize the barrier to entry.

TDMS files generally come in pairs.  There is the TDMS file itself which contains all the data and meta data stored in the file.  And there is usually a tdms_index file.  This is the file with the meta data in it, but not the actual data.  The idea being that this index file is created from the original file, but since it doesn't contain all the extra data, it is faster to search through for a particular offset in the file to find something.

 

If a TDMS file exists in a folder without a tdms_index file, it will generally be created when calling the TDMS Open function.  This means when DIAdem indexes it, or when Excel Importer opens it, or when Scout opens it, this index file is created.  Often a useful way of looking at a folder of logs is to look at the Date Modified or Date Created and look at the newest.  But if we are viewing a folder of TDMS files which don't have the indexes, as soon as we open one to view it, the index file will be created with the modified and creation date being set to right now.  This suggestion is to have it be set to the same value as the original TDMS file.  As always pictures are useful.  Here is a folder of TDMS files sorted by the date modified.

 

Before Open.png

After double clicking that file the TDMS editor of choice opens it and the directory looks like this:

After Open.png

The index file is created, but since it has a newer mod date it moves to the top of the list.  My suggestion is to have the index file have the creation and mod date set to the TDMS file so the directory will look like this after it is created:

Proposal.png

Yes I realize you can write code to set this but I can't think of a reason why I would ever want to know what the date and time that the index file was created.  I'm only interested in the data, not the index file.  If this is implemented on the TDMS API side of things, then all tools that get made from that point forward will have the file modification set automatically.

From LabVIEW Project, we can access the last modified files, from the menu File>Recent Files.

 

Recent Files1.png

 

 

When we work with a large amount of files, it is very useful, so as not to have to navigate the whole tree, to find the last modifies files.
But not always we will want to access the recently modifies files, so I propose to create a quick access category in the project tree.

 

Quick Access1.png

 

 

When we work on a project with a large number of library, class, vi,... it can be difficult to find the files that need to be modified, so it can be very useful to have quick access to those files that the developer considers.

Formula node is a great tool for evaluating mathematical formulas and expressions. However right now, you can one time input text into the formula node (during application development) and after compilation, the node does only this one added text and any change would mean a recompilation of the code. It would be absolutely fantastic to dynamically load the node text for example from some file…the node would then have not only a variable input, but also one text input, and the text would bet the formula node text.

It would then be a upgraded sort of a „eval formula node.vi“, which would accept also syntax for while loops, for loops and all the other stuff and not only a regular expression.

 

Easy printing the test reports with the Front panel as per the A4 Standard.

For making the A4 Standard printing needs the option to make Pane A4 Size.

Then we can make easily create the front panel reports easy manner, add Indicator (result ,title, logo, auto signatures etc)  in the report and generate the print out.

Pane sizing to A4 Sheet.png

Download All

Hi,

 

I've recently been handed the task to reevaluate our NI licensing needs.  We're currently using a DevSuite setup, with some add on modules and sourcing wants me to evaluate a setup with Labview Professional and the associated add on modules.

 

Now I have a large code base to check and it would be good if there were a tool which would automatically tell me which add-on modules are used in a specific project.  It could be a menu selection in the tools menu called "List Used Add-On Modules" that checks the project for vi's from add-on modules and lists these.

 

Br,


Albert Lederer

It's not secret that .NET or ActiveX object on front panel appears to be child window of NI container clipping window, which itself is a child of front panel window. When there's only one object in the container on FP, it is easy to get its window handle (HWND) by calling GetTopWindow or simply by iterating through all child windows of FP. This handle has to-one correspondence with automation refnum on block diagram. But when there are several .NET/ActiveX objects on the panel, it's impossible to identify their handles with refnums on BD.

 

The way of handle obtainment could be implemented by any of the following methods:

 

1.

Autorefnum To HWND.vi

 

2.

 Window Handle Property

(or let it be private property, being activated with special *.ini key)

 

3.

MgErr AutoRefNumToHWND(refNum, hwndp); - this variant is analogue of LabVIEW Manager function FRefNumToFD, where refNum is automation refnum of .NET/ActiveX object (type LVRefNum) and hwndp is pointer to child window handle (type HWND *).

 

Probably many people may consider this idea unimportant, but when it comes to drawing different shapes, displaying text, copying window content etc., my suggestion may be very relevant.

Presently LabVIEW and it's toolkits ship with a number examples.  At the same time there is a massive amount of information and examples with content like the examples and the things that are much more.  When I am searching for an example I often can't remember if I saw it on the web or in the examples.  So first I open the Example Finder, a tool that I really like, and search for things there.  Then if I don't find what I am looking for there I open up a web browser and search the NI Communities, then the NI forums and other forums (like LAVAG.org).  It would be nice that instead of having to use to programs the Example Finder could give a list of possibly related items on the NI forums.  I think this could be managed using the existing tagging feature of the forums with perhaps by having an #example_code tag.  A crawler program could then parse though the tags and grab the links to pages of possible matches populating a database.  Then this database could be access by the Example Finder for related info.

 

Another option would be for me to be able to find a link I like and attach it to my example finder or perhaps to my NI.com community account.  That would be useful.  

 

Actuallly, if there was an API for example finder that'd work too.

Hi,

 

what does the community think about configurable automatic type conversion between .NET and LabVIEW? We need to deal with a .NET API for a sensor which handles system time with nanoseconds since the 16th century. Don't know why they're doing this stuff.

 

To set the appropriate time you have to substract two .NET DateTimes. Everybody will know this will look like in LabVIEW.

 

TS01

 

You will have to use a method of the object to substract this. Now you're using DateTime.Substract. This means in LabVIEW.

 

TS02

 

Here it would be nice to have a checkable item in the right-click run-time menu for the invoke / property node to select or deselect the automatic type conversion so that the Substract() method would accept a DateTime class and not a LabVIEW timestamp.

 

TS03

Hope the idea is clear enough. I've checked the idea forum for this entry but didn't found it. If so, don't shoot me for a double post.

 

Tyler.

When using dll's or .Net assemblies, you always have to right click & hunt down which version gets used for the constructor.

It'd be handy to have the version shown in the Help. I already know it's a constructor node, that's not much help...

I would prefer better and much more error messages in the DLL import assistant.

- I had a unknown data type of I64 as "long long". But LabView only knows "__int64".

 

The only message was "could not import function xxx"

I prefer the line of header file, there the import stopps. Two days of searching, and only small hints from the NI support...

 

Peter

Property nodes for LVClasses are a tease, this is what I really want:

 

Invoke nodes that correctly wire call dynamic dispatch by value VIs (this includes the ugly wireing of the "preserve runtime class" inside the in place element structure.  Its ugly, just obfuscate it for me.

 

References to Data value references that correctly respond can use the "to more generic" and "to more specific" class so that I have the DVR to the more specific.generic class REFERENCE.

 

Justification for Invoke nodes:

I work with lots of different Classes, and libraries.  I can quick drop alot, but I do not know all the publicly exposed functions in a give class especially since 90% of the time it is still in development.  Generally a pallete won't see the light of day in internal development (somewhat of a pain to make/maintain, definately not a single click operation), so getting the correct methods involves paging back and forth between the project explorer, this is slow.  I want to code quickly, if I can have the Public api exposed by an invoke node it means I dont' ever have to make a pallete of VIs (we can argue over this all you want, it just isn't simple/fast enough)  and I can access the functions much more easily/quickly.  Even if every class had a pallete, it would still be inferior to the invoke node solution because A.) I have to remember where every pallete is. B.) Sharing/installing pallete changes for other developers is PAINFUL.  I want to give them a zip file that they can chuck anywhere.  I sure do not want to make a scripting function to update there palletes, so it requires file moving/installation/making sure they actually put the class in the right folder (which someone will always do wrong and invariable cause me to right arrow enter 1000 times when I receive their project.)