1 / 49

Phidgets™ programming framework

Phidgets™ programming framework. IAT 351 Week 8 Lecture/Lab 1 04.03.2008. summary :. traditional physical UI examples problems phidgets goals definition architecture API java API programming applications references bibliography programming resources.

Download Presentation

Phidgets™ programming framework

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Phidgets™ programming framework IAT 351 Week 8 Lecture/Lab 1 04.03.2008

  2. summary : • traditional physical UI • examples • problems • phidgets • goals • definition • architecture • API • java API • programming • applications • references • bibliography • programming resources

  3. traditional physical UI :examples Walking pad (DIUF)

  4. traditional physical UI :examples Lego Mindstorms

  5. traditional physical UI :examples SmartHome

  6. Motivation • Pertaining to ubiquitous computing (ubicomp), two areas are relevant: • Context-aware computing • Tangible user interfaces

  7. What remains hard? • Sensing… • Actuation… • We’ll get back to how Phidgets address this

  8. What is Context? • Any information that can be used to characterize the situation of an entity • Who, what, where, when • Why is it important? • information, usually implicit, that applications do not have access to • It’s input that you don’t get in a GUI

  9. How to Use Context • To present relevant information to someone • Mobile tour guide • To perform an action automatically • Print to nearest printer • To show an action that use can choose • Want to phone the number in this email?

  10. Case Study: tour guides • Very popular theme • Location is an easy piece of context • G. Abowd et al. Cyberguide: A mobile context-aware tour guide. Balzer/ACM Wireless Networks, Vol. 3(5), 1997, pp. 421-433.

  11. Simple Example: In/Out Board

  12. In/Out Board Location Widget Location Widget ID to Name Interpreter Face Recognition Smart Card Reader Simple Example: In/Out Board

  13. Tangible User Interfaces • Hiroshi Ishii (MIT) • Tangible Bits • physical form to digital information • Tangible User Interfaces • physical objects, surfaces, and spaces that act as tangible embodiments of digital information

  14. Triangles • Pieces are connected together to trigger digital events • influence the progress of a non-linear story • organize media elements in order to create their own story space

  15. LumiTouch • Two interactive picture frames • User’s touching of a local frame translates to a glow on remote frame • She’s thinking of him • He’s thinking of her

  16. Tangible Video Browser • Tokens are used to: • Act as container for videos • Select a video • Navigate within the video

  17. What remains hard? • Well…everything according to the paper • While an exciting new area, everyday programmers still face considerable hurdles if they wish to create even simple physical user interfaces. Perhaps the biggest--but we believe easily solved---obstacle is the sheer difficulty of developing and combining physical devices and interfacing them to conventional programming languages.

  18. Why is this hard? • Steps • Acquisition • Representation • Interpretation • Storage • Delivery • Reaction • Most of these steps repeated in all development.

  19. Related Work • Tools for working with physical input/output devices • iRX Board • Digital I/O boards • Tini boards

  20. traditional physical UI :problems • Electronics (Difficult to write/debug w/o actual devices) • missing API • unsuited API (wrong abstraction level) • commercial target (oriented to different markets) • lack of simulation capabilities • Hard to build

  21. Goals • Simple so developers concentrate on overall use, modification, and recombination • Easy for average programmer

  22. phidgets :goals • simple devices • easy to program … just as widgets make GUIs easy to develop, so could phidgets make the new generation of physical user interfaces easy to develop.

  23. phidgets :definition • widget • (1931) small mechanical device • (today) ‘windows gadget’ • phidget (aka phydget) • ‘physical widget’

  24. phidgets :definition Phidgets™, or physical widgets, are building blocks that help a developer construct physical user interfaces.

  25. phidgets :architecture Phidget

  26. phidgets :architecture API Simulation Device Device manager

  27. phidgets :API actuator Phidget-specific properties, e.g. NumMotors Phidget-specific events, e.g. OnTag Specific phidget sensor DeviceType IsAttached SerialNumber Generic phidget Int Count Phidget[] Item OnAttach() OnDetach() OnError() Phidgets manager

  28. phidgets :java API

  29. phidgets :java API

  30. phidgets :programming (output) opens Phidget COM Object Device sets creates sets Application

  31. phidgets :programming (input) opens Phidget COM Object Device starts creates fire events reads Listener Application

  32. Handling the Phidget • 3 important basic events • ATTACH (USB connected) OnAttach(),attached() • DETACH (USB disconnected) OnDetach(),detached() • ERROR (help!) OnError(), error() • Standard Java approach of listeners and adapters • Specific events for each type of device • E.g. rfid.OnTag() for detecting an RFID tag in range

  33. phidgets :programming Extend adapter Implement OnEvent methods Create OS Object Attach Listener Open connection to device Start listening

  34. Basic listeners public class OpenIFKitExample { public static final void main(String args[]) throws Exception { InterfaceKitPhidget ik; System.out.println(Phidget.getLibraryVersion()); ik = new InterfaceKitPhidget(); ik.addAttachListener(new AttachListener() { public void attached(AttachEvent ae) { System.out.println("attachment of " + ae); } }); ik.addDetachListener(new DetachListener() { public void detached(DetachEvent ae) { System.out.println("detachment of " + ae); } }); ik.addErrorListener(new ErrorListener() { public void error(ErrorEvent ee) { System.out.println("error event for " + ee); } });

  35. IK listeners ik.addInputChangeListener(new InputChangeListener() { publicvoid inputChanged(InputChangeEvent oe) { System.out.println(oe); } }); ik.addOutputChangeListener(new OutputChangeListener() { publicvoid outputChanged(OutputChangeEvent oe) { System.out.println(oe); } }); ik.addSensorChangeListener(new SensorChangeListener() { publicvoid sensorChanged(SensorChangeEvent se) { System.out.println(se); } });

  36. Waits until a device is plugged in ik.openAny(); System.out.println("waiting for InterfaceKit attachment..."); ik.waitForAttachment(); System.out.println(ik.getDeviceName()); Thread.sleep(500); ik.getOutputCount() Ik.getSensorCount() ik.getOutputState(i); ik.setOutputState(i,<true/false>); Ik.getSensorRawValue(i) Ik.getSensorValue(i)

  37. Phidgets Requirement • Connection manager • ID • Simulation mode

  38. onAttach() onDetach() Count Item DeviceType isAttached() SerialNumber Phidget Manager

  39. Phidget Servo • MotorPosition • NumMotors • onPositionChanged()

  40. Attaching the interface kit // create the interface kit object InterfaceKitPhidget ik = new InterfaceKitPhidget(); // look for an attachment ik.openAny(); // don’t continue until an attachment is found ik.waitForAttachment();

  41. Digital Input • Use the wires to hook one of the switches up to a digital input and one of the grounds (on either end of the row) • The parameter is the index of the input • The result is a boolean (true for on, false for off) // read the value of input 3 ik.getInputState(3);

  42. Analog Input • Parameter is index of the device • The result is a value between 0 and around 1000 (I’m guessing the max is 1024) // get the value of the first analog device ik.getSensorValue(0);

  43. Digital Output • Boolean values are used to set the output • Each output has an index: 0 - 7 • The two slots at either end are grounds // sets output 2 to “high” ik.setOutputState(2, true);

  44. Ugly Java Stuff: Exceptions • Almost everything in the phidget package throws exceptions • Solution #1: add “throws Exception” at the end of every method signature, including the main method • Solution #2: wrap phidget calls in try/catch blocks

  45. Pausing in Java • If you want to pause execution of your program • The parameter is time in milliseconds // pause for 2 seconds Thread.sleep(2000);

  46. Drawbacks • Need PC • Not mobile • Not easy to deploy

  47. references :bibliography • Greenberg S. and Fitchet C., Phidgets : Easy developement of physical interfaces through physical widgets. Proceedings of the ACM UIST 2001 Symposium. • Greenberg S. and Boyle M., Customizable physical interfaces for interacting with conventional applications. Proceedings of the ACM UIST 2002 Symposium. • www.phidgets.com, www.phidgetsusa.com • www.wikipedia.org (phidget, widget) • www.smarthome.com, www.legomindstorms.com • Laroussi Bouguila, Evequoz Florian, Michèle Courant, Béat Hirsbrunner. Active Walking Interface for Human-Scale Virtual Environment. HCII’05.

  48. references:programming resources • documentation on www.phidgets.com : • C_API_Manual : basic architecture • http://phidgets.com/documentation/C_API_Manual.pdf • COM_API_Manual : object model (VB) • http://phidgets.com/documentation/COM_API_Manual.pdf • Javadoc : java API, quite similar to COM • http://phidgets.com/documentation/JavaDoc.zip • For each particular phidget see its « hardware description » : • Section labelled « Phidgets » on www.phidgets.com >> Documentation • software introduction and tutorials : • www.phidgets.com >> Documentation • http://www.phidgetsusa.com/tutorials/tutorialhome.asp • code examples : • www.phidgets.com >> Download >> Beta >> Examples.zip • www.phidgets.com >> Project / Examples

More Related