240 likes | 385 Views
Microsoft Research Faculty Summit 2003. Brad A. Myers & Jeffrey Nichols The Personal Universal Controller and .NET CF Pebbles Research Project Human Computer Interaction Institute Carnegie Mellon University http://www.pebbles.hcii.cmu.edu. Pebbles Project.
E N D
Microsoft Research Faculty Summit 2003 Brad A. Myers & Jeffrey Nichols The Personal Universal Controller and .NET CF Pebbles Research Project Human Computer Interaction Institute Carnegie Mellon University http://www.pebbles.hcii.cmu.edu
Pebbles Project • Seen in the plenary demo yesterday! • Use of multiple devicesat the same time • Pocket PC and desktop PC • Mobile Phone and “Smart Home” • Multiple handhelds in a meeting • Pocket PC and appliances • Multiple users with their devices • Single user with multiple devices
Early Pebbles Work • For business meetings: • For group work • How laser pointers can be integrated • To augment desktop applications • For individuals • For classrooms • To make lectures more interactive • For military command posts • To facilitate communication and collaboration
Feedback Specifications Control Recent Project:Personal Universal Controller • Using handhelds with appliances to improve the user interface • Key Features • User interface-independent appliance specification • Automatic generation of GUI and speech interfaces
Automatic Generation of UIs Benefits • All interfaces consistent for the user • With conventions of handheld • Even from multiple manufacturers • Multiple modalities (GUI + Speech UI)
Development History • Visual C++ 5.0 Extensions for WinCE • eMbedded Visual C++ • Early Pebbles Applications • eMbedded Visual Basic 3.0 • Early tests of Personal Universal Controller (PUC) concept • PersonalJava 1.1 • Initial PUC implementation • .NET Compact Framework • Current PUC implementation
Overview • Introduction • PUC Implementation • Advantages of .NET & .NET CF • Limitations of .NET CF • Short Demo • Resources
PUC Implementation • Implemented three interface generators • PocketPC • Desktop • Smartphone • Implementation uses a large part of the .NET Compact Framework • UI Toolkit • Graphics • Networking & I/O • XML Parsing
PUC System Architecture PUC Devices (automatic user interface generation) Appliances (media players, cameras, etc.) Adaptors (publishes description +appliance state + controls appliance) XML-Based Protocol (two-way communicationof specification and state) XML-Based Protocol (two-way communicationof specification and state) Communication (802.11, Bluetooth, RF-Lite, etc.) Communication (802.11, Bluetooth, RF-Lite, etc.) Third-party components .NET CF components Multi-platform components Legend:
Concrete Interface glue to .NET CF Controls <message> <state-change-notification> <state>PlayMode</state> ... Protocol XML Parsers Network TCP/IP Sockets IPEndPoint end = new IPEndPoint(_ipAddress,_port); _socket.Connect(end); int len = _socket.Receive(num,4,SocketFlags.None); PUC Device Architecture Model Analysis &Rule-Based Design analysis of models (appliance & device), rule-based design of abstract interface,choose concrete controls & layout Asdfasd: Asdfasd: This is some title Mute Asdfasd: Playing Asdfasd: a.efas
Advantages of .NET • Managed Environment • Garbage collection • Modern Programming Languages • Strong types • Consistent, Well-Designed API • Object-oriented • Better documentation
Advantages of .NET CF • For mobile application development • Compatible with normal .NET Framework • Can develop for handheld and desktop almost simultaneously • .NET CF being ported to multiple handheld platforms • PocketPC, Smartphone 2003, WinCE 4.0? • Good performance on handhelds
Advantages of .NET CFCode Portability Portablility makes re-use very easy • 90% from PocketPC to TabletPC* • 60% from PocketPC to Smartphone* • Different input model on Smartphone requires different generator rules and several new widgets * These numbers are estimates from development experience
Advantages of .NET CF Versus Java • Solid, robust implementation on handhelds • Consistent programming interface across mobile platforms • Java Micro Edition uses different APIs for Graphics and the UI toolkit from standard Java • More features in the UI toolkit • More controls (vs. AWT)
Limitations Disclaimer I am not a Microsoft developer! So, these limitations may have solutions I am not aware of: • I did not find the solutions • They are fixed in more recent versions of the Compact Framework
Limitations of .NET CF Compared to normal .NET Framework, CF has: • Fewer controls • Fewer features in each control • Can sub-class built-in controls, but… • No ability to owner draw • No ability to handle low-level events • Must sub-class base Control class to make custom controls General Gripe: Controls do not know their own preferred or minimum size.
Limitations of .NET CF continued Available CF controls are mostly adequate • Some custom controls needed • ImageButton • Time Picker • Scrolling Panel (Panels don’t have Auto Scroll) • Smartphone List Control • Smartphone Scrolling Panel
Limitations of .NET CF continuedSmartphone Still early in the design process • Navigation on screen based on Z-order and enabledness of controls. • Panels don’t automatically scroll, as required by interface. • Back button can only be handled through key-press events (which can’t always be caught, and can’t be fully worked around) • Scrollbars do not accept user input(we worked around this) Not many people working with phone Few resources when you have problems.
SummaryAdvantages and Limitations Like any new set of APIs, there are bugs Overall, the good outweighs the bad • Rapid prototyping like Visual Basic • Power of modern language in C# • Easily able to share code across platforms (PocketPC, Desktop & Smartphone) • More than adequate performance on handhelds • Little need to worry about memory or performance constraints
PUC Implementation Jeffrey Nichols Human Computer Interaction Institute Carnegie Mellon University
Resources • Usenet Groups microsoft.public.dotnet.framework.compactframework • www.opennetcf.org • Books from Microsoft Press .NET Compact Framework Core Reference* Visual C# .NET Step-By-Step Microsoft Visual C# .NET Language Reference • Developer Labs (?) Thanks Microsoft! * Have not looked at this book.
PUC and the .NET CF thanks! Brad A. Myers & Jeffrey Nichols Carnegie Mellon University jeffreyn@cs.cmu.edu http://www.pebbles.hcii.cmu.edu/puc/
Limitations of .NET CF continued Modifying any property of the UI from outside the UI thread causes problems. • Example: Network thread receiving messages wants to set the value of a scrollbar • Application crashes 99% of the time • Control.BeginInvoke method not implemented (yet?) • Must work-around by using Timers and an event queue.