LabVIEW Idea Exchange

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

Hi

 

it would be great if there would be a better platform for 3rd party VIs, for example instrument drivers. Something that allows you to see when the last updates where done, what has been changed (browse the code) and also something that would allow you to branch from the existing code, add changes and sent a pull request back in a way that other people can see that the VI has been branched, so that they don't need to duplicate their effort.Including an issue tracker with this would also be great.

 

This in my view provides faster turnaround for fixing bugs and adding new features. I had to fix a few bugs in some drivers, emailed the VI back to NI and since then nothing has happened to the driver at the least the last few times I checked and there is not a good way of tracking this. The idea is not new and there are lots of platforms like this around in the open source world. Here are some examples:

 

github http://github.com (version controlled history, branching, merging, issue tracker, per project wiki)

bitbucket http://bitbucket.org/ (similar to github)

 

Lots of linux distributions manage their source code this way:

OpenSUSE build server: http://build.opensuse.com (version controlled history, branching, merging)

Launchpad https://launchpad.net/ (version controlled history, branching, merging, issue tracker, code review, translation)

 

and there are plenty of other sites.

 

Add a module to LabVIEW to use it on Android OS or Apple iOS. 

 

People have already been getting smartphones for awhile.  And now in 2011, there are so many manufacturers that make tablets with Android OS or even Windows.  Apple iOS is considered to be the cool thing but Android OS is more open and used by more manufacturers (since only Apple for it's iOS).  Since the Andorid Tablet is so new, yes there are more Apple tablets out there than Android tablets but if it's like the smartphone market, Android OS will overtake the iOS market.  It's just a matter of time. 

 

I don't know whether one is easier to code than another, but if you had the time I think a module for both the Android OS and the Apple iOS would be extremely powerful.  Wouldn't it be great if we could run an instrument from our phones or tablets?!?! 

 

But I would just be careful to make sure the module was robust and not too many key features were missing from the full LabVIEW version.  In the past, we tried the PDA Module and Touch Panel Module for an instrument and it didn't work out.  The module was very buggy and missing a lot of features from LabVIEW that we though were important key ones.  We ended up abandoning the PDA module idea and went with an advantech touch panel computer with Windows XP and just kept writing with regular LabVIEW.

I have seen a few posts online indicating a couple of changes here and there for LVMerge and LVDiff.  I think the main problem is that we just want it to work with third party SCM tools like Mercurial / TortoiseHG, SVN / TortoiseSVN, RTC (Rational Team Concert), Surround, ect.  The ability to check in and out from project explorer is not quite cutting it.  With more and more developers using distributed SCC products like GIT or Mercurial the ability to merge and diff becomes really important.  Here is a list of what I would like to see in newer versions of LabVIEW and the LVMerge and LVDiff tools that would give us more time to develop code and less time spent managing software.

 

1. Both LVMerge and LVDiff work ok with a single vi, but not that well when hierarchies are different.  Most SCC applications will only download one file or the files that are different between change sets when merging or differencing change sets.  The basic problem is that in order to diff or merge LabVIEW requires the vi to be loaded which requires loading dependencies.  If the merge and diff tools didn’t require the vi’s dependencies to be loaded into memory then many of the issues just go away.

 

 I understand the technical challenges in order to implement this feature, but I think it would be a far better approach then trying to write a huge amount of code in order to handle multiple SCC tools.  Even if that code was written the workaround solutions are not pretty.  For example you would have to download both change set’s entire hierarchies to disk and then compare them.  How well will that work with very large projects?  Or with a merge where you need three version of the hierarchy?

 

I think the better solution is to just make LabVIEW files act like text files when diff and merges are performed.  The information in the LabVIEW file points to dependencies, and if those dependencies’s attributes change then flag them, but LabVIEW should be able to generate the LabVIEW "file" in a vacuum for differencing and merging.  May require caching more information about dependencies then what is currently saved in the vi, but I think that would allow a better merge / diff utility.

 

2. Support differencing and merging of all LabVIEW file types (projects, xctls, classes, libraries...).  Sometimes the text merge features in some programs don't take into account the complexity of the relationships between LabVIEW files.  It would be nicer to have a visual diff in terms of how LabVIEW treats the file (e.g. how TestStand differences sequence files).

 

3.  This is more of a bug fix, but improve the merge windows.  I have found a couple of situations where the code being merged is not even shown in the three windows (base, theirs, mine) and I cannot scroll to that location in the code to intelligently perform the merge.

 

4. LVMerge exe exits right away before the merge is complete.  TortoiseHG thinks the merge is complete for a file when the exe exits so it blows right past all of the other file merges so only the first file is merged.

 

5. Cover these use cases as differences between change sets when merging and differencing (item 1 solution should cover these):

Setup: use TortoiseHG to difference an entire change set in the repository with the local drive, or merge two change set in the repository.

  • Moved files (not just vi's) in the hierarchy
  • Deleted files in the hierarchy
  • Files added or removed from classes/libraries/projects
  • File 1 changed and dependency File 2 changes it's connector pane connection to work with the changes in file 1
  • Both new change sets add the same file that the base change set does not contain
  • Same as the last item, but added file has a different location on the hard drive between the change sets

There are probably more that I am not thinking of, but that would be a good start.

 

6. Simplify the entire process by providing a real IDE for merging and differencing files.  I am envisioning something with a hierarchy of views like Beyond Compare.  It would allow you to simplify some actions at a high level, but would give you the power to perform advanced actions.  For example, present a list of differences, types of differences, and the types of merges possible. 

  • Maybe some files can be auto-merged
  • SCC thinks the files were different but there are only cosmetic changes
  • User could choose between a deleted file or a changed file
  • Two versions are different but the user knows which one to choose without performing a merge.

The user should be able to have a quick view (no loading dependencies), or double click on the item and a new tab comes up that allows an actual file merge (vi, class, project, ect.).

 

 I think a tool like that that has the ability to interface with third party SCC tools would be a huge timesaver especially when dealing with distributed environments where merges occur more often.  It may need to stream all of the changes from a tool like TortoiseHG before performing a merge (probably easiest implementation), or rewrite the GUI for managing Mercurial or GIT change sets directly.

 

 The other option is to say "just use a check in check out central repository SCC", and I would say Phooeey! to that. Smiley Happy  After using Mercurial with TortoiseHG for a while I would not switch to anything other then another distributed SCC application...even with the difficulties with the merges and differences, using another system still poses similar problems (sometimes even worse) and the software management in those programs just stifles productivity.  Has anyone ever tried to move a class and its members to a different directory after the code has already been checked into an SCC tool like Perforce?  How about managing a multi-branch project where stable release updates are not only applied to the trunk but to a major feature branch?  Painful...

 

I think that these changes to the LabVIEW development environment will move us from “writing LabVIEW code” to “software development using LabVIEW”.

Title pretty much says it all.  It would be a fine companion for the proposed Noncommercial Hobby/Home license for LabVIEW.

reference case structure.jpg

 

 

I have pondered this and not sure it is possible but it would be nice to allow using case structures to work with vi server references.  It is very tedious to test each type with a cast to more specific and the for each type and check for error (current method or itterating through the class hierarchy).

I know that subclasses pose an issue, I would like to see for the case structure to limit each case to select the highest level (ie g object) and the distince cases are error or any direct class child of the specified parent type class.

 

The Use case I see is for handling itterating through controls from an array of controls (if the control is a boolean do something different than if the reference is to a string control).

Could be very nice for scripting.

 

 

 

 

 

For Reports it is only possible to set one with for all columns. It would be nice if the polimorphic VI "Append Table to Report.vi" would support column with for multiple columns too. Several VIs would have to be copied and adapted.

 

For a standard report, the VI replacing "Set Table Column With.vi" would look like this:

 

Set Table Column Widths_BD.png

The functionality to adapt to the page with if the column with is too big is lost when different withs are set. But probably NI could fix this too.

 

Greetings,

shb

We use NIRG a lot, and I'd like to move away from what looks like random free text on the block diagram to a text block that's instantly recognizable as a requirement.  Kind-of related to this idea, but specific to NIRG.

This is something a few power users have asked me about. There's no Instrument Driver or VIPM Idea Exchange, so I thought I would post it here.


What if VIPM could manage Instrument Drivers from IDNet?
There are a few key benefits this would offer us...

  • download IDNet drivers directly from VIPM 
  • track which version of a driver you are using for different projects and revert when necessary 
  • wrap up ID dependencies in a VIPC file for use at a customer site
Install Other Version.png
Get Info.png 

One upon a time there was LabVIEW 5.x and MS Excel...

 

At that time MS Excel (97 or 2000) could be controlled through ActiveX and some examples in LabVIEW 5.x where showing how to do that.

Each NI partner or LabVIEW user who wanted to control Excel by LabVIEW had to imagine how to save the necessary ActiveX references like Excel_Application or Excel_Worksheet.

 

Then LabVIEW Report Generation Toolkit 1.0 for MS Office was born. Let's call him RGT

It was wonderful !

LabVIEW 6.x and RGT gave us a lot of functions and a new framework (template) for building our own functions.

The GOOP approach in RGT was including the access of many ActiveX references and parameters through one single reference : the magical "Report Refnum".

Instead of maintaining our old functions, we used RGT and transfered our custom functions to this new environment.

 

Example of Excel Save As function :

 Excel SaveAs.PNG

 

As you can see, it was very easy to get the ActiveX reference and modify them (unbundle / bundle).

 

Until LabVIEW 8.5.1 and RGT 1.1.2, the weather was nice is this area...

 

-----

 

Then came the Objet programming in LabVIEW 8.0 and NI decided to rewrite RGT with this technology in RGT 1.1.3.

RGT 1.1.3 which came with LabVIEW 8.6 was catastrophic in terms of compatibility.

You get a big headhache when trying to build an executable which used RGT.

Some of our custom functions where broken. There was no way to repair them.

 

RGT 1.1.4 soon replaced RGT 1.1.3 and gave the possibility to get the ActiveX references from the Excel class by adding the "Get ActiveX Reference" to the class.

Most of our custom functions could be repaired but not all of them since the "Set ActiveX Reference" function was not added.

 

Until now, some of our projets are locked in RGT 1.1.2 and cannot upgrade to LabVIEW 8.6. (or above) because of this missing function.

 

Mr Eagle Man,

Please add the "Set ActiveX Reference" in LabVIEW RGT 2011. 

 

 

 

So I've recently discovered Darren's original post regarding the App Builder API (http://forums.ni.com/t5/LabVIEW/Darren-s-Weekly-Nugget-02-15-2010/td-p/1072575) and used it to fully automate my build process.  I can't tell you how much time this saves me!  I work primarily on a good sized app that depends on an ever shifting array of plugins and 3rd party installers, and having the ability to programmatically add or remove them from a build is a lifesaver.  But because the API doesn't extend to the installer, I still have to do that last part by hand.  I'd really like to see an installer API that would allow me to add build specs to an installer on the fly.  It would be especially handy to have the ability to add other files, specify their location, and (if they are executables) set them to run them following the install. 

 

Thanks,

JasonP

Would it be possible to write a driver for a Dionex dual gradient pump?  We have a custom valve setup but are very interested in the capabilities that a Dionex ICS-5000 DP offers.  The pump is operated with Dionex's Chromeleon software, which unfortunately won't operate our chromatography setup, which we currently contorl with LabView.  The critical issue will be timing of the pump operation and switching of the valve setup.

This idea is about a new LabVIEW feature, the Packed Project Library.

 

To statically use a packed library as a dependency, you need to add the library to the LabVIEW project.  After that's done, all the callers link to the packed library.  If you're strictly a library user, then whenever you need a library update you simply ask the developer for one.

 

But what happens if you're a packed library user and developer of the same library.  You can't use a packed library as a static dependency until you build it and replace the lvlib with the lvlibp...but you can't develop the packed library after it's been built and replaced in the project.

 

If you're a user and developer, it makes sense (to me) to maintain two separate projects.  One manages the packed library resource, one manages the application.

 

What if there were a way to revert the packed library to the LabVIEW library from the same project?  You could use the spiral development model and simply switch between the two types of libraries during development.  You could also (and this IMHO is the most important part) incrementally deploy and test the project.  If you're strictly a packed library developer, hopefully you're incrementally testing anyway.

 

My final pain point with the packed library is with respect to upgrading the application.  Similar to above, if you're strictly a user, you pray the developer is still in business and ask nicely for an upgrade.  If you're a user and developer, and you didn't maintain two projects, you might think to replace each static packed library subVI in the application with the original source and then rebuild the lvlibp.  Or you might think to create a new project that includes the lvlib and rebuild the lvlibp yourself.  I haven't tried it, but I hope that you can replace the original lvlibp with the lvlibp from a new project (not the one that created the original lvlibp).

 

This leads me to a best-practice for lvlibp: always use them as dynamic dependencies.  That way, you can maintain and develop the packed library in the same project that uses the packed library.  You'll simply reference the resources differently.

 

Even if you don't kudo this idea, I'm very interested to hear your feedback and experiences with the lvlibp.

 

Thanks!

 

Steve

The current interface for DLLs does not nicely accommodate C++ classes.  For instance, there is no inherent mechanism for passing in and out of DLL calls the reference to an instance of a class.

Allow the configuration portion of DLL nodes to see mangled function names, such as those generated by many C++ compilers (@Initv, for instance).

Invoke nodes can have lots of optional arguments, resulting in their taking up a lot of vertical space.  I would like to recommend that the arguments portion of Invoke nodes be resizeable, allowing the developer to select the optional arguments to be displayed on the block diagram and, hence, have more control over the layout of the block diagram.

 

Consider the Save-As Invoke node from Microsoft Word:

 

Current Microsoft Word Save-As Invoke Node

 

which gets longer with each new version of Word.

 

Now imagine being able to show just the optional arguments that are needed:

 

Just the Optional Arguments that are Needed

 

And, as an added bonus, this Invoke node would not break when the VI is opened in a development environment that has a different version of Word with the same exposed optional arguments.

Many built-in functions have the growable ability. Essentially a function that accepts an array of data in scalar form, this saves the step of building an array prior to wiring a terminal.  I would like to select any  1-D array on a connector pane and mark as growable.  Then when the vi is used as a subvi, the icon would have the growable ability.  This could have been used as for example for making a growable error handler or implementing new compound math functions.  I know this is probably hard to do and might be possible with xnodes but I dont have time to learn this.  It is useful for making reuasble toolkits which look more like the native G functions

I Have already designed a program in Visual studio 2008 to control the movement of some linear stages.  In the future we want to create the program in labview to integrate it with our other program's which run labview.  Is there a tool which can convert the VS straight to a labview VI?

Ok this idea would be trivial for NI to include in 2011.Heck I could do it.

 

The idea is simply to include the JKI state machine in File/New/Design Patterns. It is BSD code and I am sure that JKI wouldn't mind anyway.

 

I must admit that I have an ulterior motive. If this were included in the NI distributed templates then I could use the JKI state machine for my CLD exam. And so could you!

 

Now let the kudos start rolling in so NI will take notice.

How comes these 2 palettes avec merged in one called "Vision and Motion"?

 

I'd rather have a Vision palette and a Motion palette.

Plus, if you only install Vision (and not Motion) then the palette name is "Vision and Motion" but in fact it only contains vision functions, so the palette name is inadequate.

 

See here :

Clipboard02.png

Is LabVIEW available for Android based systems and other touch interface systems.If not how about using LabVIEW for mobile measurements using these systems.