Odczytywanie surowych danych przez Bluetooth
Mam cyfrowe urządzenie interfejsu użytkownika, z którym próbuję połączyć się za pomocą 32feet.net, dzięki czemu mogę odczytywać z niego dane wejściowe i przetwarzać dane wyjściowe w mojej aplikacji. Nigdy wcześniej nie programowałem za pomocą bluetooth i uczę się, jak idę.
Mogę bez problemu podłączyć urządzenie do systemu Windows 7 przy użyciu stosu microsoft / broadcom. Mogę także odkryć urządzenie za pomocą 32feet.net, ale gdy próbuję się połączyć, pojawia się błąd. Upewniłem się, że mój stos był obsługiwany za pomocą BluetoothRadio.IsSupported Oto fragment kodu:
var client = new BluetoothClient();
var dlg = new SelectBluetoothDeviceDialog();
DialogResult result = dlg.ShowDialog(this);
if (result != DialogResult.OK)
{
return;
}
BluetoothDeviceInfo device = dlg.SelectedDevice;
BluetoothAddress addr = device.DeviceAddress;
Console.WriteLine(device.DeviceName);
Guid serviceClass = BluetoothService.HumanInterfaceDevice;
client.Connect(new BluetoothEndPoint(addr, serviceClass));
Ostatni wiersz powoduje następujący błąd: w systemie System.dll wystąpił wyjątek pierwszej szansy typu „System.Net.Sockets.SocketException”
Próbowałem też innych metod z client.Connect. Próbowałem użyć DiscoverDevices, aby uzyskać tablicę DeviceInfo i ręcznie wybrać urządzenie z tej tablicy i połączyć się z nią. Próbowałem ustawić serviceClass jako Empty, ponieważ to się pojawia, gdy używam DeviceInfo.ClassOfDevice.Service. Udało mi się połączyć urządzenie z oknami za pomocą DeviceInfo.SetServiceState (BluetoothService.HumanInterfaceDevice, true), ale nie można z niego pobrać strumienia.
Nawet jeśli mogę uzyskać strumień danych z urządzenia po jego podłączeniu w systemie Windows, byłoby dobrze. Moim celem jest proste odczytanie danych wejściowych z urządzenia, takich jak naciśnięcie przycisku.