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

Language - Adobe Director: Difference between revisions

From Phidgets Legacy Support
No edit summary
 
(51 intermediate revisions by 4 users not shown)
Line 1: Line 1:
[[Category:Language]]
[[Category:Language]]
[[File:icon-Adobe_Director.png|64x64px|link=|alt=Adobe Director]] Adobe Director is a...
{{OSLang|[[File:icon-Adobe_Director.png|64x64px|link=|alt=]]|Adobe Director, developed by [http://www.adobe.com Adobe Systems] is a tool used to build interactive and multimedia applications.}}
 
__TOC__
__TOC__


==Introduction==
==Introduction==


{{LanguageSupport|Adobe Director|the complete Phidget API, including events|all Phidget devices.|Windows. We provide instructions on how to set up your environment for [[#Command line | command line]], [[#IDLE | IDLE]], and [[#Eclipse with PyDev | Eclipse with PyDev]]|
{{LanguageSupport|Adobe Director|the complete Phidget API, including events|the PhidgetInterfaceKit devices.|Windows.|}}
}}


==Quick Downloads==
==Quick Downloads==


{{QuickDownloads|Python|
{{QuickDownloads|Adobe Director|
{{APIQuickDownloads|http://www.phidgets.com/documentation/COM_API_Manual.pdf}}|
{{APIQuickDownloads|{{SERVER}}/documentation/COM_API_Manual.pdf}}|
{{ExampleQuickDownloads|http://www.phidgets.com/downloads/examples/AdobeDirector_2.1.8.20120216.zip|}}|
{{ExampleQuickDownloads|{{SERVER}}/downloads/phidget21/examples/com/AdobeDirector.zip|}}|
{{ExtraLibraryQuickDownloads|http://www.phidgets.com/downloads/libraries/Phidget21-windevel_2.1.8.20120216.zip|COM|}}
{{ExtraLibraryQuickDownloads|{{SERVER}}/downloads/phidget21/libraries/windows/Phidget21-windevel.zip|COM|}}
{{WindowsQuickDownloads}}
{{WindowsQuickDownloads}}}}
{{MacQuickDownloads}}
{{LinuxQuickDownloads}}
}}


==Getting started with Adobe Director==
==Getting started with Adobe Director==
Line 25: Line 20:
{{ExampleCodeReasons}}
{{ExampleCodeReasons}}


Instructions are divided up by operating system. Choose:
The only operating system we support with Adobe Director is [[#Windows (2000/XP/Vista/7)|Windows (2000/XP/Vista/7)]].
*[[#Windows(2000/XP/Vista/7)|Windows 2000 / XP / Vista / 7]]
*[[#OS X |OS X]]
*[[#Linux | Linux]] (including PhidgetSBC)


==Windows(2000/XP/Vista/7)==
==Windows (XP/Vista/7/8)==


===Description of Library===
===Description of Library Files===
Python programs on Windows depend on the following. 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 Python Module into your system.
Adobe Director programs on Windows depend on the following:
* <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|phidget21.dll}}</b> contains the actual Phidget library, which is used at run-time.  By default, it is placed in {{Code|C:\Windows\System32}}. The installers in the [[#Libraries and Drivers | Quick Downloads]] section put this file into your system.
* <b>{{Code|Phidget Python Module}}</b> is the Phidget library for Python.
* <b>{{Code|Phidget21COM.dll}}</b> is the Component Object Model (COM) library and provides your project access to the Phidget ActiveX objects. This is part of our [{{SERVER}}/downloads/phidget21/libraries/windows/Phidget21-windevel.zip COM Library]. If you installed the Phidget drivers, it will have automatically registered the ActiveX objects into your system. If you are manually installing this file, you must register it through command line by running: {{Code|regsvr32 Phidget21COM.dll}}.
* <b>{{Code|setup.py}}</b> is used to install the Phidget module into the standard location for third party Python modules. On typical Python environments, this setup will install the Phidget Python module in the {{Code|site-packages}} directory.  


If you do not want to use our installer, you can download the [http://www.phidgets.com/downloads/libraries/Phidget21-windevel_2.1.8.20111220.zip {{Code|phidget21.dll}}].
If you do not want to use our installer, you can download both [{{SERVER}}/downloads/phidget21/libraries/windows/Phidget21-windevel.zip files] and manually install them where you want; refer to our [[OS_-_Windows#Manual_File_Installation| Manual Installation Instructions]].


===Adobe Director 11.5===


The first thing you will have to do is to [[#Installing the Phidget Python Module |install the {{Code|Phidget Python Module}}]].
====Use Our Examples====
Afterwards, Running the examples and writing your own code can be fairly compiler-specific, so we include instructions for each environment below.
 
===Installing the Phidget Python Module===
 
Please start by downloading [http://www.phidgets.com/downloads/libraries/PhidgetsPython_2.1.8.20120131.zip Phidget Python Module]. After extracting the file, open up a command line terminal, traverse to the directory containing {{Code|setup.py}} and enter the following to install the Phidget Python module into the Python environment.
 
<div class="source">
<syntaxhighlight lang=bash>
python setup.py install
</syntaxhighlight>
</div>


1. Download the [{{SERVER}}/downloads/phidget21/examples/com/AdobeDirector.zip examples] and unpack them into a folder.  These examples were written in Adobe Director 11.5.


===Command Line===
2. The easiest way to confirm that your environment is set up properly will be to run the HelloWorld Adobe Director example. In the Adobe Director environment, open up the file named {{Code|HelloWorld.dir}}.


====Use Our Examples====
3. To run the example, click on Control &rarr; Play.  
Please ensure that the Phidget Python Module is [[#Installing the Phidget Python Module | installed]] onto your system.


Next, download the [http://www.phidgets.com/downloads/examples/Python_2.1.8.20120131.zip examples] and unpack them into a folder.  While these examples were written in Python 3.0, they are also compatible with Python 2.5(with a [[#All Operating Systems: The examples produces an error while running in a Python 2.5 environment. | minor modification]]). If you aren't sure what the software example for your device is called, check the software object listed in the [[Device List | Getting Started guide for your device]].
[[File:AdobeDirector Play.PNG|link=|alt=Play]]


Now, open up a command line prompt and navigate to the directory of the example folder.
4. This program will detect for devices that are attached/detached on the computer. Go ahead, and attach or detach your devices! Here is an example output:


Next, enter the following to run the example:
[[File:AdobeDirector HelloWorld Output.PNG|link=|alt=HelloWorld Output]]


<div class="source">
After confirming that the {{Code|HelloWorld}} example is working, you can proceed to run the example for your device. Currently, the only device we have example code for is the PhidgetInterfaceKit.  
<syntaxhighlight lang=bash>
python example.py
</syntaxhighlight>
</div>


Once you have the Python examples running, we have a [[#Follow the Examples|teaching]] section below to help you follow them.
Once you have the Adobe Director examples running, we have a teaching section below to help you follow them.


====Write Your Own Code====
====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 configure your environment to properly link the Phidgets Python libraries. Please see the [[#Use Our Examples| Use Our Examples ]] section for instructions.
When you are building a project from scratch, or adding Phidget function calls to an existing project, you'll need to configure your environment to properly link the Phidget ActiveX object.  
 
Then, in your code, you will need to reference to the Phidget Python library.
 
<div class="source">
<syntaxhighlight lang=python>
from Phidgets.PhidgetException import *
from Phidgets.Events.Events import *
</syntaxhighlight>
</div>
 
Then, you will also have to add a reference to your particular Phidget.  For example, you would include the following line for a PhidgetInterfaceKit:
<div class="source">
<syntaxhighlight lang=python>
from Phidgets.Devices.InterfaceKit import *
</syntaxhighlight>
</div>
 
Please see the [http://www.phidgets.com/downloads/examples/Python_2.1.8.20120131.zip examples] on how to add a reference to your particular Phidget.
 
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.
 
===IDLE===
 
====Use Our Examples====


Please ensure that the Phidget Python Module is [[#Installing the Phidget Python Module | installed]] onto your system.  
1. Create a new movie.  


Next, download the [http://www.phidgets.com/downloads/examples/Python_2.1.8.20120131.zip examples] and unpack them into a folder.  While these examples were written in Python 3.0, they are also compatible with Python 2.5(with a [[#All Operating Systems: The examples produces an error while running in a Python 2.5 environment. | minor modification]]). If you aren't sure what the software example for your device is called, check the software object listed in the [[Device List | Getting Started guide for your device]]. Now, open the example in the IDLE editor.
2. Navigate to Insert &rarr; Control &rarr; ActiveX.  


The only thing left to do is to run the examples! Click on Run &rarr; Run Module.
[[File:AdobeDirector Add ActiveX 1.PNG |link=|alt=Add ActiveX Control]]


[[File:Python IDLE Run.PNG|link=|alt=Run?]]
3. Select the ActiveX control that corresponds to your device. Select {{Code|OK}}.
 
Once you have the Python examples running, we have a [[#Follow the Examples|teaching]] section below to help you follow them.
 
====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 configure your environment to properly link the Phidget Python library. Please see the [[#Use Our Examples 2| Use Our Examples ]] section for instructions.
[[File:AdobeDirector Add ActiveX 2.PNG |link=|alt=Add ActiveX Control]]


Then, in your code, you will need to reference to the Phidget Python library.
4. A window will pop up listing the properties and methods of the ActiveX class. Select {{Code|OK}}.


<div class="source">
[[File:AdobeDirector Class ActiveX Properties.PNG |link=|alt=ActiveX Properties]]
<syntaxhighlight lang=python>
from Phidgets.PhidgetException import *
from Phidgets.Events.Events import *
</syntaxhighlight>
</div>


Then, you will also have to add a reference to your particular Phidget. For example, you would include the following line for a PhidgetInterfaceKit:
5. The ActiveX class will be added to your cast. Create an instance of it by dragging and dropping the cast member onto the stage.
<div class="source">
<syntaxhighlight lang=python>
from Phidgets.Devices.InterfaceKit import *
</syntaxhighlight>
</div>


Please see the [http://www.phidgets.com/downloads/examples/Python_2.1.8.20120131.zip examples] on how to add a reference to your particular Phidget.
[[File:AdobeDirector ActiveX Cast.PNG ‎|link=|alt=ActiveX Cast]]


The project now has access to the Phidget function calls and you are ready to begin coding.
The project now has access to the Phidget function calls and you are ready to begin coding.
Line 140: Line 77:
The same [[#Follow the Examples|teaching ]] section which describes the examples also has further resources for programming your Phidget.
The same [[#Follow the Examples|teaching ]] section which describes the examples also has further resources for programming your Phidget.


===Eclipse with PyDev===
==Follow 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.


====Use Our Examples====
Your main reference for writing Adobe Director code will be our Adobe Director API information, with syntax for all of our functions:


1. Please ensure that the Phidget Python Module is [[#Installing the Phidget Python Module | installed]] onto your system.
{{UsingAPhidgetInCodeGeneral|both of which are available in Adobe Director|[{{SERVER}}/documentation/COM_API_Manual.pdf COM API]}}


2. Next, download the [http://www.phidgets.com/downloads/examples/Python_2.1.8.20120131.zip examples] and unpack them into a folder.  While these examples were written in Python 3.0, they are also compatible with Python 2.5(with a [[#All Operating Systems: The examples produces an error while running in a Python 2.5 environment. | minor modification]]). If you aren't sure what the software example for your device is called, check the software object listed in the [[Device List | Getting Started guide for your device]]. You will need this example source code to be imported into your project later on.
===Example Flow===


3. Next, a new project will need to be created. Generate a new PyDev project with a descriptive name such as PhidgetTest.
{{ExamplePseudocode|In Adobe Director, you catch these '''event''' functions using their specific names as shown below in the Code Snippets section. The specific syntax for different events and which Phidgets you can catch which events for can be found in the [{{SERVER}}/documentation/COM_API_Manual.pdf COM API] manual.  Catching events by name hooks your event functions into the actual events when they occur. <br>
In the example code, some event functions are common to all Phidgets.  These are events such as '''OnAttach''' and '''OnDetach''', etc.<br><br>
Some event functions will be specific to each device, like when a tag is read on an RFID board, or when a sensor value changes on an Interface Kit.
|Creating a Phidget software object in Adobe Director is specific to the Phidget. For a Phidget Spatial, for example, this would involve creating a {{Code|Spatial}} ActiveX object, as shown in the [[#Write Your Own Code|Write Your Own Code]] section above.  The examples show working instances of how to do this, and how to use other API functions.<br><br>
The object provides device specific methods and properties which are available from the API for your specific Phidget.|
[{{SERVER}}/documentation/COM_API_Manual.pdf COM API]}}


[[File:Python PyDev New Project.PNG|link=|alt=New Project]]
===Code Snippets===


4. To import the example program into your project, right click the Project and select {{Code|Import}}.
Specific calls in Adobe Director will differ in syntax from those on the [[General Phidget Programming]] page, but the concepts stay the same.


[[File:Python PyDev Import File 1.PNG|link=|alt=Import File]]
It may help to have the [[General Phidget Programming]] page and this section open at the same time, because they parallel each other and you can refer to the Adobe Director syntax.  However, many additional concepts are covered on the General Phidget Programming page on a high level, such as using multiple Phidgets, handling errors, and different styles of programming.


5. On the next screen, select {{Code|File System}} and proceed to the next screen.
For example, if we were using a [{{SERVER}}/products.php?product_id=1018 Phidget Interface Kit] as our device, the general calls would look like this:


[[File:Python PyDev Import File 2.PNG|link=|alt=Import File]]
====Step One: Initialize and Open====


6. Browse to the directory where you extracted the examples into, and select the example you wish to open.
Your program can try to connect to the Phidget through a call to open. Open will continuously try to connect to a Phidget, based on the parameters given, even trying to reconnect if it gets disconnected. This means that simply calling open does not guarantee you can use the Phidget immediately.  Because we then have to also attach the Phidget within software after opening, in Adobe Director the Open step and the next step - [[#Step Two: Wait for Attachment (plugging in) of the Phidget|Attach]] - are often combined within one event trigger.


[[File:Python PyDev Import File 3.PNG|link=|alt=Import File]]
The different parameters and open calls can be used to open:
* The first Phidget of a type it can find,
* A Phidget based on a serial number, or even
* A Phidget across the network.  


7. The only thing left to do is to run the examples! Click on Run &rarr; Run.
The [{{SERVER}}/documentation/COM_API_Manual.pdf COM API] manual lists all of the available modes that open provides. One important thing to remember is that when working with Phidgets, a local connection will reserve the device until closed. This prevents any other instances from retrieving data from the Phidget, including other programs. The one connection per device limit does not apply when exclusively using the [[Phidget WebService]].


[[File:Python PyDev Run.PNG|link=|alt=Run?]]
====Step Two: Wait for Attachment (plugging in) of the Phidget====


Once you have the Python examples running, we have a [[#Follow the Examples|teaching]] section below to help you follow them.
We can account for a connection by using event driven programming and tracking the AttachEvents and DetachEvents, or by calling WaitForAttachment as we show here.


====Write Your Own Code====
WaitForAttachment will block indefinitely until a connection is made to the Phidget, or an optional timeout is exceeded. Here, the Phidget is opened and then attached when on clicking the Open button inside a mouseUp event:
<div class=source>
<syntaxhighlight lang=text>
on mouseUp me
    sprite(1).CallString("Open()")
    sprite(1).CallString("WaitForAttachment(3000)")
end
</syntaxhighlight>
</div>


When you are building a project from scratch, or adding Phidget function calls to an existing project, you'll need to configure your environment to properly link the Phidget Python library. Please see the [[#Use Our Examples 3 | Use Our Examples ]] section for instructions.
====Step Three: Do Things with the Phidget====


Then, in your code, you will need to include a reference to the Phidget Python library.
We recommend the use of event driven programming when working with Phidgets in Adobe Director. This allows the program to execute other tasks until the Phidget fires a new event. In Adobe Director, you can hook an event handler inside a script for the Phidget object by catching the event by name with the following code:


<div class="source">
<div class=source>
<syntaxhighlight lang=python>
<syntaxhighlight lang=text>
from Phidgets.PhidgetException import *
on OnSensorChange(Index, SensorValue) me
from Phidgets.Events.Events import *
    member("OutputField").text = string(Index) & ": " & string(SensorValue)
end
</syntaxhighlight>
</syntaxhighlight>
</div>
</div>
With this method, the code inside OnSensorChange will get executed every time the InterfaceKit reports a change on one of its analog inputs.  Please refer to the [{{SERVER}}/documentation/COM_API_Manual.pdf COM API] manual for a full list of events and their usage.


You will also have to add a reference to your particular Phidget. For example, you would include the following line for a PhidgetInterfaceKit:
Some values can be directly read and set on the Phidget, and inside polling loops used as an alternative to event driven programming. Simply use the CallString method for obtaining data such as SensorValue(Index) or OutputState(Index, OutputState) for Interface Kits. For example:
<div class="source">
<syntaxhighlight lang=python>
<div class=source>
from Phidgets.Devices.InterfaceKit import *
<syntaxhighlight lang=text>
sprite(1).CallString("OutputState(0,1)")
</syntaxhighlight>
</syntaxhighlight>
</div>
</div>


Please see the [http://www.phidgets.com/downloads/examples/Python_2.1.8.20120131.zip examples] on how to add a reference to your particular Phidget.
Other events for different Phidgets can be found in the device's [[:Category:UserGuide|user guide]], and in the [{{SERVER}}/documentation/COM_API_Manual.pdf COM API] manual.
 
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.
 
==Linux==
 
Python has support on Linux. 
 
The first step in using Python on Linux is to install the Phidget libraries. Compile and install them as explained on the main [[OS - Linux | Linux page]]. That Linux page also describes the different Phidget files, their installed locations, and their roles.
 
==Follow 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.
====Step Four: Close and Delete====


Next, comes our API information.  These resources outline the Python Phidget functions:
You can use {{Code|CallString("Close")}} at any time outside of the Phidget's own event handlers to close the connection.


{{UsingAPhidgetInCodeGeneral|both of which are available in Python|[http://www.phidgets.com/documentation/PythonDoc.zip Python API]}}
====Multiple Phidgets====


===Example Flow===
Multiple Phidgets of the same type can easily be run inside the same Adobe Director program. This requires another PhidgetInterfaceKit ActiveX object to be created and placed. The new object can then be set up, opened and used in the same process as the previous one. If the application needs to distinguish between the devices, open can be called with the serial number of a specific Phidget.
 
{{ExamplePseudocode|In Python, you can name these '''event''' functions whatever you like.  You will then pass them as function pointers to the Phidget library below in the Main Code section. This hooks them into the actual events when they occur. <br>
In the example code, the event functions common to all Phidgets are called things like '''AttachHandler()''' and '''DetachHandler()''', etc.<br><br>
Some event functions will be specific to each device, like when a tag is read on an RFID board, or when a sensor value changes on an Interface Kit.
Other functions are given in the examples to show you more detail on using your Phidget. For example, '''DeviceInitialize()''' will show what needs to be set up for your Phidget before using it.
|Creating a Phidget software object in Python is specific to the Phidget.  For a Phidget Spatial, for example, this would involve creating a {{Code|Spatial}} object.  The examples show how to do this and other API functions.<br><br>
The object provides device specific methods and properties which are available from the API for your specific Phidget.|
[http://www.phidgets.com/documentation/PythonDoc.zip Python API]}}


==Code Snippets==
The complete set of functions you have available for all Phidgets can be found in the [{{SERVER}}/documentation/COM_API_Manual.pdf COM API].


==Common Problems and Solutions/Workarounds==
==Common Problems and Solutions/Workarounds==


==={{ProblemSolution|Windows|The examples do not work}}===
===Windows users in The Netherlands===


Our examples are unsupported to all users in the country of Netherlands.
A number of users in the Netherlands have reported issues with running our example code.  It is possible this is an issue related to the Dutch language pack used for Windows however, we do not currently really know why.  As we aren't able to run a Dutch version of Windows here, it is difficult to debug.  If you would like to help us work through the example code that we provide and help us figure out why, please [[Contact Us]].

Latest revision as of 18:54, 6 June 2017

Adobe Director, developed by Adobe Systems is a tool used to build interactive and multimedia applications.

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 Adobe Director specifically.

Adobe Director is capable of using the complete Phidget API, including events. We also provide example code in Adobe Director for the PhidgetInterfaceKit devices.

Adobe Director can be developed with Windows..

You can compare Adobe Director with our other supported languages.

Quick Downloads

Just need the Adobe Director documentation, drivers, libraries, and examples? Here they are:

Documentation

Example Code

Libraries and Drivers

Getting started with Adobe Director

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

The only operating system we support with Adobe Director is Windows (2000/XP/Vista/7).

Windows (XP/Vista/7/8)

Description of Library Files

Adobe Director programs on Windows depend on the following:

  • phidget21.dll contains the actual Phidget library, which is used at run-time. By default, it is placed in C:\Windows\System32. The installers in the Quick Downloads section put this file into your system.
  • Phidget21COM.dll is the Component Object Model (COM) library and provides your project access to the Phidget ActiveX objects. This is part of our COM Library. If you installed the Phidget drivers, it will have automatically registered the ActiveX objects into your system. If you are manually installing this file, you must register it through command line by running: regsvr32 Phidget21COM.dll.

If you do not want to use our installer, you can download both files and manually install them where you want; refer to our Manual Installation Instructions.

Adobe Director 11.5

Use Our Examples

1. Download the examples and unpack them into a folder. These examples were written in Adobe Director 11.5.

2. The easiest way to confirm that your environment is set up properly will be to run the HelloWorld Adobe Director example. In the Adobe Director environment, open up the file named HelloWorld.dir.

3. To run the example, click on Control → Play.

Play

4. This program will detect for devices that are attached/detached on the computer. Go ahead, and attach or detach your devices! Here is an example output:

HelloWorld Output

After confirming that the HelloWorld example is working, you can proceed to run the example for your device. Currently, the only device we have example code for is the PhidgetInterfaceKit.

Once you have the Adobe Director examples running, we have a teaching section below to help you follow them.

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 configure your environment to properly link the Phidget ActiveX object.

1. Create a new movie.

2. Navigate to Insert → Control → ActiveX.

Add ActiveX Control

3. Select the ActiveX control that corresponds to your device. Select OK.

Add ActiveX Control

4. A window will pop up listing the properties and methods of the ActiveX class. Select OK.

ActiveX Properties

5. The ActiveX class will be added to your cast. Create an instance of it by dragging and dropping the cast member onto the stage.

ActiveX Cast

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

The same teaching section which describes the examples also has further resources for programming your Phidget.

Follow 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 Adobe Director code will be our Adobe Director API information, with syntax for all of our functions:

  • COM API (This is the complete set of functions you have available for all Phidgets)
  • Device Specific APIs - The one for your Phidget can be found in its user guide.

To learn the details behind opening, configuring, using, and closing your Phidget, try the General Phidget Programming page. That page also describes using the Phidget in an event-driven manner and in a traditional manner, both of which are available in Adobe Director.

Example Flow

The Hello World example has this general structure so you can follow along. We also have an in-depth general introduction to writing Phidget code (like open, read data, etc), as well as the COM API for specific syntax:

// ----- Event and Other Functions -----

Create any Language-Specific Functions (exception handling)

Create General Attach, Detach, and Error Handling Functions:

On attach: Print Hello Message
On detach: Print Goodbye Message

 

In Adobe Director, you catch these event functions using their specific names as shown below in the Code Snippets section. The specific syntax for different events and which Phidgets you can catch which events for can be found in the COM API manual. Catching events by name hooks your event functions into the actual events when they occur.
In the example code, some event functions are common to all Phidgets. These are events such as OnAttach and OnDetach, etc.

Some event functions will be specific to each device, like when a tag is read on an RFID board, or when a sensor value changes on an Interface Kit.

// ----- Main Code -----

Create Manager Software Object
Hook Event Functions created above to Device
Open Device

Wait for 'Enter' key character input
Handle on-going attach and detach events
Print Hello and Goodbye messages
Exit upon input

Close Device

Delete Device

 

Creating a Phidget software object in Adobe Director is specific to the Phidget. For a Phidget Spatial, for example, this would involve creating a Spatial ActiveX object, as shown in the Write Your Own Code section above. The examples show working instances of how to do this, and how to use other API functions.

The object provides device specific methods and properties which are available from the API for your specific Phidget.

Code Snippets

Specific calls in Adobe Director will differ in syntax from those on the General Phidget Programming page, but the concepts stay the same.

It may help to have the General Phidget Programming page and this section open at the same time, because they parallel each other and you can refer to the Adobe Director syntax. However, many additional concepts are covered on the General Phidget Programming page on a high level, such as using multiple Phidgets, handling errors, and different styles of programming.

For example, if we were using a Phidget Interface Kit as our device, the general calls would look like this:

Step One: Initialize and Open

Your program can try to connect to the Phidget through a call to open. Open will continuously try to connect to a Phidget, based on the parameters given, even trying to reconnect if it gets disconnected. This means that simply calling open does not guarantee you can use the Phidget immediately. Because we then have to also attach the Phidget within software after opening, in Adobe Director the Open step and the next step - Attach - are often combined within one event trigger.

The different parameters and open calls can be used to open:

  • The first Phidget of a type it can find,
  • A Phidget based on a serial number, or even
  • A Phidget across the network.

The COM API manual lists all of the available modes that open provides. One important thing to remember is that when working with Phidgets, a local connection will reserve the device until closed. This prevents any other instances from retrieving data from the Phidget, including other programs. The one connection per device limit does not apply when exclusively using the Phidget WebService.

Step Two: Wait for Attachment (plugging in) of the Phidget

We can account for a connection by using event driven programming and tracking the AttachEvents and DetachEvents, or by calling WaitForAttachment as we show here.

WaitForAttachment will block indefinitely until a connection is made to the Phidget, or an optional timeout is exceeded. Here, the Phidget is opened and then attached when on clicking the Open button inside a mouseUp event:

on mouseUp me
    sprite(1).CallString("Open()")
    sprite(1).CallString("WaitForAttachment(3000)")
end

Step Three: Do Things with the Phidget

We recommend the use of event driven programming when working with Phidgets in Adobe Director. This allows the program to execute other tasks until the Phidget fires a new event. In Adobe Director, you can hook an event handler inside a script for the Phidget object by catching the event by name with the following code:

on OnSensorChange(Index, SensorValue) me
    member("OutputField").text = string(Index) & ": " & string(SensorValue)
end

With this method, the code inside OnSensorChange will get executed every time the InterfaceKit reports a change on one of its analog inputs. Please refer to the COM API manual for a full list of events and their usage.

Some values can be directly read and set on the Phidget, and inside polling loops used as an alternative to event driven programming. Simply use the CallString method for obtaining data such as SensorValue(Index) or OutputState(Index, OutputState) for Interface Kits. For example:

sprite(1).CallString("OutputState(0,1)")

Other events for different Phidgets can be found in the device's user guide, and in the COM API manual.

Step Four: Close and Delete

You can use CallString("Close") at any time outside of the Phidget's own event handlers to close the connection.

Multiple Phidgets

Multiple Phidgets of the same type can easily be run inside the same Adobe Director program. This requires another PhidgetInterfaceKit ActiveX object to be created and placed. The new object can then be set up, opened and used in the same process as the previous one. If the application needs to distinguish between the devices, open can be called with the serial number of a specific Phidget.

The complete set of functions you have available for all Phidgets can be found in the COM API.

Common Problems and Solutions/Workarounds

Windows users in The Netherlands

A number of users in the Netherlands have reported issues with running our example code. It is possible this is an issue related to the Dutch language pack used for Windows however, we do not currently really know why. As we aren't able to run a Dutch version of Windows here, it is difficult to debug. If you would like to help us work through the example code that we provide and help us figure out why, please Contact Us.