Professional User Interfaces in LabVIEW

The flexibility of front panel objects in LabVIEW is something many people, including myself, take for granted.  We quickly drop down charts, knobs, and sliders, leaving them unchanged, and as a result, most LabVIEW programs have an unmistakably similar look and feel.  Of course, this makes it much easier to spot in a lab or during cameo appearances on shows like MythBusters, but many people are looking for ways to make more impressive and even ‘sexy’ user interfaces.

The success of commercial products like the iPhone are clear examples of the growing desire for intuitive user interfaces, but the world of engineers and scientists is not exempt.  There are a lot of practical reasons why a clear and appealing UI is valuable for a large LabVIEW application, as it can reduce learning curves and improve the effeciency of the user.

What many LabVIEW developers don’t realize, is the level of customization and flexibility that LabVIEW controls and indicators provide.  Realizing this, my friend and colleage, SimonH, set out to see just how easy it would be to make some impressive controls and indicators for LabVIEW that broke the mold.  He’s posted his first few examples in his new UI Interest Group, but I happen to know he’s got a lot more up his sleeve.  Join his group and look for more soon!

Preview of ni.com theme

Here’s another particularly slick user interface that was made in LabVIEW for OptiMedica

lvui

Advanced Application Specific Architecture Resources

About a month ago I wrote a blog on LabVIEW application architectures, but I wanted to supplement that with links to more advanced resources that are specific to certain applications and offer a more holistic insight into the task of designing your LabVIEW applications.

  • A Primer for Machine Control – If you’re building a large system for machine control using CompactRIO and aren’t sure where to start, this should help.  It includes example applications and insights into networking and how to manage multiple tasks.
  • 100+ Open-Source Reference Architectures- our systems engineering group is frequently exposed to common architectural challenges faced by LabVIEW programmers on large applications.  To keep from re-inventing the wheel, they’ve been publishing elegant solutions to these recurring problems.  Examples include Simple Messaging Reference Library, which offers an alternative to shared variables for network communication, 3D Obstacle detection for machine control applications, and a variety of example application architectures.
  • TestStand Architecture Series – as automated test systems are becoming larger and more complex, it’s becoming increasingly important to architect your code to ensure scalability, quality and re-usability.  This series of content was written largely by NI Alliance Partners who have extensive experience with applications of this nature.  The architecture applications in any language is one of the biggest challenges any software programmer faces.

Compared to the task of designing code, the task of actually developing it is often the easiest par.  Without careful consideration, many programmers get the ‘re-factor’ twinge about half-way into the development process.  If any of this sounds familiar, spend some time looking through these resources to get some insight into paradigms that might help you and your application succeed.

Great Resource for Learning a Common Architecture for LabVIEW Applications

Anthony Lukindo wrote an excellent article on expressionflow.com that explains how to utilize a queued state machine architecture with multiple producer / consumer loops.  The example he uses in this article draws from several of the fundamental design patterns that should serve as the building blocks for almost any new LabVIEW application (see image below).

PC-QSM.png

If you’ve never seen them, make sure you review the design patterns that ship inside of LabVIEW as starting points for your applications – even simple ones.  You can navigate several Frameworks for development by clicking File >> New in LabVIEW.  The dialog that will appear is shown below.  Note the descriptions for each design pattern under the image on the right.

LabVIEW Design Patterns.png.

If any of you want to add your own design patterns to this dialog, you can.  This is potentially useful for groups of developers who would need to use a common, custom template regularly in their work.

To add a template, follow the pattern used for the existing patterns, which can be found here: C:\Program Files\National Instruments\LabVIEW 8.6\templates\Frameworks\DesignPatterns

This should include a png thumbnail and *vit template file.  Don’t forget to enter descriptions in the VI Documentation Property so that users will know what they’re getting themselves into!