Language - LabVIEW: Difference between revisions

From Phidgets Support
No edit summary
No edit summary
Line 3: Line 3:
__TOC__
__TOC__


==Introduction==
== Introduction ==


{{LanguageSupport|LabVIEW|the complete Phidget API, including events|all Phidget devices.| 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.|}}
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 capable of using the complete Phidget API, including events. We also provide example code in LabVIEW for all Phidget devices.


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


==Quick Downloads==
You can compare LabVIEW with our other supported languages.
{{QuickDownloads|LabVIEW|
{{APIQuickDownloads|{{SERVER}}/documentation/LabVIEW_Manual.pdf PDF}}
{{ExtraAPIQuickDownloads|{{SERVER}}/documentation/web/LabVIEWDoc/index.html|HTML version of}}|
{{ExampleQuickDownloads|{{SERVER}}/downloads/examples/LabVIEWx86.zip| (32 bit Windows - same file as LabVIEW library)}}
{{ExampleQuickDownloads|{{SERVER}}/downloads/examples/LabVIEWx64.zip| (64 bit Windows - same file as LabVIEW library)}}|
{{ExtraLibraryQuickDownloads|{{SERVER}}/downloads/examples/LabVIEWx86.zip|LabVIEW|(32 bit Windows - same file as LabVIEW Examples)}}
{{ExtraLibraryQuickDownloads|{{SERVER}}/downloads/examples/LabVIEWx64.zip|LabVIEW|(64 bit Windows - same file as LabVIEW Examples)}}
{{WindowsQuickDownloads}}
}}


Please note that the x64 examples are only compatible with LabVIEW 9 and newer.
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.


==Getting started with LabVIEW==
== 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:
If you are new to writing code for Phidgets, we recommend starting by running, then modifying existing examples. This will allow you to:
{{ExampleCodeReasons}}
{{ExampleCodeReasons}}


==Windows (XP/Vista/7/8)==
Instructions are divided up by operating system. Choose:
*[[#Windows(XP/Vista/7)|Windows XP / Vista / 7]]


== Windows ==
===Description of Library Files===
===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]].
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 2011 on [[#Use Our Examples | using our examples]] and [[#Write Your Own Code | writing your own code]].
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|400px]]


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


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}}
[[Image:VI Tree Examples.png|600px]]


1. Inside the {{Code|examples}} folder, navigate to the directory for your device.  
[[Image: Example Front Panel.png]]


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.
====Write Your Own Code====


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


You will see the front panel of the example. The front panel shows the user interface of the {{code|vi}} program.
[[Image:LabVIEW Phidget Start.png|600px]]


3. Next, let us take a look at the block diagram by navigating to {{Code|Window &rarr; Show Block  Diagram}}.
2. Next, select the type of Phidget you wish to use from the drop-down menu.


[[File:LabVIEW Win Block Diagram 1.PNG|link=|alt=Block Diagram]]
[[Image:LabVIEW Phidget Start Menu.png|600px]]


The block diagram shows the logic of the application.
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.


[[File:LabVIEW Win Block Diagram 2.PNG|link=|alt=Block Diagram]]
[[Image:Labview Create Control.png]]


4. The only thing left to do is to run the examples! Navigate to {{Code|Operate &rarr; Run}}.
[[Image:LabVIEW Phidget Device Info.png|600px]]


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


5. The application will run.
== Edit the Examples ==


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


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.
Your main reference for writing LabVIEW code will be this page, the examples, and the VI help files.
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.
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.


====Write Your Own Code====
'''<span style="color:#FF0000">Link to API manual</span>'''
 
=== 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|600px]]
 
=== Code Snippets ===
 
==== Step One: Initialize, Open and Wait for Attachment (plugging in) of the Phidget ====


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:
The entire process of opening and initializing a Phidget can be done by using the version of StartPhidget.vi that corresponds to your device.


1. Navigate to {{Code|Tools &rarr; Advanced &rarr; Edit Palette Set}} to modify the functions palette.
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.


[[File:LabVIEW Win Functions Palette 1.PNG|link=|alt=Edit Function Palette]]
[[Image:StartPhidget VI.png]]


2. The functions palette will show up. Right click an empty area, and select {{Code|Insert &rarr; Subpalette}}.  
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.


[[File:LabVIEW Win Functions Palette 2.PNG|link=|alt=Insert Function Palette]]
[[Image: OpenPhidgetVI.png]]


3. Next, select {{Code|Link to a directory}}.
==== Step Two: Do Things with the Phidget ====


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


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}}.  
To poll devices, simply place the corresponding blocks.


[[File:LabVIEW Win Functions Palette 4.PNG|link=|alt=Select Phidgets library]]
[[Image: LabVIEW polling 1.png]] [[Image: LabVIEW polling 2.png]]


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.  
To use events, there are three main blocks for each type, to create, execute, and close the event handler.


[[File:LabVIEW Win Functions Palette 5.PNG|link=|alt=Phidgets LabVIEW Library]]
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.


5. Click on {{Code|Save Changes}} in the {{Code|Edit Controls and Functions Palette Set}} window.  
[[Image: Event Array grouping.png]]


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


The project now has access to the Phidget function calls and you are ready to begin coding.
[[Image: Event Exe.png]]


The same [[#Follow the Examples|teaching]] section which describes the examples also has further resources for programming your Phidget.
After a program has run its course, the event handler must be closed.


==Follow the Examples==
[[Image: Event Close.png]]


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.
==== Step Three: Close and Delete ====
Closing a Phidget is done by using the appropriate version of ClosePhidget.vi


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.
[[Image:Close Phidget VI.png]]


Your main reference for writing LabVIEW code will be our LabVIEW API information, with syntax for all of our functions:
==== More How-To's ====


{{UsingAPhidgetInCodeGeneral|both of which are available in LabVIEW|[{{SERVER}}/documentation/LabVIEW_Manual.pdf API Manual]}}
'''<span style="color:#FF0000">Link to other common pages like polling vs. events</span>'''


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


==LabVIEW Error Codes==
===Issue: <span style="color:DarkRed">I cannot attach to an object any more after running my program once</span>===
LabVIEW uses a number of Phidget specific error codes which are not always well described when they pop up.  If you are debugging your application and are running into one that you cannot figure out you can get more information from the [[General Phidget Programming#Error Codes|Phidget Error Codes list]] under "Software Errors". The LabVIEW error codes are just the Phidget error codes + 7000.
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.  


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


===Issue: Events can occasionally cause issues, especially when there are multiple of the same type of event===
'''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.'''
In other words, if you open 2 Interface Kits 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 pointers to 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.
[[Image:Phidget Reset All Palette.png|600px]]
*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 would 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.


Either solution will work and while the first is a bit cleaner the second will work just as well.
[[Image:Phidget Reset All.png|600px]]


===Issue: I cannot attach to an object any more after running my program once===
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.
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 17:07, 19 January 2017


LabVIEW, developed by National Instruments is dataflow programming language for data processing.


Introduction

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 capable of using the complete Phidget API, 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.

You can compare LabVIEW with our other supported languages.

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.

Quick Downloads

List of download links, to be added once files are available

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:

  • Make sure your libraries are properly linked
  • Go from source code to a test application as quickly as possible
  • Ensure your Phidget is hooked up properly

Instructions are divided up by operating system. Choose:

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 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 using our examples and 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.

Phidget22 LabVIEW Palette.png

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.

VI Tree in Palette.png

3. Right click "VI Tree.vi" and select Open Front Panel. From the front panel, open VI Tree.vi's block diagram.

VI Tree Open Front Panel.png

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.

VI Tree Examples.png

Example Front Panel.png

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.

LabVIEW Phidget Start.png

2. Next, select the type of Phidget you wish to use from the drop-down menu.

LabVIEW Phidget Start Menu.png

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.

Labview Create Control.png

LabVIEW Phidget Device Info.png

4. You are now ready to write code for your Phidget, as outlined in the 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, 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.

Link to API manual

Example Flow

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

Digital Input Example.png

Code Snippets

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.

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 1.png LabVIEW polling 2.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

More How-To's

Link to other common pages like polling vs. events

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