Language - LabVIEW: Difference between revisions

From Phidgets Support
No edit summary
No edit summary
 
(23 intermediate revisions by 4 users not shown)
Line 1: Line 1:
[[Category:Language]]
[[Category:Language]]
{{OSLang|[[File:icon-LabVIEW.png|64x64px|left|link=|alt=]]|LabVIEW, developed by [http://www.ni.com National Instruments] is dataflow programming language for data processing.}}
__TOC__


== Introduction ==
We provide support for LabVIEW on the '''Windows''' operating system. By using LabVIEW, you will have access to the complete {{Phidget22API}}, including events. We also provide example code in LabVIEW for all Phidget devices.


If this is your first time working with a Phidget, we suggest starting with the Getting Started page for your specific device. This can be found in the user guide for your device. That page will walk you through installing drivers and libraries for your operating system, and will then bring you back here to use LabVIEW specifically.
LabVIEW is a development environment for a graphical programming language created by National Instruments.  
LabVIEW is capable of using the complete {{Phidget22API}}, including events. We also provide example code in LabVIEW for all Phidget devices.


LabVIEW can be developed with Windows. A minimum version of LabVIEW 2009 is required. OS X and Linux are unsupported as the Labview/Phidgets combination has not been tested on those systems.
==Setup Guide==
 
<div class="phd-deck-sequence">
You can compare LabVIEW with our other supported languages.
__NOTOC__
 
{{PT3_LABVIEW_WIN}}
Note that with LabVIEW you can install a 32-bit version on a 64-bit computer without any issues, but the 64-bit version cannot obviously be installed on a 32-bit computer. The reason this is relevant is that the respective versions cannot create executables that the other can run. I.E. 64-bit LabVIEW cannot generate a 32-bit executable. The upshot of this is that if you need your executable to be compatible with older machines (such as Windows XP machines) then you will need to use a 32-bit version of LabVIEW to create your program.
</div>
 
== Quick Downloads ==
 
'''<span style="color:#FF0000">List of download links, to be added once files are available</span>'''
 
=== Documentation ===
=== Example Code ===
=== Libraries and Drivers ===
 
== Getting Started with LabVIEW ==
 
If you are new to writing code for Phidgets, we recommend starting by running, then modifying existing examples. This will allow you to:
{{ExampleCodeReasons}}
 
Instructions are divided up by operating system. Choose:
*[[#Windows(XP/Vista/7)|Windows XP / Vista / 7]]
 
== Windows ==
===Description of Library Files===
 
LabVIEW programs on Windows depend on the following two items, The installers in the Quick Downloads section put only the phidget22.dll into your system. You will need to manually put the Phidget LabVIEW library onto your system:
*'''phidget22.dll''' contains the actual Phidget library, which is used at run-time. By default, it is placed in C:\Windows\System32.
*'''Phidgets LabVIEW library''' contains the Phidget library for LabVIEW. Instructions are explained in the [[#Installing the Library|Installing the Library]] section.
 
If you do not want to use our installer, you can download the [[phidget22.dll]] and manually install it where you want; refer to our [[Manual Installation Instructions]].
 
We include instructions for LabVIEW 2012 on [[#Use Our Examples|using our examples]] and [[#Write Your Own Code|writing your own code]].
 
====Installing the Library====
 
1. To install the Phidgets Library, simply download the [[Phidgets Labview Library]] folder into the instr.lib folder corresponding to your LabVIEW installation.
 
If LabVIEW was installed using default settings, this will be under C:\Program Files (x86)\National Instruments\LabVIEW 20xx\instr.lib if you are using 32 bit LabVIEW, or C:\Program Files\National Instruments\LabVIEW 20xx\instr.lib if you are using 64 bit LabVIEW, where 20xx is the version of LabVIEW being used (eg. 2015 for LabVIEW 2015).
 
2. Open or restart LabVIEW to refresh the VI palettes.
 
3. The Phidgets palette is located in the Instr Drivers palette under Instrument IO.
 
[[Image:Phidget22_LabVIEW_Palette.png|link=|400px]]
 
====Use Our Examples====
1. To find our examples, open a new VI.
 
2. Navigate to the palette you want the example for, place "VI Tree.vi" on your block diagram.
 
[[Image:VI Tree in Palette.png|link=|600px]]
 
3. Right click "VI Tree.vi" and select Open Front Panel. From the front panel, open VI Tree.vi's block diagram.
 
[[Image:VI Tree Open Front Panel.png|link=]]
 
4. Examples will be located near the bottom of the diagram, as plain white VIs. Open the front panel of the example to use it.
 
[[Image:VI Tree Examples.png|link=|600px]]
 
[[Image: Example Front Panel.png|link=]]
 
====Write Your Own Code====
 
1. To start working with a new Phidget, you will first need matching Start and Close VIs. These are found at the top of the Phidgets palette.
 
[[Image:LabVIEW Phidget Start.png|link=|600px]]
 
2. Next, select the type of Phidget you wish to use from the drop-down menu.
 
[[Image:LabVIEW Phidget Start Menu.png|link=|600px]]
 
3. Add device information and any desired initialization paramaters to the Start VI. Many Phidgets VIs use terminals with special values or formats.
For these is is best to right click the terminal, and select Create->Control or Create->Constant.
 
[[Image:Labview Create Control.png|link=]]
 
[[Image:LabVIEW Phidget Device Info.png|link=|600px]]
 
4. You are now ready to write code for your Phidget, as outlined in the [[#Code Snippets|Code Snippets]] section, and the methods outlined in the examples for your device.
 
== Edit the Examples ==
 
By following the instructions for your operating system and compiler above, you probably now have a working example and want to understand it better so you can change it to do what you want. This teaching section has resources for you to learn from the examples and write your own.
 
Your main reference for writing LabVIEW code will be this page, the examples, the {{Phidget22API}}, and the VI help files.
 
Examples of more complex general topics such as using multiple Phidgets and connecting to a Phidget over the Network Service can be found under the VI Tree for the '''Phidget Common''' palette.
 
=== Example Flow ===
 
Most LabVIEW examples follow the same basic flow of starting a Phidget, reading some data, and closing the Phidget.
 
[[Image: Digital Input Example.png|link=|600px]]
 
=== Code Snippets ===
 
The following code snippets describe how to do various general tasks with Phidgets. You should be able to find places in the examples where these snippets exist, and modify them to suit your requirements.
 
==== Step One: Initialize, Open and Wait for Attachment (plugging in) of the Phidget ====
 
The entire process of opening and initializing a Phidget can be done by using the version of StartPhidget.vi that corresponds to your device.
 
In most cases, StartPhidget.vi will also attempt to wait for the first data to become available from the device for 5 seconds after initialization.
 
[[Image:StartPhidget VI.png|link=]]
 
If you'd prefer to initialize the device manually, you can use OpenPhidget.vi for your device and call the individual functions to set up the device.
 
[[Image: OpenPhidgetVI.png|link=]]
 
==== Step Two: Do Things with the Phidget ====
 
You can read data and interact with your Phidget both by polling it for its current state (or to set a state), or by catching events that trigger when the data changes.
 
To poll devices, simply place the corresponding blocks.
 
[[Image: LabVIEW polling 1.png|link=]] [[Image: LabVIEW polling 2.png|link=]]
 
To use events, there are three main blocks for each type, to create, execute, and close the event handler.
 
When creating the event, all devices using an event of the same type must be grouped into an array to ensure the events get processed correctly.
 
[[Image: Event Array grouping.png|link=]]
 
Once created, the events will be processed by [Name]EventExe.vi. When an event occurs, the pertinent information will be output, as well as information to reference which device caused it.
 
[[Image: Event Exe.png|link=]]
 
After a program has run its course, the event handler must be closed.
 
[[Image: Event Close.png|link=]]
 
==== Step Three: Close and Delete ====
Closing a Phidget is done by using the appropriate version of ClosePhidget.vi
 
[[Image:Close Phidget VI.png|link=]]
 
== Further Reading ==
 
[[Phidget Programming Basics]] - Here you can find the basic concepts to help you get started with making your own programs that use Phidgets.
 
[[Data Interval/Change Trigger]] - Learn about these two properties that control how much data comes in from your sensors.
 
[[Using Multiple Phidgets]] - It can be difficult to figure out how to use more than one Phidget in your program. This page will guide you through the steps.
 
[[Polling vs. Events]] - Your program can gather data in either a polling-driven or event-driven manner. Learn the difference to determine which is best for your application.
 
[[Logging, Exceptions, and Errors]] - Learn about all the tools you can use to debug your program.
 
[[Phidget Network Service]] - Phidgets can be controlled and communicated with over your network- either wirelessly or over ethernet.
 
== Common Problems and Solutions/Workarounds ==
 
===Issue: <span style="color:DarkRed">I cannot attach to an object any more after running my program once</span>===
What this means is you probably aborted the VI which stopped the program before the Phidget could be closed. Aborting execution will not release the Phidget device properly and will consequently make it unusable until the Phidgets library (or LabVIEW) has been restarted.
 
To resolve this, you may open a new VI, place PhidgetResetLibrary.vi, and run it. This will completely reset the current Phidget library, making it possible again to connect to all Phidgets.
 
'''Note that this action will close all Phidgets that are currently open in LabVIEW, and should not be used while other Phidgets-related LabVIEW VIs are running.'''
 
[[Image:Phidget Reset All Palette.png|link=|600px]]
 
[[Image:Phidget Reset All.png|link=|600px]]
 
In order to prevent this from happening you should use a software stop button when possible instead of halting operation. That way the Close subVI gets called and the Phidget will be released.

Latest revision as of 21:42, 10 August 2023


We provide support for LabVIEW on the Windows operating system. By using LabVIEW, you will have access to the complete Phidget22 API, including events. We also provide example code in LabVIEW for all Phidget devices.

LabVIEW is a development environment for a graphical programming language created by National Instruments.

Setup Guide

Language - LabVIEW

Windows with LabVIEW

Welcome to using Phidgets with LabVIEW! By using LabVIEW, you will have access to the complete Phidget22 API, including events. We also provide example code in LabVIEW for all Phidget devices.

LabVIEW is a development environment for a graphical programming language created by National Instruments.

Requirements

First, make sure you have the following:

● Phidgets Drivers for Windows installed(see Part 1 of this user guide)

Phidget LabVIEW Library downloaded


Note: The LabVIEW Library also contains example VI trees, which we'll cover later in this guide.

Using Our Examples

One of the best ways to start programming with Phidgets is to use our example code as a guide.

Unpack the Phidget LabVIEW Library and rename the unpacked folder to Phidgets.

Using Our Examples

Navigate to the following directory:

● For 32-bit LabVIEW, C:/Program Files (x86)/National Instruments/LabVIEW 20xx/instr.lib

● For 64-bit LabVIEW, C:/Program Files/National Instruments/LabVIEW 20xx/instr.lib

Place the renamed folder at this location:

Using Our Examples

Next, open LabVIEW and create a new VI:

Using Our Examples

In the new block diagram window, open the functions palette (View -> Functions Palette).

Next, go to the Phidgets palette (Instrument I/O -> Instrument Drivers -> Phidgets):

Using Our Examples

Next, select a palette that will work for your Phidget and drag VI Tree.vi onto your block diagram:

Using Our Examples

Right-click on VI Tree.vi and select Open Front Panel:

Using Our Examples

From the front panel, navigate to the block diagram (Window -> Block Diagram):

Using Our Examples

The VI Tree Block Diagram lists all VIs available for its Phidget Class, and which subpalette to find them under. The examples are located near the bottom of the block diagram. Right-click the example you would like to use and select Open Front Panel:

Using Our Examples

When you are ready, press Run and the application will demonstrate the Phidget's functionality.

Here is an example of an Accelerometer channel on a Spatial Phidget:

You should now have the example up and running for your device. Play around with the device and experiment with some of the functionality. When you are ready, the next step is configuring your environment and writing your own code!

Configure Your Environment

First, we recommend enabling the Show constant labels setting in LabVIEW. This setting will reduce complexity when developing, and is especially recommended for beginners.

To enable the setting, first navigate to Tools -> Options on your block diagram:

Configure Your Environment

Select the Environment category and enable Show created constant labels at the bottom:

Configure Your Environment

To begin working with Phidgets, you will need both a StartPhidget VI and a ClosePhidget VI:

Configure Your Environment

Select a class that will work with your Phidget from the drop-down menu for each VI:

Configure Your Environment

You can now add device information or any initialization parameters to the StartPhidget VI. Using your mouse, hover over each of the connection nodes to see information about it:

Configure Your Environment

If you would like to add device information or initialization parameters, right-click the connection node and navigate to one of the following:

Create -> Constant

Create -> Control

Configure Your Environment

Creating a constant will allow you to modify device information from the block diagram:

Configure Your Environment

Creating a control will allow you to modify device information from the front panel:

The environment now has access to Phidgets. Next, we'll walk through writing your own code.

Write Code

Along with this guide, your main resources for writing LabVIEW code will be:

● The examples

● The Phidget22 API

● The VI help files

Examples of more complex general topics such as using multiple Phidgets and connecting to a Phidget over the Network Server can be found under the VI Tree for the Phidget Common palette.

Example Flow

Most LabVIEW examples follow the same basic flow: starting a Phidget, reading some data, and closing the Phidget.

Step One: Initialize, Open And Wait For Attachment Of The Phidget

The entire process of opening and initializing a Phidget can be done by using the version of StartPhidget.vi that corresponds to your device. In most cases, StartPhidget.vi will also attempt to wait for the first data to become available from the device for 5 seconds after initialization.

If you'd prefer to initialize the device manually, you can use OpenPhidget.vi for your device and call the individual functions to set up the device.

Step Two: Do Things With The Phidget

You can read data and interact with your Phidget both by polling it for its current state (or to set a state), or by catching events that trigger when the data changes.

To poll devices, simply place the corresponding blocks:

To use events, there are three main blocks for each type, to create, execute, and close the event handler. When creating the event, all devices using an event of the same type must be grouped into an array to ensure the events get processed correctly.

Step Two: Do Things With The Phidget

Once created, the events will be processed by [Name]EventExe.vi. When an event occurs, the pertinent information will be output, as well as information to reference which device caused it.

After a program has run its course, the event handler must be closed.

Step Three: Close And Delete

Closing a Phidget is done by using the appropriate version of ClosePhidget.vi

That's all the basic building blocks you need to create a LabVIEW program using Phidgets.

Help and Documentation

For more information on the use of any VI and its parameters, right-click the VI and select Help

Help and Documentation

This will take you to an HTML page outlining the function of the VI. This includes a list of all its parameters, which devices support them, their range of acceptable values, and their default values, where applicable:

What's Next?

Now that you've set up Phidgets in your programming environment, you should read our guide on Phidget Programming Basics to learn the fundamentals of programming with Phidgets.

Continue reading below for advanced information and troubleshooting for your device.

Scroll down for device-specific troubleshooting, or go to the next slide for LabVIEW troubleshooting.

LabVIEW Troubleshooting

Expand All
I cannot attach to an object any more after running my program once

What this means is you probably aborted the VI which stopped the program before the Phidget could be closed. Aborting execution will not release the Phidget device properly and will consequently make it unusable until the Phidgets library (or LabVIEW) has been restarted.

To resolve this, you may open a new VI, place PhidgetResetLibrary.vi, and run it. This will completely reset the current Phidget library, making it possible again to connect to all Phidgets.

Note that this action will close all Phidgets that are currently open in LabVIEW, and should not be used while other Phidgets-related LabVIEW VIs are running.

Phidget Reset All Palette.png

Phidget Reset All.png

In order to prevent this from happening you should use a software stop button when possible instead of halting operation. That way the Close subVI gets called and the Phidget will be released.

I cannot find my error code on this website

All Phidgets-based error codes in LabVIEW are offset by 7000 to avoid conflicting with LabVIEW's own error codes. To get the equivalent Phidget return code from the LabVIEW error code, simply subtract 7000. For instance, error code 7003 in LabVIEW translates to Phidget Return Code 3.

To find the meaning of all Phidget Return Codes, you can go to the Phidget22 API page, and open the PhidgetReturnCode section under Enumerations.

Events Can Occasionally Cause Issues, Especially When There Are Multiple Of The Same Type Of Event

In other words, if you open 2 of the same device and have a sensor change event for each one your system can behave unpredictably. This problem is a quirk in the way that LabVIEW handles passing events to and from C. There are a few solutions to this issue, either:

  • Stop using events and simply poll the device. Events work similarly to polling in LabVIEW anyway and should not cause substantial performance changes to your application.
  • Implement a simple fix to the events which are causing the problem. The pointer is identical in the case where two events of the same type are passed from a single function. This causes the events in C to output to the same event in LabVIEW. To get around this you need to copy the offending subVI, then change the name of the cluster object in it from "Event" to something else (your choice), change the name of the .vi to something else and then use those two different subVIs in your program. You would need to repeat this for each subsequent event of the same type you wish to have.
  • Make an array of all the devices you intend to use with the event, and feed the array into a single EventCreate vi, and use a single EventExe handler for all the events. When using this method, it might be tempting to add multiple event handlers, but keep in mind that events only occur once, in whichever handler sees them first. When running multiple Phidgets through the single event handler, you can determine which one caused the event by comparing the phid terminal from the EventExe VI to the Phidget IDs (Device In/Device Out) of your Phidgets.

We recommend using either of the the first two solutions where possible. The first is a bit cleaner, but the second will work just as well. We only recommend using the third method in cases where it is not practical to manually create individual event handlers.

«
»