slide1 l.
Skip this Video
Loading SlideShow in 5 Seconds..
Microsoft Research Faculty Summit 2003 PowerPoint Presentation
Download Presentation
Microsoft Research Faculty Summit 2003

Loading in 2 Seconds...

play fullscreen
1 / 24

Microsoft Research Faculty Summit 2003 - PowerPoint PPT Presentation

  • Uploaded on

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 Pebbles Project.

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
Download Presentation

PowerPoint Slideshow about 'Microsoft Research Faculty Summit 2003' - devon

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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
microsoft research faculty summit 2003

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

pebbles project
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
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
recent project personal universal controller




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
Automatic Generation of UIs


  • All interfaces consistent for the user
    • With conventions of handheld
    • Even from multiple manufacturers
  • Multiple modalities (GUI + Speech UI)
development history
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
  • Introduction
  • PUC Implementation
  • Advantages of .NET & .NET CF
  • Limitations of .NET CF
  • Short Demo
  • Resources
puc implementation
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 System Architecture

PUC Devices

(automatic user interface generation)


(media players, cameras, etc.)


(publishes description +appliance state + controls appliance)

XML-Based Protocol

(two-way communicationof specification and state)

XML-Based Protocol

(two-way communicationof specification and state)


(802.11, Bluetooth, RF-Lite, etc.)


(802.11, Bluetooth, RF-Lite, etc.)

Third-party components

.NET CF components

Multi-platform components


puc device architecture

Concrete Interface

glue to .NET CF Controls






XML Parsers


TCP/IP Sockets

IPEndPoint end = new IPEndPoint(_ipAddress,_port);


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: This is some title


Asdfasd: Playing

Asdfasd: a.efas

advantages of net
Advantages of .NET
  • Managed Environment
    • Garbage collection
  • Modern Programming Languages
    • Strong types
  • Consistent, Well-Designed API
    • Object-oriented
  • Better documentation
advantages of net cf
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 cf code portability
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
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
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
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
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 continued smartphone
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.

summary advantages and limitations
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

  • Usenet Groups


  • 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


Brad A. Myers & Jeffrey Nichols

Carnegie Mellon University

limitations of net cf continued24
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.