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.
Caro Matheus, achei seu código bastante interessante. Se me permitisse, queria usá-lo em meu TCC ? Entretanto, não consegui entender como fazê-lo, pois sou novato em C#. Caso não se importe que use seu código, gostaria de saber se não poderia passar-me o project do mesmo. Agradeço e sucesso em suas postagens!
ResponderExcluirCaro Valmor,
ResponderExcluirPode ficar à vontade em usá-lo em seu TCC.