Alert.png

Notice: This page contains information for the legacy Phidget21 Library.

Phidget21 is out of support. Bugfixes may be considered on a case by case basis.

Phidget21 does not support VINT Phidgets, or new USB Phidgets released after 2020. We maintain a selection of legacy devices for sale that are supported in Phidget21.

We recommend that new projects be developed against the Phidget22 Library.


Click on the 2phidget22.jpg button in the menu bar to go to the Phidget22 version of this page.

Alert.png

Software Overview: Difference between revisions

From Phidgets Legacy Support
No edit summary
 
(215 intermediate revisions by 6 users not shown)
Line 1: Line 1:
Phidgets can run on a variety of Operating Systems, and be driven by a variety of Programming Languages.
[[Category:Overview]]
__NOTOC__
Phidgets’ philosophy is that you do not have to be an electrical engineer in order to do projects that use devices like sensors, motors, motor controllers, and interface boards. All you need to know is how to program.  


On [[OS - Windows|Windows]] and [[OS - Mac OSX|Mac OSX]], we provide graphical tools to simply plug a Phidget in to your computer and display basic data to your computer screen.
We have developed a complete set of Application Programming Interfaces (API) that are supported for many different [[#Operating System Support|operating systems]], and which can be used through many different [[#Language Support | programming languages]].


But to '''work directly''' with a Phidget and do things with the data you collect from it, you will need to write code.   
{| style="border:1px solid darkgray;" cellpadding="5px;"
|-
| We suggest starting with the '''Getting Started''' guide for your device, which can be found in its [[:Category:UserGuide|user guide]].  This will help you run a basic example to check your hardware and drivers.   
|-
|Have you been there but want more introduction? We have overview pages - with lots of explanatory images - for some of our high-level topics:
|-
|
* [[What is a Phidget?]]
|-
|
* [[Phidget WebService]]
* [[Phidget Manager]]
* [[Phidget Dictionary]]
|}


To control a Phidget via code, you will need:
After that, you'll need to dive right in and write code.
#The Phidget '''Core Drivers''' and libraries for [[#Operating System Support|your operating system]]
#'''Libraries''' for your [[#Language Support|programming language]]
#'''Example Code''' in your [[#Language Support|programming language]]
#An '''API Reference''' list of functions you can use in [[#Language Support|your language]]
#A list of the '''Specific API''' calls you can use with your device, as found on your [[Device Main Page|device page]]


From the Getting Started Guide, you'll have already chosen your [[#Operating System Support|operating system below]], and from the operating system page you'll be directed to [[#Language Support|choose a language]].


This Software Overview is the first step in writing code to work with your Phidget.
So if you're here, you probably want:
* An overview of our language and operating system support (in which case, just scroll down)
* A quick link to our programming overview with lots of code snippets, called the '''[[General Phidget Programming|General Phidget Programming Guide]]'''
* The API with syntax and function calls for your device - which you can find on the [[#Language Support | page for your language]]
* Or, information about your product, which can be found on its product page on [{{SERVER}} our main website] or in its [[:Category:UserGuide|user guide]].


Here you can find links to operating system pages with drivers, language pages with code libraries, and references for using Phidgets in each language.  You will also find a general introduction to using a Phidget in code, and two general code designs that may be used in your project.
We try to make our documentation as complete as possible - which means there is a lot of it!  Browse around, try the search bar, and if you can't find what you need, please [[Contact Us]].
 
<br>


== Operating System Support ==
== Operating System Support ==
{{:Operating System Support}}


This section describes how to set up your operating system to write and run code for Phidgets.  Getting your operating system ready is the first step toward writing code.
{{:Programming Resources}}
 
On the pages linked below, you will find the '''core drivers''' and libraries for using your Phidget either '''directly''' through USB or '''remotely''' via the [[Phidget Webservice]]. 
 
The Webservice controls a Phidget by connecting to a host computer and its Phidget over a network.  So, the host computer must be able to run a Phidget directly.
 
The Windows and Mac OSX pages also include a graphical program to view and run basic tests on your Phidget.  On other operating systems, only code is available, although ready-to-compile examples are provided for [[#Language Support|every language]].
 
Phidgets can '''run directly''' or be '''driven remotely''' on these operating systems:
 
* [[OS - Windows|Windows]]
* [[OS - Mac OSX|Mac OSX]]
* [[OS - Linux|Linux]] (Kernel 2.6+)
* [[OS - Windows CE|Windows CE]] ??
* [[OS - Android|Android]] (3.1 and above)
* [[Phidget SBC]]
 
Phidgets can be only '''driven remotely''' by these operating systems:
 
* [[OS - iOS|IPhone iOS]]
* [[OS - Android|Android]] (3.0 and earlier)
 
== Language Support ==
 
This section outlines what languages you can write code in for Phidgets and how to set them up.
 
We provide a variety of supported languages for using Phidgets.  Each language has its own '''libraries''', which may be found on the language pages below. Many languages also depend on the '''core drivers''' being installed as well.  These drivers can be found on the [[#Operating System Support|operating system pages]] above.
 
Phidgets can be controlled using our [[#General Phidget Programming|high level API]] which allows for either an [[#Event Driven Code|event driven]] style of code design, or by traditional [[#Logic Code|logic code]].  All languages below support logic code.  Most - but not all - languages support our complete API, which includes support for event-driven design.
 
If you are flexible on what language you can use, we suggest choosing a language which supports event-driven code.
 
When you visit the page below for your language, make sure you download:
#Software libraries
#Example code
#The specific API
 
Then, for a high-level introduction to [[#General Phidget Programming|programming Phidgets]], please return here and continue reading.
 
Phidgets have libraries to support '''event driven design''' in the following languages:
 
* [[Language - Adobe Director]]
* [[Language - Android Java|Android Java]]
* [[Language - Applescript]]
* [[Language - AutoIt]]
* [[Language - C/C++|C/C++]]
* [[Language - C Sharp|C Sharp]]
* [[Language - C Sharp (.NET Compact Framework)|C Sharp (.NET)]]
* [[Language - Cocoa]]
* [[Language - Cocoa Touch]]
* [[Language - Delphi]]
* [[Language - Flash AS3]]
* [[Language - Flex AS3]]
* [[Language - iOS]]
* [[Language - Java|Java]]
* [[Language - LabVIEW]]
* [[Language - LiveCode]]
* [[Language - Max/MSP]]
* [[Language - Microsoft Robotics Studio]]
* [[Language - Python|Python]]
* [[Language - REALBasic]]
* [[Language - Simulink]]
* [[Language - Visual Basic .NET]]
* [[Language - Visual Basic 6.0]]
* [[Language - Visual Basic for Applications]]
* [[Language - Visual Basic Script]]
 
 
Phidgets have libraries to support only '''logic code''' in the following languages:
 
* [[Language - MATLAB|MATLAB]]
* ...
 
== General Phidget Programming ==
 
To use your Phidget within code, you'll want to:
# Create a Phidget [[#Creating a Software Object|software <code>object</code>]], which gives you access to the functions specific to that device
# [[#Opening the Phidget|Open the Phidget]] using the <code>object</code>
# Detect when a [[#Attaching the Phidget|Phidget is attached]] (plugged in) by using the <code>object</code>
# Use [[#Do Things with the Phidget|functions that the <code>object</code> provides]], like turning on LEDs, reading sensors, triggering events on data change, etc
# [[#Close the Phidget|Close the <code>object</code>]], when you are done
 
=== Creating a Software Object ===
 
Phidget devices are controlled using software objects.  All software device objects have a common API and set of functions that allow you to '''open''' it, '''close''' it, and set a few listeners to general events such as '''attach''' (plug in), '''detach''' (unplug), and errors. 
 
But when you create an actual software object, it is a software object '''specific''' to your device.
 
For example, in Java:
 
<div style="background-color: #f3f3f3; border-color: #1c9edb; border-width:1px; border-style: dashed;">
<font size="3">
<source lang=java>
 
  // Create a new Accelerometer object
  AccelerometerPhidget device = new AccelerometerPhidget();
 
</source>
</font>
</div>
<br>
<div style="background-color: #f3f3f3; border-color: #1c9edb; border-width:1px; border-style: dashed;">
<font size="3">
<source lang=java>
 
 
  // Create a new RFID device object
  RFIDPhidget device = new RFIDPhidget();
 
</source>
</font>
</div>
 
Or in C:
 
<div style="background-color: #f3f3f3; border-color: #1c9edb; border-width:1px; border-style: dashed;">
<font size="3">
<source lang=c>
 
    // Create a new Accelerometer object
    CPhidgetAccelerometerHandle device = 0;
    CPhidgetAccelerometer_create(&device);
 
</source>
</font>
</div>
<br>
<div style="background-color: #f3f3f3; border-color: #1c9edb; border-width:1px; border-style: dashed;">
<font size="3">
<source lang=c>
 
    // Create a new RFID device object
    CPhidgetRFIDHandle device = 0;
    CPhidgetRFID_create(&device);
 
</source>
</font>
</div>
 
 
Each software object has an API and available functions which are specific to that device.  For example, the RFID device API includes a function to turn on the RFID antenna.  The accelerometer device API includes a function to set the sensitivity on each axis.
 
=== Opening the Phidget ===
 
Phidgets can either be opened when attached directly to a computer, or they can be opened remotely using the [[Phidget Webservice]].  This section deals primarily with opening Phidgets directly.
 
Once you have created your [[#Creating a Software Object|software object]] for your specific type of device, you can call the <code>open()</code> function in your language on that object.  For example, in Java:
 
<div style="background-color: #f3f3f3; border-color: #1c9edb; border-width:1px; border-style: dashed;">
<font size="3">
<source lang=java>
    device.open();
</source>
</font>
</div>
 
Or in C:
 
<div style="background-color: #f3f3f3; border-color: #1c9edb; border-width:1px; border-style: dashed;">
<font size="3">
<source lang=c>
    CPhidget_open((CPhidgetHandle) device, -1);
</source>
</font>
</div>
 
All specific language calls can be found in the API documentation located on each [[#Language Support|individual language page]].
 
The <code>open()</code> function in any language opens the software object for use, not the hardware itself.  Having the software "open" before the hardware means that the software can capture all events, including multiple attach (plug in) and detach (unplug) events for one <code>open()</code> call.
 
=== Attaching the Phidget ===
 
Physically, attaching a Phidget means plugging it in.  In your code, you can detect an attachment either with an '''event''' in [[#Event Driven Code|event-driven programming]], or '''waiting''' for it, in [[#Logic Code|logic programming]].
 
==== Event Attachment ====
 
For example, to use an event to detect attachment in Java:
 
<div style="background-color: #f3f3f3; border-color: #1c9edb; border-width:1px; border-style: dashed;">
<font size="3">
<source lang=java>
  // After creating a Phidget object called "device":
  device.addAttachListener(new AttachListener() {
      public void attached(AttachEvent ae) {
          System.out.println("A new device has been plugged in!");
      }
  });
</source>
</font>
</div>
 
Or to use an event to detect attachment in C:
 
<div style="background-color: #f3f3f3; border-color: #1c9edb; border-width:1px; border-style: dashed;">
<font size="3">
<source lang=c>
  int AttachHandler (CPhidgetHandle device, void *userData) {
      printf("A new device has been plugged in!");
      return 0;
  }
 
  // .....Then, in the main code after creating a Phidget object "device":
  CPhidget_set_OnAttach_Handler((CPhidgetHandle) device, AttachHandler, NULL);
</source>
</font>
</div>
 
Both of the code snippets above do the same thing.  The function <code>AttachHandler(...)</code> is called automatically when a device is plugged in.
 
You will want to attach events (via <code>addAttachListener()</code> above, for example) '''before you open the Phidget object'''.  Otherwise, triggered events may be lost.
 
This method for using events to detect attachment can be expanded to other events and more complex control flow.  Where possible, all example code downloadable from the [[#Language Pages|specific language pages]] shows event-driven programming.
 
==== Wait for Attachment ====
 
Waiting for attachment is a straightforward process.  Your code does not handle events, it simply waits for a device to be plugged in before moving on and doing something else.
 
For example, in Java you wait for attachment on a '''created and open''' software object (called device) like this
 
<div style="background-color: #f3f3f3; border-color: #1c9edb; border-width:1px; border-style: dashed;">
<font size="3">
<source lang=java>
  // Wait until a device is plugged in
  device.waitForAttachment();
</source>
</font>
</div>
 
Or in C (again, device has been '''created and opened''') :
 
<div style="background-color: #f3f3f3; border-color: #1c9edb; border-width:1px; border-style: dashed;">
<font size="3">
<source lang=c>
  int result;
  // Wait up to 10000 ms for a device to be plugged in
  if((result = CPhidget_waitForAttachment((CPhidgetHandle) device, 10000))) {
      // No attachment, error
  }
  // Successful attachment
</source>
</font>
</div>
 
So, unlike the event model above, a Phidget software object should be open before waiting for a device to be plugged in.
 
=== Do Things with the Phidget ===
 
After you have a Phidget software object (named, for example, <code>device</code> as above) that is:
*Created
*Properly attached to any events
*Opened
*Attached (plugged in)
 
...Then, you can actually call function to turn LEDs on, change output state, read data from sensors, etc.
 
Software information on this step can be found in the individual language APIs on the [[#Language Support|specific language pages]].
 
=== Close the Phidget ===
 
When you are finished with the Phidget software object at the end of your program, you should close and (in some languages) delete it.
 
For example, in Java:
<div style="background-color: #f3f3f3; border-color: #1c9edb; border-width:1px; border-style: dashed;">
<font size="3">
<source lang=java>
  device.close();
  device = null;
</source>
</font>
</div>
 
Or, in C:
<div style="background-color: #f3f3f3; border-color: #1c9edb; border-width:1px; border-style: dashed;">
<font size="3">
<source lang=c>
    CPhidget_close((CPhidgetHandle) device);
    CPhidget_delete((CPhidgetHandle) device);
</source>
</font>
</div>
 
== Putting It Together ==
 
User and device actions can be handled by either:
*Letting the program tell you when they happen and then doing something ('''event driven''' code)
*Polling for things to happen then doing something ('''logic''' code)
 
The style of programming you choose (and hence the language you might prefer) would depend on what you want to do with the Phidget.  The two sections, [[#Event Driven Code|Event Driven Code]] and [[#Logic Code|Logic Code]] below give benefits, drawbacks, and general examples of each style.
 
The styles can also mix.  For example, you can take a defined set of steps at first such as turning on an LED or antenna (logic code) and then doing nothing until an output change event is fired (event code).
 
With languages that support both styles, you can mix and match.  For languages that support only logic code (see the [[#Language Support|Language Support Categories]] above) you can only use the logic paradigm style.
 
Examples in pseudo-code are given below for each style type so you can see how your language choice can affect your code design.
 
=== Logic Code ===
 
Logic code has use for:
* Simple, single-device applications
* Non-GUI applications (GUIs usually are event driven)
* The user driving the device rather than listening to it
 
Logic code is relatively easy to design well.  For example, using the [[#Creating a Software Object|create]], [[#Opening a Phidget|open]], [[#Attaching a Phidget|attach]], [[#Do Things with the Phidget|do stuff]], and [[#Close the Phidget|close]] concepts introduced above, logic code to handle a Phidget might be written like this:
 
<br>
 
[[File:logic.png]]
 
<br>
 
Although this design does not explicitly capture every event that fires when data or input changes, by polling the device often enough no data will be lost.
 
However, logic code cannot handle constant, asynchronous events as cleanly as [[#Event Driven Code|event driven code]] can.
 
These designs can be mixed.  So, if you find that in logic code you have a highly complex <code>if</code> loop driving your program, you should consider changing some of it to event driven code.  This type of awkward if-loop might look like this:
 
<div style="background-color: #f3f3f3; border-color: #1c9edb; border-width:1px; border-style: dashed;">
<font size="3">
<source lang=c>
 
  Create Device Software Object
  Open Device
 
  Loop Until Exit Requested {
    if No Device Attached {
        Wait For Attachment until Timeout
        if Wait Timeout Reached {
            break
        } else {
            Initialize Device
        }
    } else {  // Device Is Attached
        if Device Data Type 1 Changed {
            Do Something
        }
        if Device Data Type 2 Changed {
            Do Something Else
        }
        // ... More data change functions here
    }
    Collect User Input
  }
 
  Close Device
  Delete Device
 
</source>
</font>
</div>
 
On the other hand, you can probably see that if your language does not give the option for events, you can use this structure to mimic what events would enable you to do.
 
=== Event Driven Code ===
 
Event driven code allows for clean handling of complex, asynchronous programs:
*Handling multiple Phidgets
*Handling active plugging or unplugging of the Phidget (multiple attach and detach events)
*Working behind a GUI, as many GUIs are already event driven
*Capturing all sensor data - or input and output - changes without constantly polling
 
Without event driven code, you will need to constantly poll the device to see if any state has changed.  If you poll at a slower rate than your input or output changes, you will not capture all data.
 
However, event driven code is usually not as useful or efficient for:
*Only one open and close event
*Using only one device
*Having the user (or program) ''put'' changes onto the device (in contrast to reading data ''from'' the device)
 
Event driven code is relatively hard to design well.  It may help to draw out a '''flowchart''', '''state machine''', or at least a '''pseudo-code outline''' of your system design and all events you wish to handle before writing code.
 
The code examples given for each [[#Language Support|specific language]] uses events if they are supported by the language.
 
[[File:event.jpg]]

Latest revision as of 14:40, 10 August 2012


Phidgets’ philosophy is that you do not have to be an electrical engineer in order to do projects that use devices like sensors, motors, motor controllers, and interface boards. All you need to know is how to program.

We have developed a complete set of Application Programming Interfaces (API) that are supported for many different operating systems, and which can be used through many different programming languages.

We suggest starting with the Getting Started guide for your device, which can be found in its user guide. This will help you run a basic example to check your hardware and drivers.
Have you been there but want more introduction? We have overview pages - with lots of explanatory images - for some of our high-level topics:

After that, you'll need to dive right in and write code.

From the Getting Started Guide, you'll have already chosen your operating system below, and from the operating system page you'll be directed to choose a language.

So if you're here, you probably want:

  • An overview of our language and operating system support (in which case, just scroll down)
  • A quick link to our programming overview with lots of code snippets, called the General Phidget Programming Guide
  • The API with syntax and function calls for your device - which you can find on the page for your language
  • Or, information about your product, which can be found on its product page on our main website or in its user guide.

We try to make our documentation as complete as possible - which means there is a lot of it! Browse around, try the search bar, and if you can't find what you need, please Contact Us.

Operating System Support

These operating system pages provide drivers for using Phidgets. They help you set up your system after following the Getting Started guide for your device. The operating systems links below are also on every Getting Started guide, so if you have not yet read the one for your device, head straight to the user guide for your device where you can find it and follow it. If you are just looking to get your drivers right away you can go to the quick downloads section for the appropriate OS below. If you need to access non-current versions of our drivers you can find them here. You can view the changelog for the drivers here: Driver Changelog.

Phidgets can be run either directly through USB or remotely over a network via the Phidget WebService. Most operating systems below can run Phidgets directly, but a few can only control them over a network. Phidgets can also probably be run on other operating systems that have support for compiling C code, and either a standard network connection for running a Phidget over a network, or a USB host controller for direct control. We don't offer support directly for these additional operating systems, but you may find the installation and setup instructions for Linux useful because compiling and custom toolchains are discussed.

Licensing information for all of Phidgets' software can be found here. The actual licenses are available at the bottom of Phidgets Inc.

Phidgets can run either directly or over a network on these operating systems:

Operating System Drivers and Libraries Direct Control Remote Network Control Supported Version
Desktop OSes
OS - WindowsWindows Quick Downloads Checkmark.png Checkmark.png XP SP3 or Newer
OS - OS XOS X Quick Downloads Checkmark.png Checkmark.png OS X 10.5 or newer
OS - LinuxLinux Quick Downloads Checkmark.png Checkmark.png Kernel 2.6 or newer
Mobile/Wireless OSes
OS - Phidget SBCPhidget SBC Quick Downloads Checkmark.png Checkmark.png All versions
OS - AndroidAndroid Quick Downloads Checkmark.png Checkmark.png 3.1 and newer, with USB port
OS - AndroidAndroid Quick Downloads X Checkmark.png 1.5 to 3.0
OS - iOSiOS Quick Downloads X Checkmark.png 5.1.1 or newer
OS - Windows CEWindows CE Quick Downloads Checkmark.png Checkmark.png 5.0 or newer

Language Support

We provide a variety of supported languages for using Phidgets. Each language has its own libraries, which may be found on the language pages below, along with code examples and an in-depth API.

Many languages also depend on the core drivers being installed as well. These drivers can be found on the operating system pages above.

Phidgets supports the following languages. If the language you have chosen is not fully supported with examples for all products then there are some resources available for you to fill in the gaps. First we recommend you look at the API which will show you all of the functions you can use. Next, you should look at the code samples that are available in that language. Finally you should look at code samples for your device in other languages. Between those three things you should be able to piece together what you need to be doing, as always, if you run into trouble Contact Us. If you have some flexibility in what language to use, we recommend using a Core Language:

Language Libraries API Code Samples Events Logic Code Use via Direct USB* Phidget WebService Native Library** Phidget User Base OS Support
Core Languages
C Sharp C# Quick Downloads All Devices All Devices Checkmark.png Checkmark.png Checkmark.png Checkmark.png Checkmark.png Extensive OS - Windows OS - OS X OS - Linux
C/C++ C/C++ Quick Downloads All Devices All Devices Checkmark.png Checkmark.png Checkmark.png Checkmark.png Checkmark.png Extensive OS - Windows OS - OS X OS - Linux
Python Python Quick Downloads All Devices All Devices Checkmark.png Checkmark.png Checkmark.png Checkmark.png Checkmark.png Extensive OS - Windows OS - OS X OS - Linux
Java Java Quick Downloads All Devices All Devices Checkmark.png Checkmark.png Checkmark.png Checkmark.png Checkmark.png Extensive OS - Windows OS - OS X OS - Linux
Visual Basic .NET Visual Basic .NET Quick Downloads All Devices All Devices Checkmark.png Checkmark.png Checkmark.png Checkmark.png Checkmark.png Extensive OS - Windows
Visual Basic 6.0 Visual Basic 6.0 Quick Downloads All Devices All Devices Checkmark.png Checkmark.png Checkmark.png Checkmark.png Checkmark.png Extensive OS - Windows
Cocoa Cocoa Quick Downloads All Devices All Devices Checkmark.png Checkmark.png Checkmark.png Checkmark.png Checkmark.png Extensive OS - OS X
Mobile Languages
Android Java Android Java Quick Downloads All Devices InterfaceKit Only Checkmark.png X Some Devices Checkmark.png Checkmark.png Moderate OS - Android
iOS iOS Quick Downloads All Devices InterfaceKit Only Checkmark.png Checkmark.png X Checkmark.png Checkmark.png Moderate OS - iOS
Scripting
Applescript Applescript Quick Downloads All Devices All Devices Checkmark.png Checkmark.png Checkmark.png Checkmark.png Checkmark.png Moderate OS - OS X
AutoIt AutoIt Quick Downloads All Devices None Checkmark.png Checkmark.png Checkmark.png Checkmark.png Checkmark.png Small OS - Windows
Ruby Ruby Quick Downloads All Devices All Devices Checkmark.png Checkmark.png Checkmark.png Checkmark.png Checkmark.png Small OS - OS X OS - Linux
Science and Math
LabVIEW LabVIEW Quick Downloads All Devices All Devices Checkmark.png Checkmark.png Checkmark.png Checkmark.png Checkmark.png Moderate OS - Windows
MATLAB MATLAB Quick Downloads All Devices Some Devices X Checkmark.png Checkmark.png Checkmark.png X Moderate OS - Windows OS - OS X OS - Linux
Multimedia
Flash AS3 Flash AS3 Quick Downloads All Devices All Devices Checkmark.png Checkmark.png Checkmark.png Checkmark.png Checkmark.png Extensive OS - Windows OS - OS X
Max/MSP Max/MSP Quick Downloads All Devices All Devices Checkmark.png Checkmark.png Checkmark.png Checkmark.png Checkmark.png Moderate OS - Windows OS - OS X
Adobe Director Adobe Director Quick Downloads All Devices InterfaceKit Only Checkmark.png Checkmark.png Checkmark.png Checkmark.png Checkmark.png Small OS - Windows
LiveCode LiveCode Quick Downloads InterfaceKit Only InterfaceKit Only Checkmark.png Checkmark.png Checkmark.png X Checkmark.png Small OS - Windows OS - OS X
Other Languages
C Sharp (.NET Compact Framework) C# (.NET Compact) Quick Downloads All Devices Some Devices Checkmark.png Checkmark.png Checkmark.png Checkmark.png Checkmark.png Small OS - Windows CE
Visual Basic (.NET Compact Framework) Visual Basic
(.NET Compact Framework)
Quick Downloads All Devices None Checkmark.png Checkmark.png Checkmark.png Checkmark.png Checkmark.png Small OS - Windows CE
Visual Basic for Applications Visual Basic for Apps Quick Downloads All Devices Some Devices Checkmark.png Checkmark.png Checkmark.png Checkmark.png Checkmark.png Small OS - Windows
Visual Basic Script Visual Basic Script Quick Downloads All Devices Some Devices Checkmark.png Checkmark.png Checkmark.png Checkmark.png Checkmark.png Small OS - Windows

* A direct USB connection would be plugging the Phidget into a USB port and using it locally. This is the typical way to use a Phidget. However, some platforms (such as the iPhone platform) do not have USB ports and hence can only use a Phidget over a network, via the Phidget WebService.

** Native library support means that the calls you make to a Phidget in this language are in the language as well. If the calls are non-native, the use of Phidgets is through an external library linker, such as callib() in MATLAB, for example. The core Phidget library is written in C, and most other languages use this library as their core, but a 'Native' interface cleanly hides this detail.

Most languages have code samples for all Phidgets, but some have only some devices (visit the language page to learn which ones), and some only have an Interface Kit example. The Phidget Interface Kit is a common Phidget which provides an interface with analog sensors, digital input, and digital output. So, when we choose which examples to write, the Interface Kit is often at the top of our customer's lists.

Icon-Android Honeycomb.pngAndroid Honeycomb Version 3.1 or Higher Only

Third Party Support

Warning.png These products must be purchased directly from these companies and all support calls must be directed to them

Some third party companies also offer and support software programs that work with Phidgets boards. Phidgets does not have a certification program and does not make any warranty about these products.

In alphabetical order:

Company Product Runs On Website Synopsis Product Information
24U 24U Phidgets Plug-in 2.0 Mac, Windows Website 24U Phidgets Plug-In lets you connect different kind of phidgets (www.phidgets.com) to your computer's USB port and interact with them directly from FileMaker Pro. Pdficon small.gif
DSPRobotics Flowstone Windows 2000/XP/Vista/7/Embedded Website Graphical Programming Language aimed at real-time Digital Signal Processing.(DSP), Robotics and Embedded applications. FlowStone is a drag and drop environment where you combine high-level and low-level modules to build real time applications. Pdficon small.gif
MANIPIL Visual Domotique Windows XP/Vista/7 Website Visual Domotique is a Graphical I/O programming for Windows XP/Vista/7. Various components allow you to draw electrical schema and control panel. No need to know how to program to use this software. Varied uses are possible: Home automation, security, hobby, Control process education... Available in French. Pdficon small.gif
PCRBOX PCR Automation Windows XP/Vista/7 (32 & 64bit) Website PCR Automation is an easy to use software that works immediately without the need for any programming. It interfaces with the 1018, 1070 and 1072. Several interfaces can be opened simultaneously, each in a different window. Each input / output can be customized (label, sensor, offset, units, sensitivity, recording ...). The log files can be automatically sent by E-mail. Users can add their own sensors to the library of thirty Phidgets sensors. Pdficon small.gif
PiXCL Automation Technologies PiXCL Advanced Imaging 10.2 Windows XP/Vista/7 Website PiXCL is a powerful and easy-to-learn event driven interpreted language for the fast creation of image acquisition, processing and advanced analysis applications. The suite includes a compiler and development studio with context sensitive help and plenty of sample code. V10.1 provides you with the tools to create applications that combine Phidget devices with digital cameras and scanners. Pdficon small.gif
SoapBox Automation SoapBox Snap Windows XP/Vista/7 Website SoapBox Snap is a free and open source PC-based automation platform. It includes a ladder logic editor and a “soft” runtime right out of the box. Pdficon small.gif
UACh - Universida Austral de Chile monoBOTICS-icarus Linux Website The monoBOTICS project aims to become an OpenSource Framework, to facilitate the tasks of design, simulation and implementation of solutions for areas of Robotics and Automation, both for people with basic knowledge of programming, as for more advanced developers. Pdficon small.gif
Omnipotence Software ECS (Event Control System) Windows, Linux Website Powerful and flexible, general purpose automation software for commercial and residential applications. Supports simple schedules and English-like scripts for more elaborate logic. ExternalLink.png

Legacy Languages

Legacy languages are languages which we supported in the past; however, we no longer actively develop or support them. We provide this software page information for the limited existing users:

Language
REALBasic REALBasic
Flex AS3 Flex AS3
Robotics Studio Microsoft Robotics Studio
Simulink Simulink
Delphi Delphi

If you have an existing code base in these languages and the legacy status of these languages is a serious inconvenience, please Contact Us.