Thursday, November 03, 2011

PAARC (Phone as a Remote Control) - A library for WP7 & Desktop that lets the two easily connect... (Think "Writing a WP7 app that connects to and "controls" a Desktop app...)

Mister Goodcat -Announcing: Phone as a Remote Control

"Shortly after I got my Windows Phone I had the idea of creating an app that lets me remotely control my desktop computer. The reason for that was that lazy me needed to use a clumsy and error-prone full-size wireless keyboard and mouse when I wanted to surf the web from my couch, using the small media PC connected to my TV set. Wouldn't it be nicer to use the much more handy mobile phone as input device? Unfortunately the RTM version of Windows Phone was missing some networking features for that – using web services or http wasn't what I was looking for. The Mango release changed that, because TCP/UDP socket support was added to the platform.

After I started working on the app I quickly realized that it would be really cool to not just have this feature for my own purposes, but to create a generic library which could be integrated into your own applications, both on the phone and desktop side. That was the moment when I decided to create PAARC ("Phone as a Remote Control") – sorry for the boring name, I couldn't come up with something better and more exciting :).


PAARC has the following features:

  • Uses TCP and UDP sockets for maximum performance and responsiveness (watch the demo video to see for yourself), but handles all the networking and threading stuff for you behind the scenes.
  • Requires minimum technical knowledge from your end-users by e.g. using a server discovery mechanism – no cryptic networking terms to handle, "one-click" connect feature.
  • Supports raw (multi-)touch input, the built-in phone gestures like taps, flicks, pinching and dragging, acquisition of all sensor data (accelerometer, compass, gyroscope, combined motion) and text input.
  • Comes with a reference WP7 client with support for tombstoning/deactivation and all supported data types, so you don't have to create a separate app to get started (but you can do that, of course, or integrate the client-side library into your already existing phone app).
  • Allows full configuration and control from the host application (your .NET desktop app).
  • Has built-in remote tracing features to track down problems.
  • Comes with a few demo applications you can learn from and is fully documented.

Possible scenarios for a library like this are for example using phones as controllers for desktop games (in particular using the sensors), creating more natural ways of user interaction for your applications, creating remote control interfaces for existing applications and more. One of the included samples is the PC controlling application I mentioned in the beginning that converts touch, sensor and text input into operating system commands to control the mouse cursor, buttons and to emulate keystrokes – to allow your PC to be completely controlled from the couch, using your phone :).

A first version of the library is now live and available on CodePlex. ..."

Codeplex - Phone as a Remote Control

"PAARC is a library that enables Windows Phone 7 devices to be used as remote control or input devices for any .NET desktop application. Supports raw (multi-)touch input, gestures (tap, double-tap, hold, pinch, drag, flick), sensors (accelerometer, compass, gyroscope, combined motion) and text input using the SIP. Uses TCP/UDP sockets for maximum performance and responsiveness, and has a server discovery mechanism (multicast) to auto-connect to hosts on the same network. The library comes as multiple components (class libraries) that can be integrated in your own projects both on the phone (Silverlight/XNA) and desktop (.NET), and it has a reference WP7 client you can use to start without creating a separate Windows Phone app first.


Phone as a Remote Control - Documentation


At the moment, there are some phone devices that show an odd behavior with TCP/UDP sockets after being updated to Mango. This is not a bug in the library, but an issue with the phone's firmware. In particular, both the HTC Mozart and HD7 are confirmed to be among the problematic models. A fix for the Samsung Omnia 7 was released a while ago (firmware 2424.11.8.5 or higher). More information and a detailed analysis of the problem can be found here.


The paarc library is a project aimed at developers that want to use a Windows Phone as input device for any .NET application running on a remote/desktop computer. It consists of different included components ranging from the core library, a reference implementation on the phone and several samples on the PC side (more on all this below). The library doesn't make any assumptions about the remote .NET application per se, which allows you to connect a phone to any kind of desktop application or game, for example to use it as sensor, as touch input device, game controller, remote keyboard, or whatever else you intend it for.
For a quick live demo of the library in action with some basic explanations, take a look at this 7-minute video:



This is one of those projects that makes you brain explode with ideas on how you can use it...

(cough... I wouldn't be surprised to see this show up the Coding4Fun blog in the near future and even possibly a future This Week on Channel 9... ;)

No comments: