Neste post veremos como detectar dispostivos bluetooth através do C# utilizando um projeto WPF do Visual Studio 2008.
Criarei aqui um projeto WPF no Visual Studio 2008 onde será possível detectar dispositivos bluetooth.
Primeiro você deve baixar o arquivo que está no link abaixo:
Após baixar e instalar o aplicativo acima, você deve criar seu projeto e assim adicionar como referência:
Na aba “.NET”, escolha “InTheHand.Net.Personal”.
Crie uma classe chamada Dispositivo, com o seguinte código.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using InTheHand.Net.Sockets;
namespace BluetoothClient
{
public class Dispositivo
{
public string NomeDoDispositivo { get; set; }
public uint Sap { get; set; }
public Dispositivo(BluetoothDeviceInfo dispositivo_info)
{
this.NomeDoDispositivo = dispositivo_info.DeviceName;
this.Sap = dispositivo_info.DeviceAddress.Sap;
}
public override string ToString()
{
return this.NomeDoDispositivo;
}
}
}
|
Esta classe cria dois atributos: NomeDoDispositivo e Sap sendo possível atribuir um valor à elas e/ou pegar este valor.
Também é criado um método que sobescreve (override) o método ToString() para retornar o nome do dispositivo.
Agora você deve criar os controles na tela.
Como este é um exemplo, não alterei os nomes dos controles, somente os adicionei.
-Button (button1)
-ListBox (listBox1)
-ProgressBar (progressBar1)
O código abaixo deve ser inserido no arquivo .cs da sua tela.
Neste código temos 4 procedimentos:
- Windows1
A função principal, a qual fará a chamada das funções.
- bg_RunWorkerCompleted
Irá inserir a lista de Dispositivos em nosso listBox ao fim do processo.
- bg_DoWork
Cria uma lista de Dispositivos a qual será “populada” com as suas informações (em nosso exemplo, NomeDoDispositivo e Sap).
- button1_Click
Este é o evento de clique do botão que irá “Buscar os dispositivos”, tornando visível a barra de progresso e chamando a função RunWorkerAsync.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.ComponentModel;
namespace BluetoothClient
{
///
/// Interaction logic for Window1.xaml
///
public partial class Window1 : Window
{
BackgroundWorker bg;
public Window1()
{
InitializeComponent();
bg = new BackgroundWorker();
bg.DoWork += new DoWorkEventHandler(bg_DoWork);
bg.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bg_RunWorkerCompleted);
}
void bg_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
listBox1.ItemsSource = (List<Dispositivo>)e.Result;
progressBar1.Visibility = Visibility.Hidden;
}
void bg_DoWork(object sender, DoWorkEventArgs e)
{
List<Dispositivo> devices = new List<Dispositivo>();
InTheHand.Net.Sockets.BluetoothClient bc = newInTheHand.Net.Sockets.BluetoothClient();
InTheHand.Net.Sockets.BluetoothDeviceInfo[] array = bc.DiscoverDevices();
int count = array.Length;
for (int i = 0; i < count; i++)
{
Dispositivo device = new Dispositivo(array[i]);
devices.Add(device);
}
e.Result = devices;
}
private void button1_Click(object sender, RoutedEventArgs e)
{
if (!bg.IsBusy)
{
progressBar1.Visibility = Visibility.Visible;
bg.RunWorkerAsync();
}
}
}
}
|
Bom, agora você poderá compilar seu projeto (F5) e ver o resultado.
Lembrando que você deverá ter um dispositivo Bluetooth na máquina onde for executado o software, caso contrário aparecerá um erro.
Após clicar no botão, aguarde até 20 segundos para que sejam mostrados na lista os dispositivos bluetooth ativos.