我有一个数字人机接口设备,我正在尝试使用 32feet.net 连接它,这样我就可以从中读取输入数据并在我的应用程序中处理输出。我以前从未用蓝牙编程过,我边走边学。
我可以使用 microsoft/broadcom 堆栈将我的设备连接到 Windows 7 没问题。我也可以使用 32feet.net 发现该设备,但是当我尝试连接它时出现错误。我确保使用 BluetoothRadio.IsSupported 支持我的堆栈这是一个代码片段:
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));
最后一行导致以下错误: System.dll 中发生“System.Net.Sockets.SocketException”类型的第一次机会异常
我也用client.Connect尝试了其他一些方法。我尝试使用 DiscoverDevices 获取 DeviceInfo 数组并手动从该数组中选择设备并连接到它。我尝试将 serviceClass 设置为 Empty,因为这是在我使用 DeviceInfo.ClassOfDevice.Service 时出现的。我已经能够使用 DeviceInfo.SetServiceState(BluetoothService.HumanInterfaceDevice, true) 将设备连接到 Windows,但无法从中获取流。
即使我可以在设备连接到 Windows 后从设备获取数据流,那也没问题。我的目标很简单,就是能够像按下按钮一样读取设备的输入。