Como controlar uma conexão Bluetooth LE no Windows 10?

9

Eu preciso desenvolver um aplicativo que se comunique com um dispositivo via bluetooth de baixa energia. Depois que o aplicativo é conectado ao dispositivo via bluetooth, ele recebe e envia dados usando um serviço gatt.

O aplicativo precisa ser executado em um ambiente Windows 10. Até agora consegui desenvolver e testar o aplicativo usando as seguintes classes UWP:

DeviceWatcher

BluetoothLEDevice

Quando o dispositivo for descoberto e emparelhado, a comunicação será iniciada. O principal problema que tenho é que eu não sou capaz de controlar a conexão / desconexão com o dispositivo, ou seja, a conexão é iniciada automaticamente uma vez que o dispositivo tenha sido devidamente e previamente emparelhado, mas eu não encontrei nenhum connect () / disconnect ( ) método até agora.

Existe uma maneira de controlar a conexão com um dispositivo bluetooth LE específico? Existem outras APIs que permitem usar o bluetooth sem usar o framework UWP e que oferecem mais controle sobre o bluetooth?

    
por Nick 13.09.2016 в 14:24
fonte

1 resposta

2

Quando o dispositivo estiver emparelhado, sempre que ele se aproximar da máquina com Windows 10, ele tentará se conectar. Esse comportamento é definido no Bluetooth, já que o periférico sempre envia uma solicitação de conexão quando é ligado.

Existe uma tarefa em segundo plano do DeviceWatcher que você pode registrar para acionar seu aplicativo quando o dispositivo Bluetooth se conecta. Você pode encontrar um exemplo de código aqui .

Existe uma maneira de controlar a conexão com um dispositivo LE bluetooth específico?

Sim. Para iniciar uma conexão: quando você criar um BluetoothLEDevice via FromBluetoothAddressAsync ou FromIdAsync , o sistema tentará iniciar uma conexão com esse periférico, se ele já não tiver uma conexão.

// Connects to a Bluetooth device, given some string deviceId
BluetoothLEDevice bleDevice = await BluetoothLEDevice.FromIdAsync(deviceId);

Para descartar uma conexão, chame o método close em BluetoothLEDevice . Se o seu aplicativo for a única entidade com um identificador para o periférico, isso fará com que o sistema seja desconectado. No entanto, se outro aplicativo ou serviço do sistema tiver um identificador para o periférico, a conexão não será fechada.

// Will disconnect from the BTLE device, if you hold the only handle
bleDevice.close()

Estes são retirados da documentação do BluetoothLEDevice aqui.

Existem outras APIs?

Não há outras APIs incorporadas ao Windows 10 que ofereçam mais controle sobre o Bluetooth. As APIs UWP oferecem o maior controle que o Windows 10 oferece atualmente. Você poderia usar uma pilha Bluetooth alternativa, mas essas teriam que ser instaladas separadamente e provavelmente quebrariam outro comportamento do Bluetooth no Windows 10.

    
por Carter 16.09.2016 / 01:07
fonte