Właśnie rozpocząłem projekt, który wymagałby sparowania tabletu z systemem Windows 10 z innym urządzeniem Bluetooth.Parowanie Bluetooth (SSP) w systemie Windows 10 z 32feet.NET
Postanowiłem zacząć od prostej aplikacji formularzy okien, aby zapoznać się z procesem. Dodałem pakiet 32feet.NET NuGet do mojego rozwiązania i szybko odniosłem sukces przy wyszukiwaniu urządzeń i zapełnianiu listy.
client = new BluetoothClient();
devices = client.DiscoverDevices();
if (devices.Length > 0)
{
foreach (var device in devices)
{
lstBTDevices.Items.Add(device.DeviceName);
}
}
else
{
MessageBox.Show("Unable to detect any bluetooth devices");
}
Dodałem następnie obsługę zdarzeń, dzięki czemu mogłem wybrać wykryte urządzenie i spróbować sparować z nim.
private void LstBTDevices_SelectedIndexChanged(object sender, EventArgs e)
{
BluetoothDeviceInfo selectedDevice = devices[lstBTDevices.SelectedIndex];
if (MessageBox.Show(String.Format("Would you like to attempt to pair with {0}?", selectedDevice.DeviceName), "Pair Device", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
if (BluetoothSecurity.PairRequest(selectedDevice.DeviceAddress, "123456"))
{
MessageBox.Show("We paired!");
}
else
{
MessageBox.Show("Failed to pair!");
}
}
}
Na moim komputerze stacjonarnym z Windows7 tani adapter Bluetooth 2.0 powoduje to okienko, aby pojawić się na moim telefonie zainteresowanie wprowadzić kod PIN. Po wpisaniu "123456" parowanie zakończy się powodzeniem.
Jednak tutaj zaczyna się problem. Następnie biorę swoją aplikację i uruchamiam ją na moim tablecie z Windows10, a teraz, kiedy wybieram swój telefon, powoduje pojawienie się w moim telefonie wyskakującego 6-cyfrowego kodu PIN i wiadomości, która powinna pasować do tego, co jest wyświetlane na moim ekranie tabletu , z przyciskami parowania/anulowania jako opcjami. Naciśnięcie przycisku powoduje niepowodzenie.
Czy to coś, co robię źle? Sterownik nie obsługiwany przez 32feet.NET?
Każda rada byłaby mile widziana.
UPDATE: Komentarz od bare_metal pomógł mi dostać kawałek dalej
Dodałem obsługi zdarzeń BluetoothWin32Authentication i dodano przycisk do wszczęcia parowanie SSP:
EventHandler<BluetoothWin32AuthenticationEventArgs> authHandler = new EventHandler<BluetoothWin32AuthenticationEventArgs>(handleAuthRequests);
BluetoothWin32Authentication authenticator = new BluetoothWin32Authentication(authHandler);
private void btnPairSSP_Click(object sender, EventArgs e)
{
BluetoothDeviceInfo selectedDevice = devices[lstBTDevices.SelectedIndex];
if (MessageBox.Show(String.Format("Would you like to attempt to pair with {0}?", selectedDevice.DeviceName), "Pair Device", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
Task t = new Task(PairBluetoothTask);
t.Start();
}
}
private void PairBluetoothTask()
{
BluetoothDeviceInfo selectedDevice = devices[lstBTDevices.SelectedIndex];
if (BluetoothSecurity.PairRequest(selectedDevice.DeviceAddress, null))
{
MessageBox.Show("We paired!");
}
else
{
MessageBox.Show("Failed to pair!");
}
}
private void handleAuthRequests(object sender, BluetoothWin32AuthenticationEventArgs e)
{
switch (e.AuthenticationMethod)
{
case BluetoothAuthenticationMethod.Legacy:
MessageBox.Show("Legacy Authentication");
break;
case BluetoothAuthenticationMethod.OutOfBand:
MessageBox.Show("Out of Band Authentication");
break;
case BluetoothAuthenticationMethod.NumericComparison:
if(e.JustWorksNumericComparison == true)
{
MessageBox.Show("Just Works Numeric Comparison");
}
else
{
MessageBox.Show("Show User Numeric Comparison");
if (MessageBox.Show(e.NumberOrPasskeyAsString, "Pair Device", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
e.Confirm = true;
}
else
{
e.Confirm = false;
}
}
break;
case BluetoothAuthenticationMethod.PasskeyNotification:
MessageBox.Show("Passkey Notification");
break;
case BluetoothAuthenticationMethod.Passkey:
MessageBox.Show("Passkey");
break;
default:
MessageBox.Show("Event handled in some unknown way");
break;
}
}
Kiedy rozpocząć parowanie z mojego telefonu działa to dobrze, zdarzenie jest uruchamiane, okno komunikatu pojawia się i proces parowania się powiódł.
Jednak po zainicjowaniu parowania z tabletu procedura obsługi zdarzenia nigdy nie jest wyzwalana, więc parowanie nie powiedzie się.
Pierwsze parowanie z PINCODE nazywamy dziedzictwem parowanie i jeden z losowych 6 cyfrach jest Secure Simple Pairing. w SSP w celu uwierzytelnienia inicjatora i respondenta przycisk pary/akceptacji musi zostać naciśnięty po obu stronach. czy widzisz przycisk akceptacji/odrzucania również w Windows10? , jeśli tak, to czy akceptujesz z obu urządzeń ?, jak długo trzeba czekać na niepowodzenie parowania (20s)? –
Nie, nie widzę opcji akceptacji/odrzucania ani kodu PIN na tablecie z Windows10. Próbuję zmienić podejście i spojrzeć na obszar nazw Windows.Devices.Bluetooth zamiast na 32feet.NET. –
Mam również ten sam problem, każdą pomoc! –