Language - LabVIEW: Difference between revisions

From Phidgets Support
No edit summary
(37 intermediate revisions by 5 users not shown)
Line 1: Line 1:
[[Category:Language]]
[[Category:Language]]
{{OSLang|[[File:icon-LabVIEW.png|64x64px|link=|alt=]]|LabVIEW, developed by [http://www.ni.com National Instruments] is dataflow programming language for data processing.}}
{{NoTitle}}
__TOC__
{|
|style="vertical-align:middle; width: 60%;"|
<font size=6>'''Language - LabVIEW'''


==Introduction==
'''Windows with LabVIEW'''</font>


{{LanguageSupport|LabVIEW|the complete Phidget API, including events|all Phidget devices.| Windows. A minimum version of LabVIEW  7.1.1 is required to use the Phidget LabVIEW 32 bit library. For the Phidget LabVIEW 64 bit library, 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.|}}
Welcome to using Phidgets with LabVIEW! By using LabVIEW, you will have access to the complete {{Phidget22API}}, including events. We also provide example code in LabVIEW for all Phidget devices.


==Quick Downloads==
LabVIEW is a development environment for a graphical programming language created by National Instruments.  
{{QuickDownloads|LabVIEW|
|{{TOC limit|2}}
{{APIQuickDownloads|{{SERVER}}/documentation/LabVIEW_Manual.pdf PDF}}
|}
{{ExtraAPIQuickDownloads|{{SERVER}}/documentation/web/LabVIEWDoc/index.html|HTML version of}}|
 
{{ExampleQuickDownloads|{{SERVER}}/downloads/examples/LabVIEWx866.zip| (32 bit Windows - same file as LabVIEW library)}}
== Quick Downloads ==
{{ExampleQuickDownloads|{{SERVER}}/downloads/examples/LabVIEWx64.zip| (64 bit Windows - same file as LabVIEW library)}}|
=== Documentation ===
{{ExtraLibraryQuickDownloads|{{SERVER}}/downloads/examples/LabVIEWx86.zip|LabVIEW|(32 bit Windows - same file as LabVIEW Examples)}}
* Documentation is included in the LabVIEW examples in the form of ''VI Trees''. See the [[#Use_Our_Examples|Use Our Examples]] section for details.
{{ExtraLibraryQuickDownloads|{{SERVER}}/downloads/examples/LabVIEWx64.zip|LabVIEW|(64 bit Windows - same file as LabVIEW Examples)}}
=== Example Code ===
* [{{SERVER}}/downloads/phidget22/libraries/any/Phidget22Labview.zip LabVIEW Examples]
 
=== Libraries ===
*[{{SERVER}}/downloads/phidget22/libraries/any/Phidget22Labview.zip Phidget LabVIEW library]
{{WindowsQuickDownloads}}
{{WindowsQuickDownloads}}
}}


==Getting started with LabVIEW==
==Install Phidget Drivers for Windows==
Before getting started with the guides below, ensure you have the following components installed on your machine:
 
# You will need the [[OS_-_Windows#Quick_Downloads|Phidgets Windows Drivers]]
 
 
==Use Our Examples==
One of the best ways to start programming with Phidgets is to use our example code as a guide. In order to run the examples, you will need to download and install the LabVIEW from [http://www.ni.com/en-ca/shop/labview.html National Instruments].
 
 
Next, download and unpack the Phidgets LabVIEW library:
*[{{SERVER}}/downloads/phidget22/libraries/any/Phidget22Labview.zip Phidget LabVIEW library]
 
 
Rename the unpacked folder to ''Phidgets''
[[Image:Labview_rename.png|link=|center]]
 
 
 
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:
[[Image:Labview_copy.png|link=|center]]
 
 
 
Next, open LabVIEW and create a new VI:
[[Image:Labview_newvi.png|link=|center]]
 
 
 
Navigate to the block diagram window that was generated and open the functions palette (''View'' -> ''Functions Palette''). Next, navigate to the Phidgets palette (''Instrument I/O'' -> ''Instrument Drivers'' -> ''Phidgets''):
[[Image:Labview_functionspalette.PNG|link=|center]]
 
 
 
Next, select a palette that will work for your Phidget and drag the ''VI Tree.vi'' onto your block diagram:
[[Image:Labview_vitree.png|link=|center]]
 
 
 
Right-click on ''VI Tree.vi'' and select ''Open Front Panel'':
[[Image:Labview_openfrontpanel.png|link=|center]]
 
 
 
From the front panel, navigate to the block diagram (''Window'' -> ''Block Diagram''):
[[Image:Labview_showblock.png|link=|center]]
 
 
 
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'':
[[Image:Labview_runexample.png|link=|center]]
 
 
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:
[[Image:Labview_run.PNG|link=|center]]
 
 
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====
If you haven't already, jump back and take a look at the [[#Use our examples | use our examples]] section above. There you will be instructed on how to properly set up LabVIEW so you can follow the guides below. If you are ready, keep reading.
 
 
To begin configuring your environment, 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:
[[Image:Labview_options.png|link=|center]]
 
 
Select the ''Environment'' category and enable ''Show created constant labels'' located at the bottom of the screen:
[[Image:Labview_showconstantlabels.png|link=|center]]
 
 
To begin working with Phidgets, you will need both a ''StartPhidget'' VI and a ''ClosePhidget'' VI:
[[Image:Labview_startclose.png|link=|center]]
 
 
Select a class that will work with your Phidget from the drop-down menu:
[[Image:Labview_selectclass.png|link=|center]]
 
 
You can now add device information or any initialization parameters to the ''StartPhidget'' VI. Using your mouse, hover over the connections to see information about it:
[[Image:Labview_hover.png|link=|center]]
 
 
If you would like to add device information or initialization parameters, right-click the connection and navigate to one of the following:
*''Create'' -> ''Constant''
*''Create'' -> ''Control''
 
[[Image:Labview_createcontrol.png|link=|center]]
 
 
Creating a constant will allow you to modify device information from the block diagram:
[[Image:Labview_constant.PNG|link=|center]]
 
 
Creating a control will allow you to modify device information from the front panel:
[[Image:Labview_control.png|link=|center]]


If you are new to writing code for Phidgets, we recommend starting by running, then modifying existing examples. This will allow you to:
{{ExampleCodeReasons}}


==Windows (2000/XP/Vista/7)==
The environment now has access to Phidgets. Next, view the write your own code section located below.


===Description of Library Files===
LabVIEW programs on Windows depend on the following two items, The installers in the [[#Libraries and Drivers|Quick Downloads]] section put only the {{Code|phidget21.dll}} into your system. You will need to manually put the Phidget LabVIEW library onto your system:
* <b>{{Code|phidget21.dll}}</b> contains the actual Phidget library, which is used at run-time.  By default, it is placed in {{Code|C:\Windows\System32}}.
* <b>{{Code|Phidgets LabVIEW library}}</b> contains the Phidget library for LabVIEW. You need to place the library into your LabVIEW functions palette. Instructions are explained in the [[#Write Your Own Code | Write Your Own Code]] section.


If you do not want to use our installer, you can download the [{{SERVER}}/downloads/libraries/phidget21-x86.zip {{Code|phidget21.dll}}] and manually install it where you want; refer to our [[OS_-_Windows#Manual_File_Installation | Manual Installation Instructions]].
==Write Code==
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.


We include instructions for LabVIEW 2011 on [[#Use Our Examples | using our examples]] and [[#Write Your Own Code | writing your own code]].
Your main reference for writing LabVIEW code will be this page, the examples, the {{Phidget22API}}, and the VI help files.


====Use Our Examples====
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.


To run the examples, you first download the examples found in the [[#Example Code | Quick Downloads]] section and unpack them into a folder. Here, you will find the {{Code|examples}} folder, which contains {{Code|vi}} programs for all the devices. Each {{Code|vi}} example demonstrate the usage of a few of the device's properties. To get a broader understanding of the device, you should take a look at all the  {{Code|vi}} examples inside the directory for your device. {{FindYourDevice}}
=== Example Flow ===
Most LabVIEW examples follow the same basic flow: starting a Phidget, reading some data, and closing the Phidget.
[[Image: Digital Input Example.png|link=|center]]


1. Inside the {{Code|examples}} folder, navigate to the directory for your device.  
=== 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.
[[Image:StartPhidget VI.png|link=|center]]


2. Open up any {{Code|.vi}} of your choice in LabVIEW. In this section, the {{Code|Sensor to Output Example.vi}} of the PhidgetInterfaceKit examples will be used.


[[File:LabVIEW Win Front Panel.PNG|link=|alt=Front Panel]]
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=|center]]


You will see the front panel of the example. The front panel shows the user interface of the {{code|vi}} program.
=== 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.


3. Next, let us take a look at the block diagram by navigating to {{Code|Window &rarr; Show Block  Diagram}}.


[[File:LabVIEW Win Block Diagram 1.PNG|link=|alt=Block Diagram]]
To poll devices, simply place the corresponding blocks:
[[Image:LabVIEW_polling.png|link=|center]]


The block diagram shows the logic of the application.


[[File:LabVIEW Win Block Diagram 2.PNG|link=|alt=Block Diagram]]
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=|center]]


4. The only thing left to do is to run the examples! Navigate to {{Code|Operate &rarr; Run}}.


[[File:LabVIEW Win Run 1.PNG|link=|alt=Run]]
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=|center]]


5. The application will run.


[[File:LabVIEW Win Run 2.PNG|link=|alt=Run]]
After a program has run its course, the event handler must be closed.
[[Image: Event Close.png|link=|center]]


You can determine that your device is connected to your application if you see the indicator for {{Code|attached}} turn green and the correct serial number is displayed. These features are available in most of the example {{Code|vis}} we provide.
6. When you are ready to terminate the application, click on the [[File:LabVIEW Win Stop.PNG|link=|alt=Stop]] button to release the hold on the device. Please keep in mind that the application may not terminate properly if you stop it by clicking on {{Code|Operate &rarr; Stop}}.


Once you have the LabVIEW examples running, we have a [[#Follow the Examples|teaching]] section below to help you follow them.
=== Step Three: Close and Delete ===
Closing a Phidget is done by using the appropriate version of ClosePhidget.vi
[[Image:Close Phidget VI.png|link=|center]]


====Write Your Own Code====


When you are building a project from scratch, or adding Phidget function calls to an existing project, you'll need to add the Phidget LabVIEW library to your development environment. To begin:
=== Documentation ===
For more information on the use of any VI and its parameters, right-click the VI and select ''Help''
[[Image:Labview_help.png|link=|center]]


1. Navigate to {{Code|Tools &rarr; Advanced &rarr; Edit Palette Set}} to modify the functions palette.


[[File:LabVIEW Win Functions Palette 1.PNG|link=|alt=Edit Function Palette]]
This will take you to an HTML page that will outline 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. The following is an excerpt from the AccelerometerSetDataInterval.vi help file:
[[Image:Labview_help_page.png|link=|center|800px]]


2. The functions palette will show up. Right click an empty area, and select {{Code|Insert &rarr; Subpalette}}.
== Common Problems, Solutions and Workarounds ==


[[File:LabVIEW Win Functions Palette 2.PNG|link=|alt=Insert Function Palette]]
===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.  


3. Next, select {{Code|Link to a directory}}.
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.


[[File:LabVIEW Win Functions Palette 3.PNG|link=|alt=Link to a library]]
'''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.'''


4. Make sure you have the Phidget LabVIEW library and examples in the [[#Libraries and Drivers| Quick Downloads]] section downloaded and extracted. After extracting, you will find the {{Code|Phidgets}} folder. In LabVIEW, browse to the {{Code|Phidgets}} folder, and select {{Code|Current Folder}}.
[[Image:Phidget Reset All Palette.png|link=|600px]]


[[File:LabVIEW Win Functions Palette 4.PNG|link=|alt=Select Phidgets library]]
[[Image:Phidget Reset All.png|link=|600px]]


This will load the Phidget LabVIEW library into the functions palette. You can find all the functions that pertain to Phidgets inside the {{Code|Phidgets}} palette.  
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.


[[File:LabVIEW Win Functions Palette 5.PNG|link=|alt=Phidgets LabVIEW Library]]
===Issue: <span style="color:DarkRed">I cannot find my error code on this website</span>===


5. Click on {{Code|Save Changes}} in the {{Code|Edit Controls and Functions Palette Set}} window.  
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.


[[File:LabVIEW Win Functions Palette 6.PNG|link=|alt=Save Function Palette]]
To find the meaning of all Phidget Return Codes, you can go to the {{Phidget22API}} page, and open the '''PhidgetReturnCode''' section under '''''Enumerations'''''.


The project now has access to the Phidget function calls and you are ready to begin coding.


The same [[#Follow the Examples|teaching]] section which describes the examples also has further resources for programming your Phidget.
===Issue: <span style="color:DarkRed">Events Can Occasionally Cause Issues, Especially When There Are Multiple Of The Same Type Of Event</span>===


==Follow the Examples==
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:


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.
*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.


Since LabVIEW is a graphical language, the best way to get the 'code snippets' you need is to take them from our examples. The best way to find what blocks exist and how to use them is probably to switch between the block diagram view and the GUI view between examples that apply to you.  This will allow you to use pieces from our examples to create your own LabVIEW application.
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.


Your main reference for writing LabVIEW code will be our LabVIEW API information, with syntax for all of our functions:
== Further Reading ==


{{UsingAPhidgetInCodeGeneral|both of which are available in LabVIEW|[{{SERVER}}/documentation/LabVIEW_Manual.pdf API Manual]}}
[[Phidget Programming Basics]] - Here you can find the basic concepts to help you get started with making your own programs that use Phidgets.


If you are really getting in to using Phidgets, you probably want our more general programming resources as well.  Although these are focused on the text-based languages that we support (C++, Java, etc), the concepts remain the same on how Phidgets are used within code.  Our [[General Phidget Programming]] page gives more information about:
[[Data Interval/Change Trigger]] - Learn about these two properties that control how much data comes in from your sensors.
* [[General Phidget Programming#Using Multiple Phidgets|Using Multiple Phidgets]] (or a Phidget [[General Phidget Programming#Creating a Software Object|other than the Interface Kit]])
* Catching [[General Phidget Programming#Exceptions and Errors|exceptions and errors]] and [[General Phidget Programming#Logging|using logging]]
* [[General Phidget Programming#Event Driven Code|Event catching]] versus [[General Phidget Programming#Logic Code|direct polling]]
* And more....
Of course, most of these concepts are covered using block flow within LabVIEW, but knowing the general order of operations can help you structure your code.


==Common Problems and Solutions/Workarounds==
[[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.


===Issue: Events can occasionally cause issues, especially when there are multiple of the same type of event===
[[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.
In other words, if you open 2 Interface Kits and have a sensor change event for each one your system can behave unpredictably. To solve this issue you have to 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.


Note that Phidgets do not always work cleanly in Labview.  Sometimes they do not appear, sometimes they work veeerrryyy slowly.  No known fixes yet, hopefully soon.
[[Logging, Exceptions, and Errors]] - Learn about all the tools you can use to debug your program.


===Issue: I cannot attach to an object any more after running my program once===
[[Phidget Network Server]] - Phidgets can be controlled and communicated with over your network- either wirelessly or over ethernet.
What this means is you probably halted the VI instead of using the stop button.  Halting operation will not release the Phidget device properly and will consequently make it unusable until LabVIEW has been exited and restarted.  In order to prevent this from happening you should always use the stop button instead of simply halting operation.  That way the close subVI gets called and the Phidget will be released.

Revision as of 19:20, 13 December 2018


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.

Quick Downloads

Documentation

  • Documentation is included in the LabVIEW examples in the form of VI Trees. See the Use Our Examples section for details.

Example Code

Libraries

Install Phidget Drivers for Windows

Before getting started with the guides below, ensure you have the following components installed on your machine:

  1. You will need the Phidgets Windows Drivers


Use Our Examples

One of the best ways to start programming with Phidgets is to use our example code as a guide. In order to run the examples, you will need to download and install the LabVIEW from National Instruments.


Next, download and unpack the Phidgets LabVIEW library:


Rename the unpacked folder to Phidgets

Labview rename.png


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:

Labview copy.png


Next, open LabVIEW and create a new VI:

Labview newvi.png


Navigate to the block diagram window that was generated and open the functions palette (View -> Functions Palette). Next, navigate to the Phidgets palette (Instrument I/O -> Instrument Drivers -> Phidgets):

Labview functionspalette.PNG


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

Labview vitree.png


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

Labview openfrontpanel.png


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

Labview showblock.png


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:

Labview runexample.png


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:

Labview run.PNG


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

If you haven't already, jump back and take a look at the use our examples section above. There you will be instructed on how to properly set up LabVIEW so you can follow the guides below. If you are ready, keep reading.


To begin configuring your environment, 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:

Labview options.png


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

Labview showconstantlabels.png


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

Labview startclose.png


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

Labview selectclass.png


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

Labview hover.png


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

  • Create -> Constant
  • Create -> Control
Labview createcontrol.png


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

Labview constant.PNG


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

Labview control.png


The environment now has access to Phidgets. Next, view the write your own code section located below.


Write Code

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 Phidget22 API, and 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.

Digital Input Example.png

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.

StartPhidget VI.png


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.

OpenPhidgetVI.png

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:

LabVIEW polling.png


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.

Event Array grouping.png


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.

Event Exe.png


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

Event Close.png


Step Three: Close and Delete

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

Close Phidget VI.png


Documentation

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

Labview help.png


This will take you to an HTML page that will outline 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. The following is an excerpt from the AccelerometerSetDataInterval.vi help file:

Labview help page.png

Common Problems, Solutions and Workarounds

Issue: 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.

Issue: 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.


Issue: 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.

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 Server - Phidgets can be controlled and communicated with over your network- either wirelessly or over ethernet.