WPF Bluetooth data transfer with 32feet.NET


Today's hardware Friday post is really hardware'ish. I mean building a WPF that communicates to other devices via Bluetooth is a "hardware" post, right?

Sara Silva, who's project we just highlighted last week, More Modern UI for WPF examples and samples, is back, this time, well, showing us how to wire up our WPF app's to Bluetooth. She using the cool project 32feet.NET (which we covered a couple years ago, 32feet.NET, Bluetooth and .Net Gadgeteer).

What's great about her post is that she uses the Modern UI WPF work she's done and MVVM...

How to send data through bluetooth in a WPF application using 32feet.Net


This article has the goal to show a solution for send data between devices using a WPF application and the library 32feet.Net.

The solution will implement the MVVM pattern and will use the MVVMLight Toolkit.


Bluetooth is an industry-standard protocol that enables wireless connectivity for computers, handheld devices, mobile phones, and other devices.

Bluetooth is designed for use by C/C++ programmers. Some Bluetooth features are available with Windows Sockets. Familiarity with Microsoft Windows networking and Windows Sockets programming is required. The article Bluetooth Programming with Windows Sockets, describes how to use Windows Sockets functions and structures to program a Bluetooth application and provide the Bluetooth connection sample. But in a first attempt it not looks so nice, when our goal is to create a WPF application.

In Codeplex, there is a project called 32feet.NET. This project is a shared-source project to make personal area networking technologies such as Bluetooth, Infrared (IrDA) and more, easily accessible from .NET code. Supports desktop, mobile or embedded systems.

32feet.NET is available on Nuget, and for desktop apps the reference is this 32feet.NET 3.5.0 Nuget Package. Which version we will use in the sample we will create.


The WPF Application will have two “modes”: Sender and Receiver. Where the “Sender” has the responsibility to send messages and the “Receiver” will get the messages sent by “Sender”.

Let’s start!

Creating the project

First create the WPF application in Visual Studio


The Model

The model is defined by the Device class that represent the structure for the device around us. The implementation is


The Services

The services in the application will define the features for the “Sender” and for the “Receiver”. These classes will be injected to the view model using the ServiceLocator, and the setup is defined in the ViewModelLocator constructor.

For “Sender” and “Receiver” are connected each other, we need to define a Guid that is set to the ServiceClassId and it is the key for the communication. When “Sender” send a message using the ServiceClassID X only the “Receiver” that know the ServiceClassID X will get the data, any other “Receiver” that know only the ServiceClassID Y, for exemple, will not receive the data.


The ViewModel

We will define the following view models: ReceiverViewModel, SenderViewModel and MainViewModel that will be binding to the DataContext in ReceiverView, SenderView and MainWindow respectively.


The UI

The MainWindow will be the start point for the application and will contains two user controls: ReceiverView and SenderView that will be showed if the user want to be a “Sender” or a “Receiver”.


The ViewModelLocator

The ViewModelLocator will be a static resource for the application and is defined in App.xaml, as following


Running the application

For test the application we need two devices, where in the first device we will run as “Sender” and in the second device we will run as ��Receiver”.





In conclusion, we can conclude the 32feet.Net is a great library for get all devices around with bluetooth on and for send data through bluetooth. The library has a great documentation but could have more samples that we could run for test the features provided.

Another point that the developer should be aware is the fact the project isn´t updated since 2012 but everyone can use the source code if needed, for fix any issue.

Source Code

The complete source code can be found in Bluetooth Sample using 32feet.Net

[Make sure you click through as there's a bunch of great stuff in her post that's not covered here]

The Discussion

Conversation locked

This conversation has been locked by the site admins. No new comments can be made.