
2c336b58ba1ff890d524a22ca0265fe8.ppt
- Количество слайдов: 49
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 Phidgets | IAT 351 | 04. 03. 2008
traditional physical UI : examples Walking pad (DIUF) Phidgets | IAT 351 | 04. 03. 2008
traditional physical UI : examples Lego Mindstorms Phidgets | IAT 351 | 04. 03. 2008
traditional physical UI : examples Smart. Home Phidgets | IAT 351 | 04. 03. 2008
Motivation • Pertaining to ubiquitous computing (ubicomp), two areas are relevant: Context-aware computing Tangible user interfaces Phidgets | IAT 351 | 04. 03. 2008
What remains hard? • Sensing… • Actuation… • We’ll get back to how Phidgets address this Phidgets | IAT 351 | 04. 03. 2008
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 Phidgets | IAT 351 | 04. 03. 2008
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? Phidgets | IAT 351 | 04. 03. 2008
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. Phidgets | IAT 351 | 04. 03. 2008
Simple Example: In/Out Board Phidgets | IAT 351 | 04. 03. 2008
Simple Example: In/Out Board Location Widget Phidgets | IAT 351 | 04. 03. 2008 Location Widget Face Recognition Smart Card Reader ID to Name Interpreter
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 Phidgets | IAT 351 | 04. 03. 2008
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 Phidgets | IAT 351 | 04. 03. 2008
Lumi. Touch • 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 Phidgets | IAT 351 | 04. 03. 2008
Tangible Video Browser • Tokens are used to: Act as container for videos Select a video Navigate within the video Phidgets | IAT 351 | 04. 03. 2008
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. Phidgets | IAT 351 | 04. 03. 2008
Why is this hard? • Steps • Acquisition Representation Interpretation Storage Delivery Reaction Most of these steps repeated in all development. Phidgets | IAT 351 | 04. 03. 2008
Related Work • Tools for working with physical input/output devices • • • i. RX Board Digital I/O boards Tini boards Phidgets | IAT 351 | 04. 03. 2008
traditional physical UI : problems 1. 2. 3. 4. 5. 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 Phidgets | IAT 351 | 04. 03. 2008
Goals • Simple so developers concentrate on overall use, modification, and recombination • Easy for average programmer Phidgets | IAT 351 | 04. 03. 2008
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. Phidgets | IAT 351 | 04. 03. 2008
phidgets : definition • widget (1931) small mechanical device (today) ‘windows gadget’ • phidget (aka phydget) ‘physical widget’ Phidgets | IAT 351 | 04. 03. 2008
phidgets : definition Phidgets™, or physical widgets, are building blocks that help a developer construct physical user interfaces. Phidgets | IAT 351 | 04. 03. 2008
phidgets : architecture Phidgets | IAT 351 | 04. 03. 2008
phidgets : architecture API Simulation Device manager Phidgets | IAT 351 | 04. 03. 2008
phidgets : API actuator sensor Phidget-specific properties, e. g. Num. Motors Phidget-specific events, e. g. On. Tag Device. Type Is. Attached Serial. Number Int Count Phidget[] Item On. Attach() On. Detach() On. Error() Phidgets | IAT 351 | 04. 03. 2008 Specific phidget Generic phidget Phidgets manager
phidgets : java API Phidgets | IAT 351 | 04. 03. 2008
phidgets : java API Phidgets | IAT 351 | 04. 03. 2008
phidgets : programming (output) opens Phidget COM Object creates sets Application Phidgets | IAT 351 | 04. 03. 2008 sets Device
phidgets : programming (input) opens Phidget COM Object Device starts creates fire events reads Listener Application Phidgets | IAT 351 | 04. 03. 2008
Handling the Phidget • • 3 important basic events ATTACH (USB connected) On. Attach(), attached() DETACH (USB disconnected) On. Detach(), detached() ERROR (help!) On. Error(), error() • Standard Java approach of listeners and adapters • Specific events for each type of device E. g. rfid. On. Tag() for detecting an RFID tag in range Phidgets | IAT 351 | 04. 03. 2008
phidgets : programming Extend adapter Implement On. Event methods Create OS Object Attach Listener Open connection to device Start listening Phidgets | IAT 351 | 04. 03. 2008
public class Open. IFKit. Example { public static final void main(String args[]) throws Exception { Interface. Kit. Phidget ik; System. out. println(Phidget. Library. Version()); ik = new Interface. Kit. Phidget(); ik. add. Attach. Listener(new Attach. Listener() { public void attached(Attach. Event ae) { System. out. println("attachment of " + ae); } }); Phidgets | IAT 351 | 04. 03. 2008 ik. add. Detach. Listener(new Detach. Listener() { Basic listeners
ik. add. Input. Change. Listener(new Input. Change. Listener() { public void input. Changed(Input. Change. Event oe) { System. out. println(oe); } }); ik. add. Output. Change. Listener(new Output. Change. Listener() { public void output. Changed(Output. Change. Event oe) { System. out. println(oe); } }); ik. add. Sensor. Change. Listener(new Sensor. Change. Listener() { public void sensor. Changed(Sensor. Change. Event se) { System. out. println(se); } }); Phidgets | IAT 351 | 04. 03. 2008 IK listeners
ik. open. Any(); System. out. println("waiting for Interface. Kit attachment. . . "); ik. wait. For. Attachment(); System. out. println(ik. get. Device. Name()); Thread. sleep(500); ik. get. Output. Count() Ik. get. Sensor. Count() ik. get. Output. State(i); ik. set. Output. State(i, <true/false>); Ik. get. Sensor. Raw. Value(i) Ik. get. Sensor. Value(i) Phidgets | IAT 351 | 04. 03. 2008 Waits until a device is plugged in
Phidgets | IAT 351 | 04. 03. 2008
Phidgets Requirement • Connection manager • ID • Simulation mode Phidgets | IAT 351 | 04. 03. 2008
Phidget Manager • • on. Attach() on. Detach() • • Count Item Phidgets | IAT 351 | 04. 03. 2008 • • • Device. Type is. Attached() Serial. Number
Phidget Servo • Motor. Position • Num. Motors • on. Position. Changed() Phidgets | IAT 351 | 04. 03. 2008
Attaching the interface kit // create the interface kit object Interface. Kit. Phidget ik = new Interface. Kit. Phidget(); // look for an attachment ik. open. Any(); // don’t continue until an attachment is found ik. wait. For. Attachment(); Phidgets | IAT 351 | 04. 03. 2008
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. get. Input. State(3); Phidgets | IAT 351 | 04. 03. 2008
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. get. Sensor. Value(0); Phidgets | IAT 351 | 04. 03. 2008
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. set. Output. State(2, true); Phidgets | IAT 351 | 04. 03. 2008
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 Phidgets | IAT 351 | 04. 03. 2008
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); Phidgets | IAT 351 | 04. 03. 2008
Drawbacks • Need PC • Not mobile • Not easy to deploy Phidgets | IAT 351 | 04. 03. 2008
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. Phidgets | IAT 351 | 04. 03. 2008
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/Java. Doc. 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 Phidgets | IAT 351 | 04. 03. 2008
2c336b58ba1ff890d524a22ca0265fe8.ppt